Compare commits
15 Commits
Author | SHA1 | Date | |
---|---|---|---|
df18aba4b5 | |||
a3699f2869 | |||
017c0789ca | |||
6e6d056617 | |||
3f7f38ee17 | |||
5bfc72a602 | |||
ca8882962e | |||
df6bf2c681 | |||
310a683e14 | |||
3f275ebc08 | |||
01d469960e | |||
2ed701040a | |||
ca3bb38205 | |||
891d727fd4 | |||
e1424ea0fb |
3
dist/index.d.ts
vendored
3
dist/index.d.ts
vendored
@ -1,5 +1,6 @@
|
||||
export { Task, ITaskFunction } from './taskbuffer.classes.task';
|
||||
export { Taskchain } from './taskbuffer.classes.taskchain';
|
||||
export { Taskparallel } from './taskbuffer.classes.taskparallel';
|
||||
export { Taskspace } from './taskbuffer.classes.taskspace';
|
||||
export { TaskManager } from './taskbuffer.classes.taskmanager';
|
||||
export { TaskOnce } from './taskbuffer.classes.taskonce';
|
||||
import './taskbuffer.classes.helpers';
|
||||
|
8
dist/index.js
vendored
8
dist/index.js
vendored
@ -6,8 +6,10 @@ var taskbuffer_classes_taskchain_1 = require("./taskbuffer.classes.taskchain");
|
||||
exports.Taskchain = taskbuffer_classes_taskchain_1.Taskchain;
|
||||
var taskbuffer_classes_taskparallel_1 = require("./taskbuffer.classes.taskparallel");
|
||||
exports.Taskparallel = taskbuffer_classes_taskparallel_1.Taskparallel;
|
||||
var taskbuffer_classes_taskspace_1 = require("./taskbuffer.classes.taskspace");
|
||||
exports.Taskspace = taskbuffer_classes_taskspace_1.Taskspace;
|
||||
var taskbuffer_classes_taskmanager_1 = require("./taskbuffer.classes.taskmanager");
|
||||
exports.TaskManager = taskbuffer_classes_taskmanager_1.TaskManager;
|
||||
var taskbuffer_classes_taskonce_1 = require("./taskbuffer.classes.taskonce");
|
||||
exports.TaskOnce = taskbuffer_classes_taskonce_1.TaskOnce;
|
||||
// import for naming only
|
||||
require("./taskbuffer.classes.helpers");
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFFQUE0RDtBQUFwRCx5Q0FBQSxJQUFJLENBQUE7QUFDWiwrRUFBd0Q7QUFBaEQsbURBQUEsU0FBUyxDQUFBO0FBQ2pCLHFGQUE4RDtBQUF0RCx5REFBQSxZQUFZLENBQUE7QUFDcEIsK0VBQXdEO0FBQWhELG1EQUFBLFNBQVMsQ0FBQTtBQUVqQix5QkFBeUI7QUFDekIsd0NBQXFDIn0=
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFFQUErRDtBQUF0RCx5Q0FBQSxJQUFJLENBQUE7QUFDYiwrRUFBMEQ7QUFBakQsbURBQUEsU0FBUyxDQUFBO0FBQ2xCLHFGQUFnRTtBQUF2RCx5REFBQSxZQUFZLENBQUE7QUFDckIsbUZBQThEO0FBQXJELHVEQUFBLFdBQVcsQ0FBQTtBQUNwQiw2RUFBd0Q7QUFBL0MsaURBQUEsUUFBUSxDQUFBO0FBRWpCLHlCQUF5QjtBQUN6Qix3Q0FBcUMifQ==
|
2
dist/taskbuffer.classes.helpers.d.ts
vendored
2
dist/taskbuffer.classes.helpers.d.ts
vendored
@ -21,10 +21,8 @@ export declare class CycleCounter {
|
||||
export declare class BufferRunner {
|
||||
task: Task;
|
||||
bufferCounter: number;
|
||||
bufferMax: number;
|
||||
running: boolean;
|
||||
constructor(taskArg: Task);
|
||||
setBufferMax(bufferMaxArg: number): void;
|
||||
trigger(x: any): Promise<any>;
|
||||
private _run(x);
|
||||
}
|
||||
|
28
dist/taskbuffer.classes.helpers.js
vendored
28
dist/taskbuffer.classes.helpers.js
vendored
File diff suppressed because one or more lines are too long
25
dist/taskbuffer.classes.task.d.ts
vendored
25
dist/taskbuffer.classes.task.d.ts
vendored
@ -6,6 +6,8 @@ export declare class Task {
|
||||
name: string;
|
||||
taskFunction: ITaskFunction;
|
||||
buffered: boolean;
|
||||
bufferMax: number;
|
||||
execDelay: number;
|
||||
preTask: Task;
|
||||
afterTask: Task;
|
||||
running: boolean;
|
||||
@ -14,11 +16,34 @@ export declare class Task {
|
||||
idle: boolean;
|
||||
private _state;
|
||||
constructor(optionsArg: {
|
||||
/**
|
||||
* the task function to run, must return promise
|
||||
*/
|
||||
taskFunction: ITaskFunction;
|
||||
/**
|
||||
* any other task to run before
|
||||
*/
|
||||
preTask?: Task;
|
||||
/**
|
||||
* any other task to run after
|
||||
*/
|
||||
afterTask?: Task;
|
||||
/**
|
||||
* wether this task should run buffered
|
||||
*/
|
||||
buffered?: boolean;
|
||||
/**
|
||||
* the maximum buffer
|
||||
*/
|
||||
bufferMax?: number;
|
||||
/**
|
||||
* the execution delay, before the task is executed
|
||||
* only makes sense when running in buffered mode
|
||||
*/
|
||||
execDelay?: number;
|
||||
/**
|
||||
* the name of the task
|
||||
*/
|
||||
name?: string;
|
||||
});
|
||||
/**
|
||||
|
14
dist/taskbuffer.classes.task.js
vendored
14
dist/taskbuffer.classes.task.js
vendored
@ -10,14 +10,14 @@ class Task {
|
||||
this.cycleCounter = new helpers.CycleCounter(this);
|
||||
this.idle = true;
|
||||
this._state = 'ready';
|
||||
let options = optionsArg;
|
||||
this.taskFunction = optionsArg.taskFunction;
|
||||
this.preTask = options.preTask;
|
||||
this.afterTask = options.afterTask;
|
||||
this.preTask = optionsArg.preTask;
|
||||
this.afterTask = optionsArg.afterTask;
|
||||
this.idle = !this.running;
|
||||
this.buffered = options.buffered;
|
||||
this.bufferRunner.setBufferMax(options.bufferMax);
|
||||
this.name = options.name;
|
||||
this.buffered = optionsArg.buffered;
|
||||
this.bufferMax = optionsArg.bufferMax;
|
||||
this.execDelay = optionsArg.execDelay;
|
||||
this.name = optionsArg.name;
|
||||
}
|
||||
/**
|
||||
* trigger the task. Will trigger buffered if this.buffered is true
|
||||
@ -55,4 +55,4 @@ class Task {
|
||||
}
|
||||
}
|
||||
exports.Task = Task;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy90YXNrYnVmZmVyLmNsYXNzZXMudGFzay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGdEQUErQztBQUMvQyx3REFBdUQ7QUFNdkQ7SUFjRSxZQUFZLFVBT1g7UUFkRCx3QkFBd0I7UUFDeEIsWUFBTyxHQUFZLEtBQUssQ0FBQTtRQUN4QixpQkFBWSxHQUFHLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM3QyxpQkFBWSxHQUFHLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM3QyxTQUFJLEdBQVksSUFBSSxDQUFBO1FBQ1osV0FBTSxHQUFXLE9BQU8sQ0FBQTtRQVU5QixJQUFJLE9BQU8sR0FBRyxVQUFVLENBQUE7UUFDeEIsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFBO1FBQzNDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQTtRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUE7UUFDbEMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFBO1FBQ2hDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNqRCxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUE7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTyxDQUFFLENBQUU7UUFDVCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNsQixNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNoQyxDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxpQkFBaUIsQ0FBRSxDQUFFO1FBQ25CLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3hDLENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWUsQ0FBRSxDQUFFO1FBQ2pCLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUE7SUFDcEIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFFLFFBQWdCO1FBQ3pCLEVBQUUsQ0FBQyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxRQUFRLEdBQUcsbUJBQW1CLENBQUMsQ0FBQTtRQUN6RSxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBbkVELG9CQW1FQyJ9
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy90YXNrYnVmZmVyLmNsYXNzZXMudGFzay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGdEQUErQztBQUMvQyx3REFBdUQ7QUFNdkQ7SUFxQkUsWUFBWSxVQThCWDtRQXRDRCx3QkFBd0I7UUFDeEIsWUFBTyxHQUFZLEtBQUssQ0FBQTtRQUN4QixpQkFBWSxHQUFHLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUM3QyxpQkFBWSxHQUFHLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUU3QyxTQUFJLEdBQVksSUFBSSxDQUFBO1FBQ1osV0FBTSxHQUFXLE9BQU8sQ0FBQTtRQWlDOUIsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFBO1FBQzNDLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQTtRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUE7UUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7UUFDekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFBO1FBQ25DLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQTtRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUE7UUFDckMsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFBO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxDQUFFO1FBQ1IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDaEMsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNsQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLENBQUMsQ0FBRTtRQUNsQixNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlLENBQUMsQ0FBRTtRQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDckMsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFBO0lBQ3BCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxRQUFnQjtRQUN4QixFQUFFLENBQUMsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQTtRQUN4QixDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsUUFBUSxHQUFHLG1CQUFtQixDQUFDLENBQUE7UUFDekUsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWxHRCxvQkFrR0MifQ==
|
4
dist/taskbuffer.classes.taskchain.js
vendored
4
dist/taskbuffer.classes.taskchain.js
vendored
@ -1,4 +1,6 @@
|
||||
"use strict";
|
||||
// TaskChain chains tasks
|
||||
// and extends Task
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const plugins = require("./taskbuffer.plugins");
|
||||
const taskbuffer_classes_task_1 = require("./taskbuffer.classes.task");
|
||||
@ -48,4 +50,4 @@ class Taskchain extends taskbuffer_classes_task_1.Task {
|
||||
}
|
||||
}
|
||||
exports.Taskchain = Taskchain;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2tjaGFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3Rhc2tidWZmZXIuY2xhc3Nlcy50YXNrY2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxnREFBK0M7QUFDL0MsdUVBQWdEO0FBR2hELGVBQXVCLFNBQVEsOEJBQUk7SUFHakMsWUFBWSxVQU1YO1FBQ0MsSUFBSSxPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2hDO1lBQ0UsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixHQUFHLEVBQUUsS0FBSztTQUNYLEVBQ0QsVUFBVSxFQUNWO1lBQ0UsWUFBWSxFQUFFLENBQUMsQ0FBTTtnQkFDbkIsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQSxDQUFDLHVDQUF1QztnQkFDcEUsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFBLENBQUMsaURBQWlEO2dCQUNyRSxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7b0JBQ25CLEVBQUUsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBRSxXQUFXLENBQUUsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO3dCQUN6RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLGdCQUFnQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUUsV0FBVyxDQUFFLENBQUMsSUFBSSxDQUFDLENBQUE7d0JBQ3ZGLElBQUksQ0FBQyxTQUFTLENBQUUsV0FBVyxDQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzs2QkFDckMsSUFBSSxDQUFDLENBQUMsQ0FBQzs0QkFDTixPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFFLFdBQVcsQ0FBRSxDQUFDLElBQUksQ0FBQyxDQUFBOzRCQUN4RCxXQUFXLEVBQUUsQ0FBQTs0QkFDYixZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUE7d0JBQ2pCLENBQUMsQ0FBQyxDQUFBO29CQUNOLENBQUM7b0JBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxJQUFJLEdBQUcsMEJBQTBCLENBQUMsQ0FBQTt3QkFDN0UsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtvQkFDakIsQ0FBQztnQkFDSCxDQUFDLENBQUE7Z0JBQ0QsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO1lBQ3JCLENBQUM7U0FDRixDQUNGLENBQUE7UUFDRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUE7UUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQTtRQUN2QyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sQ0FBRSxPQUFhO1FBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzlCLENBQUM7SUFDRCxVQUFVLENBQUUsT0FBYTtRQUN2QixRQUFRO0lBQ1YsQ0FBQztJQUNELFNBQVM7UUFDUCxRQUFRO0lBQ1YsQ0FBQztDQUNGO0FBdkRELDhCQXVEQyJ9
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2tjaGFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3Rhc2tidWZmZXIuY2xhc3Nlcy50YXNrY2hhaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHlCQUF5QjtBQUN6QixtQkFBbUI7O0FBRW5CLGdEQUErQztBQUMvQyx1RUFBZ0Q7QUFHaEQsZUFBdUIsU0FBUSw4QkFBSTtJQUdqQyxZQUFZLFVBTVg7UUFDQyxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDaEM7WUFDRSxJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLEdBQUcsRUFBRSxLQUFLO1NBQ1gsRUFDRCxVQUFVLEVBQ1Y7WUFDRSxZQUFZLEVBQUUsQ0FBQyxDQUFNO2dCQUNuQixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBLENBQUMsdUNBQXVDO2dCQUNwRSxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUEsQ0FBQyxpREFBaUQ7Z0JBQ3JFLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztvQkFDbkIsRUFBRSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFFLFdBQVcsQ0FBRSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7d0JBQ3pELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBRSxXQUFXLENBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQTt3QkFDdkYsSUFBSSxDQUFDLFNBQVMsQ0FBRSxXQUFXLENBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDOzZCQUNyQyxJQUFJLENBQUMsQ0FBQyxDQUFDOzRCQUNOLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUUsV0FBVyxDQUFFLENBQUMsSUFBSSxDQUFDLENBQUE7NEJBQ3hELFdBQVcsRUFBRSxDQUFBOzRCQUNiLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQTt3QkFDakIsQ0FBQyxDQUFDLENBQUE7b0JBQ04sQ0FBQztvQkFBQyxJQUFJLENBQUMsQ0FBQzt3QkFDTixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRywwQkFBMEIsQ0FBQyxDQUFBO3dCQUM3RSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO29CQUNqQixDQUFDO2dCQUNILENBQUMsQ0FBQTtnQkFDRCxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ2YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7WUFDckIsQ0FBQztTQUNGLENBQ0YsQ0FBQTtRQUNELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNkLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQTtRQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFBO1FBQ3ZDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxDQUFFLE9BQWE7UUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDOUIsQ0FBQztJQUNELFVBQVUsQ0FBRSxPQUFhO1FBQ3ZCLFFBQVE7SUFDVixDQUFDO0lBQ0QsU0FBUztRQUNQLFFBQVE7SUFDVixDQUFDO0NBQ0Y7QUF2REQsOEJBdURDIn0=
|
44
dist/taskbuffer.classes.taskmanager.d.ts
vendored
44
dist/taskbuffer.classes.taskmanager.d.ts
vendored
@ -0,0 +1,44 @@
|
||||
import { Task } from './taskbuffer.classes.task';
|
||||
import { Objectmap } from 'lik';
|
||||
export declare class TaskManager {
|
||||
taskMap: Objectmap<Task>;
|
||||
private cronJobMap;
|
||||
constructor();
|
||||
/**
|
||||
* checks if a task is already present
|
||||
* @param taskNameArg
|
||||
*/
|
||||
getTaskByName(taskNameArg: any): Task;
|
||||
/**
|
||||
* adds a Task to the TaskManager
|
||||
* @param taskArg
|
||||
*/
|
||||
addTask(taskArg: Task): void;
|
||||
/**
|
||||
* adds and schedules a task at once
|
||||
* @param taskArg
|
||||
* @param cronStringArg
|
||||
*/
|
||||
addAndScheduleTask(taskArg: Task, cronStringArg: string): void;
|
||||
/**
|
||||
* triggers a task in the TaskManagerByName
|
||||
* @param taskNameArg
|
||||
*/
|
||||
triggerTaskByName(taskNameArg: string): Promise<any>;
|
||||
/**
|
||||
* schedules the task by name
|
||||
* @param taskNameArg
|
||||
*/
|
||||
scheduleTaskByName(taskNameArg: string, cronStringArg: string): void;
|
||||
descheduleTaskByName(taskNameArg: string): void;
|
||||
/**
|
||||
* returns all schedules of a specific task
|
||||
* @param taskNameArg
|
||||
*/
|
||||
getSchedulesForTaskName(taskNameArg: string): void;
|
||||
}
|
||||
export interface ICronJob {
|
||||
cronString: string;
|
||||
taskNameArg: string;
|
||||
job: any;
|
||||
}
|
||||
|
82
dist/taskbuffer.classes.taskmanager.js
vendored
82
dist/taskbuffer.classes.taskmanager.js
vendored
@ -1,3 +1,83 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2ttYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdGFza2J1ZmZlci5jbGFzc2VzLnRhc2ttYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|
||||
const plugins = require("./taskbuffer.plugins");
|
||||
class TaskManager {
|
||||
constructor() {
|
||||
this.taskMap = new plugins.lik.Objectmap();
|
||||
this.cronJobMap = new plugins.lik.Objectmap();
|
||||
// nothing here
|
||||
}
|
||||
/**
|
||||
* checks if a task is already present
|
||||
* @param taskNameArg
|
||||
*/
|
||||
getTaskByName(taskNameArg) {
|
||||
return this.taskMap.find((itemArg) => {
|
||||
return itemArg.name === taskNameArg;
|
||||
});
|
||||
}
|
||||
/**
|
||||
* adds a Task to the TaskManager
|
||||
* @param taskArg
|
||||
*/
|
||||
addTask(taskArg) {
|
||||
if (!taskArg.name) {
|
||||
throw new Error('taskArg needs a name to be added to taskManager');
|
||||
}
|
||||
this.taskMap.add(taskArg);
|
||||
}
|
||||
/**
|
||||
* adds and schedules a task at once
|
||||
* @param taskArg
|
||||
* @param cronStringArg
|
||||
*/
|
||||
addAndScheduleTask(taskArg, cronStringArg) {
|
||||
this.addTask(taskArg);
|
||||
let taskName = taskArg.name;
|
||||
this.scheduleTaskByName(taskName, cronStringArg);
|
||||
}
|
||||
/**
|
||||
* triggers a task in the TaskManagerByName
|
||||
* @param taskNameArg
|
||||
*/
|
||||
triggerTaskByName(taskNameArg) {
|
||||
let taskToTrigger = this.getTaskByName(taskNameArg);
|
||||
if (!taskToTrigger) {
|
||||
throw new Error(`There is no task with the name of ${taskNameArg}`);
|
||||
}
|
||||
return taskToTrigger.trigger();
|
||||
}
|
||||
/**
|
||||
* schedules the task by name
|
||||
* @param taskNameArg
|
||||
*/
|
||||
scheduleTaskByName(taskNameArg, cronStringArg) {
|
||||
let taskToSchedule = this.getTaskByName(taskNameArg);
|
||||
let job = new plugins.cron.CronJob({
|
||||
cronTime: cronStringArg,
|
||||
onTick: () => {
|
||||
this.triggerTaskByName(taskNameArg);
|
||||
},
|
||||
start: true
|
||||
});
|
||||
this.cronJobMap.add({
|
||||
taskNameArg: taskToSchedule.name,
|
||||
cronString: cronStringArg,
|
||||
job: job
|
||||
});
|
||||
}
|
||||
descheduleTaskByName(taskNameArg) {
|
||||
let descheduledCron = this.cronJobMap.findOneAndRemove((itemArg) => {
|
||||
return itemArg.taskNameArg === taskNameArg;
|
||||
});
|
||||
descheduledCron.job.stop();
|
||||
}
|
||||
/**
|
||||
* returns all schedules of a specific task
|
||||
* @param taskNameArg
|
||||
*/
|
||||
getSchedulesForTaskName(taskNameArg) {
|
||||
}
|
||||
}
|
||||
exports.TaskManager = TaskManager;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2ttYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdGFza2J1ZmZlci5jbGFzc2VzLnRhc2ttYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsZ0RBQStDO0FBTS9DO0lBR0U7UUFGQSxZQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBUSxDQUFBO1FBQ25DLGVBQVUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFZLENBQUE7UUFFeEQsZUFBZTtJQUNqQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYSxDQUFFLFdBQVc7UUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTztZQUMvQixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUE7UUFDckMsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsT0FBTyxDQUFFLE9BQWE7UUFDcEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNsQixNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUE7UUFDcEUsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzNCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsa0JBQWtCLENBQUUsT0FBYSxFQUFFLGFBQXFCO1FBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDckIsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQTtRQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFBO0lBQ2xELENBQUM7SUFFRDs7O09BR0c7SUFDSCxpQkFBaUIsQ0FBRSxXQUFtQjtRQUNwQyxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ25ELEVBQUUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxXQUFXLEVBQUUsQ0FBQyxDQUFBO1FBQ3JFLENBQUM7UUFDRCxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxrQkFBa0IsQ0FBRSxXQUFtQixFQUFFLGFBQXFCO1FBQzVELElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDcEQsSUFBSSxHQUFHLEdBQUcsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNqQyxRQUFRLEVBQUUsYUFBYTtZQUN2QixNQUFNLEVBQUU7Z0JBQ04sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBQ3JDLENBQUM7WUFDRCxLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1lBQ2xCLFdBQVcsRUFBRSxjQUFjLENBQUMsSUFBSTtZQUNoQyxVQUFVLEVBQUUsYUFBYTtZQUN6QixHQUFHLEVBQUUsR0FBRztTQUNULENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxvQkFBb0IsQ0FBRSxXQUFtQjtRQUN2QyxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUMsT0FBTztZQUM3RCxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsS0FBSyxXQUFXLENBQUE7UUFDNUMsQ0FBQyxDQUFDLENBQUE7UUFDRixlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzVCLENBQUM7SUFDRDs7O09BR0c7SUFDSCx1QkFBdUIsQ0FBRSxXQUFtQjtJQUU1QyxDQUFDO0NBQ0Y7QUFwRkQsa0NBb0ZDIn0=
|
11
dist/taskbuffer.classes.taskonce.d.ts
vendored
Normal file
11
dist/taskbuffer.classes.taskonce.d.ts
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
import { Task, ITaskFunction } from './taskbuffer.classes.task';
|
||||
/**
|
||||
* TaskOnce is run exactly once, no matter how often it is triggered
|
||||
*/
|
||||
export declare class TaskOnce extends Task {
|
||||
hasTriggered: boolean;
|
||||
constructor(optionsArg: {
|
||||
name?: string;
|
||||
taskFunction: ITaskFunction;
|
||||
});
|
||||
}
|
30
dist/taskbuffer.classes.taskonce.js
vendored
Normal file
30
dist/taskbuffer.classes.taskonce.js
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
"use strict";
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const taskbuffer_classes_task_1 = require("./taskbuffer.classes.task");
|
||||
/**
|
||||
* TaskOnce is run exactly once, no matter how often it is triggered
|
||||
*/
|
||||
class TaskOnce extends taskbuffer_classes_task_1.Task {
|
||||
constructor(optionsArg) {
|
||||
super({
|
||||
name: optionsArg.name,
|
||||
taskFunction: () => __awaiter(this, void 0, void 0, function* () {
|
||||
if (!this.hasTriggered) {
|
||||
this.hasTriggered = true;
|
||||
yield optionsArg.taskFunction();
|
||||
}
|
||||
})
|
||||
});
|
||||
this.hasTriggered = false;
|
||||
}
|
||||
}
|
||||
exports.TaskOnce = TaskOnce;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2tvbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdGFza2J1ZmZlci5jbGFzc2VzLnRhc2tvbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFFQSx1RUFBK0Q7QUFFL0Q7O0dBRUc7QUFDSCxjQUFzQixTQUFRLDhCQUFJO0lBRWhDLFlBQWEsVUFHWjtRQUNDLEtBQUssQ0FBQztZQUNKLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtZQUNyQixZQUFZLEVBQUU7Z0JBQ1osRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztvQkFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUE7b0JBQ3hCLE1BQU0sVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFBO2dCQUNqQyxDQUFDO1lBQ0gsQ0FBQyxDQUFBO1NBQ0YsQ0FBQyxDQUFBO1FBYkosaUJBQVksR0FBWSxLQUFLLENBQUE7SUFjN0IsQ0FBQztDQUNGO0FBaEJELDRCQWdCQyJ9
|
2
dist/taskbuffer.classes.taskparallel.d.ts
vendored
2
dist/taskbuffer.classes.taskparallel.d.ts
vendored
@ -1,4 +1,4 @@
|
||||
import { Task } from "./taskbuffer.classes.task";
|
||||
import { Task } from './taskbuffer.classes.task';
|
||||
export declare class Taskparallel extends Task {
|
||||
taskArray: Task[];
|
||||
constructor(optionsArg: {
|
||||
|
2
dist/taskbuffer.classes.taskparallel.js
vendored
2
dist/taskbuffer.classes.taskparallel.js
vendored
@ -21,4 +21,4 @@ class Taskparallel extends taskbuffer_classes_task_1.Task {
|
||||
}
|
||||
}
|
||||
exports.Taskparallel = Taskparallel;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2twYXJhbGxlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3Rhc2tidWZmZXIuY2xhc3Nlcy50YXNrcGFyYWxsZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxnREFBK0M7QUFFL0MsdUVBQWdEO0FBRWhELGtCQUEwQixTQUFRLDhCQUFJO0lBRWxDLFlBQVksVUFFWDtRQUNHLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUM5QixVQUFVLEVBQ1Y7WUFDSSxZQUFZLEVBQUU7Z0JBQ1YsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxZQUFZLEdBQW1CLEVBQUUsQ0FBQyxDQUFDLDJEQUEyRDtnQkFDbEcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxPQUFPO29CQUNwQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUN6QyxDQUFDLENBQUMsQ0FBQTtnQkFDRixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQztxQkFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDeEIsQ0FBQztTQUNKLENBQ0osQ0FBQztRQUNGLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQztJQUMxQyxDQUFDO0NBQ0o7QUF2QkQsb0NBdUJDIn0=
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2twYXJhbGxlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3Rhc2tidWZmZXIuY2xhc3Nlcy50YXNrcGFyYWxsZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxnREFBK0M7QUFFL0MsdUVBQWdEO0FBRWhELGtCQUEwQixTQUFRLDhCQUFJO0lBRXBDLFlBQWEsVUFFWjtRQUNDLElBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNoQyxVQUFVLEVBQ1Y7WUFDRSxZQUFZLEVBQUU7Z0JBQ1osSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtnQkFDNUIsSUFBSSxZQUFZLEdBQW1CLEVBQUUsQ0FBQSxDQUFDLDJEQUEyRDtnQkFDakcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxPQUFPO29CQUN0QyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO2dCQUN0QyxDQUFDLENBQUMsQ0FBQTtnQkFDRixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQztxQkFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtnQkFDckIsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7WUFDckIsQ0FBQztTQUNGLENBQ0YsQ0FBQTtRQUNELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNkLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQTtJQUN2QyxDQUFDO0NBQ0Y7QUF2QkQsb0NBdUJDIn0=
|
2
dist/taskbuffer.classes.taskspace.d.ts
vendored
2
dist/taskbuffer.classes.taskspace.d.ts
vendored
@ -1,2 +0,0 @@
|
||||
export declare class Taskspace {
|
||||
}
|
6
dist/taskbuffer.classes.taskspace.js
vendored
6
dist/taskbuffer.classes.taskspace.js
vendored
@ -1,6 +0,0 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
class Taskspace {
|
||||
}
|
||||
exports.Taskspace = Taskspace;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2tzcGFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3Rhc2tidWZmZXIuY2xhc3Nlcy50YXNrc3BhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQTtDQUVDO0FBRkQsOEJBRUMifQ==
|
5
dist/taskbuffer.plugins.d.ts
vendored
5
dist/taskbuffer.plugins.d.ts
vendored
@ -1,6 +1,9 @@
|
||||
import 'typings-global';
|
||||
import * as beautylog from 'beautylog';
|
||||
declare let cron: any;
|
||||
import * as lik from 'lik';
|
||||
import * as lodash from 'lodash';
|
||||
import * as rxjs from 'rxjs';
|
||||
import * as q from 'smartq';
|
||||
export { beautylog, lodash, rxjs, q };
|
||||
import * as smartdelay from 'smartdelay';
|
||||
export { beautylog, cron, lik, lodash, rxjs, q, smartdelay };
|
||||
|
8
dist/taskbuffer.plugins.js
vendored
8
dist/taskbuffer.plugins.js
vendored
@ -3,10 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||
require("typings-global");
|
||||
const beautylog = require("beautylog");
|
||||
exports.beautylog = beautylog;
|
||||
let cron = require('cron');
|
||||
exports.cron = cron;
|
||||
const lik = require("lik");
|
||||
exports.lik = lik;
|
||||
const lodash = require("lodash");
|
||||
exports.lodash = lodash;
|
||||
const rxjs = require("rxjs");
|
||||
exports.rxjs = rxjs;
|
||||
const q = require("smartq");
|
||||
exports.q = q;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdGFza2J1ZmZlci5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMEJBQXVCO0FBQ3ZCLHVDQUFzQztBQU1sQyw4QkFBUztBQUxiLGlDQUFnQztBQU01Qix3QkFBTTtBQUxWLDZCQUE0QjtBQU14QixvQkFBSTtBQUxSLDRCQUEyQjtBQU12QixjQUFDIn0=
|
||||
const smartdelay = require("smartdelay");
|
||||
exports.smartdelay = smartdelay;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvdGFza2J1ZmZlci5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMEJBQXVCO0FBQ3ZCLHVDQUFzQztBQVNsQyw4QkFBUztBQVJiLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQVN0QixvQkFBSTtBQVJSLDJCQUEwQjtBQVN0QixrQkFBRztBQVJQLGlDQUFnQztBQVM1Qix3QkFBTTtBQVJWLDZCQUE0QjtBQVN4QixvQkFBSTtBQVJSLDRCQUEyQjtBQVN2QixjQUFDO0FBUkwseUNBQXdDO0FBU3BDLGdDQUFVIn0=
|
79
docs/index.md
Normal file
79
docs/index.md
Normal file
@ -0,0 +1,79 @@
|
||||
# taskbuffer
|
||||
flexible task management. TypeScript ready!
|
||||
|
||||
## Availabililty
|
||||
[](https://www.npmjs.com/package/taskbuffer)
|
||||
[](https://GitLab.com/pushrocks/taskbuffer)
|
||||
[](https://github.com/pushrocks/taskbuffer)
|
||||
[](https://pushrocks.gitlab.io/taskbuffer/)
|
||||
|
||||
## Status for master
|
||||
[](https://GitLab.com/pushrocks/taskbuffer/commits/master)
|
||||
[](https://GitLab.com/pushrocks/taskbuffer/commits/master)
|
||||
[](https://www.npmjs.com/package/taskbuffer)
|
||||
[](https://david-dm.org/pushrocks/taskbuffer)
|
||||
[](https://www.bithound.io/github/pushrocks/taskbuffer/master/dependencies/npm)
|
||||
[](https://www.bithound.io/github/pushrocks/taskbuffer)
|
||||
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
||||
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
||||
[](http://standardjs.com/)
|
||||
|
||||
## Install
|
||||
|
||||
```sh
|
||||
npm install taskbuffer --save
|
||||
```
|
||||
|
||||
## Concepts
|
||||
|
||||
### class `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.
|
||||
|
||||
### class `TaskChain`
|
||||
* 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)
|
||||
* that means that tasks can rely on each other and
|
||||
|
||||
### class `TaskParallel`
|
||||
* TaskParallel extends Task.
|
||||
* like TaskChain, however **tasks run in parallel**
|
||||
* Tasks cannot rely on each other.
|
||||
|
||||
### Usage
|
||||
We highly recommend TypeScript as this module supports **TypeScript intellisense**.
|
||||
```javascript
|
||||
import * as taskbuffer from "taskbuffer";
|
||||
|
||||
myTask = new taskbuffer.Task({
|
||||
preTask: someOtherTask // optional, don't worry loops are prevented
|
||||
afterTask: someOtherTask // optional, don't worry loops are prevented
|
||||
name:"myTask1",
|
||||
buffered: true, // optional
|
||||
bufferMax: 3, // optional, call qeues greater than this are truncated
|
||||
execDelay: 1000, // optional, time in ms to wait before executing task call
|
||||
taskFunction:() => {
|
||||
// do some stuff and return promise
|
||||
// pass on any data through promise resolution
|
||||
// Use TypeScript for better understanding and code completion
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
For further information read the linked docs at the top of this README.
|
||||
|
||||
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
|
||||
|
||||
[](https://push.rocks)
|
@ -1,6 +1,9 @@
|
||||
{
|
||||
"npmts":{
|
||||
"mode":"default"
|
||||
"mode":"default",
|
||||
"testConfig": {
|
||||
"parallel": false
|
||||
}
|
||||
},
|
||||
"npmci": {
|
||||
"globalNpmTools": [
|
||||
|
14
package.json
14
package.json
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "taskbuffer",
|
||||
"version": "1.0.15",
|
||||
"version": "1.0.22",
|
||||
"description": "flexible task management. TypeScript ready!",
|
||||
"main": "dist/index.js",
|
||||
"typings": "dist/index.d.ts",
|
||||
@ -25,14 +25,18 @@
|
||||
},
|
||||
"homepage": "https://gitlab.com/pushrocks/taskbuffer#readme",
|
||||
"dependencies": {
|
||||
"@types/cron": "^1.2.1",
|
||||
"@types/lodash": "4.x.x",
|
||||
"beautylog": "^6.1.10",
|
||||
"cron": "^1.2.1",
|
||||
"lik": "^1.0.38",
|
||||
"lodash": "^4.17.4",
|
||||
"rxjs": "^5.4.0",
|
||||
"smartq": "^1.1.1",
|
||||
"typings-global": "^1.0.17"
|
||||
"rxjs": "^5.4.2",
|
||||
"smartdelay": "^1.0.3",
|
||||
"smartq": "^1.1.6",
|
||||
"typings-global": "^1.0.19"
|
||||
},
|
||||
"devDependencies": {
|
||||
"tapbundle": "^1.0.14"
|
||||
"tapbundle": "^1.1.0"
|
||||
}
|
||||
}
|
||||
|
29
readme.md
Normal file
29
readme.md
Normal file
@ -0,0 +1,29 @@
|
||||
# taskbuffer
|
||||
flexible task management. TypeScript ready!
|
||||
|
||||
## Availabililty
|
||||
[](https://www.npmjs.com/package/taskbuffer)
|
||||
[](https://GitLab.com/pushrocks/taskbuffer)
|
||||
[](https://github.com/pushrocks/taskbuffer)
|
||||
[](https://pushrocks.gitlab.io/taskbuffer/)
|
||||
|
||||
## Status for master
|
||||
[](https://GitLab.com/pushrocks/taskbuffer/commits/master)
|
||||
[](https://GitLab.com/pushrocks/taskbuffer/commits/master)
|
||||
[](https://www.npmjs.com/package/taskbuffer)
|
||||
[](https://david-dm.org/pushrocks/taskbuffer)
|
||||
[](https://www.bithound.io/github/pushrocks/taskbuffer/master/dependencies/npm)
|
||||
[](https://www.bithound.io/github/pushrocks/taskbuffer)
|
||||
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
||||
[](https://nodejs.org/dist/latest-v6.x/docs/api/)
|
||||
[](http://standardjs.com/)
|
||||
|
||||
## Usage
|
||||
Use TypeScript for best in class instellisense.
|
||||
|
||||
For further information read the linked docs at the top of this README.
|
||||
|
||||
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
|
||||
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
|
||||
|
||||
[](https://push.rocks)
|
108
test/test.1.task.ts
Normal file
108
test/test.1.task.ts
Normal file
@ -0,0 +1,108 @@
|
||||
import { expect, tap } from 'tapbundle'
|
||||
import taskbuffer = require('../dist/index')
|
||||
|
||||
import * as q from 'smartq'
|
||||
import * as smartdelay from 'smartdelay'
|
||||
|
||||
// setup some testData to work with
|
||||
let testTask: taskbuffer.Task
|
||||
|
||||
let testPreTask = new taskbuffer.Task({
|
||||
taskFunction: function () {
|
||||
let done = q.defer()
|
||||
console.log('preTask executed')
|
||||
done.resolve()
|
||||
return done.promise
|
||||
},
|
||||
preTask: testTask
|
||||
})
|
||||
|
||||
// some more tasks to test with
|
||||
let task1Counter = 0 // how often task 1 is being executed
|
||||
let task1 = new taskbuffer.Task({
|
||||
name: 'Task 1',
|
||||
taskFunction: () => {
|
||||
let done = q.defer()
|
||||
console.log('Task1 started')
|
||||
setTimeout(() => {
|
||||
task1Counter++
|
||||
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
|
||||
}
|
||||
})
|
||||
|
||||
tap.test('new Task() should return a new task', async () => {
|
||||
testTask = new taskbuffer.Task({ taskFunction: async () => { console.log('executed twice') }, preTask: testPreTask })
|
||||
})
|
||||
|
||||
tap.test('expect testTask to be an instance of Task', async () => {
|
||||
expect(testTask).to.be.instanceof(taskbuffer.Task)
|
||||
})
|
||||
|
||||
tap.test('expect testTask.idle is true', async () => {
|
||||
if (!testTask.idle) {
|
||||
throw new Error('testTask.idle is not true')
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
tap.test('testTask.running should be of type boolean and initially false', async () => {
|
||||
expect(testTask.running).to.be.a('boolean')
|
||||
// tslint:disable-next-line:no-unused-expression
|
||||
expect(testTask.running).to.be.false
|
||||
})
|
||||
|
||||
tap.test('testTask.trigger() should return Promise', async () => {
|
||||
expect(testTask.trigger()).to.be.instanceof(Promise)
|
||||
})
|
||||
|
||||
tap.test('testTask.trigger() returned Promise should be fullfilled', async () => {
|
||||
await testTask.trigger()
|
||||
})
|
||||
|
||||
tap.test('expect to run a task without pre and afterTask errorless', async () => {
|
||||
let localTestTask = new taskbuffer.Task({ taskFunction: async () => { console.log('only once') } })
|
||||
await localTestTask.trigger()
|
||||
})
|
||||
|
||||
tap.test('expect task to run in buffered mode', async () => {
|
||||
let localTestTask = new taskbuffer.Task({
|
||||
taskFunction: async () => { await smartdelay.delayFor(3000) },
|
||||
buffered: true,
|
||||
bufferMax: 2
|
||||
})
|
||||
localTestTask.trigger()
|
||||
localTestTask.trigger()
|
||||
localTestTask.trigger()
|
||||
await localTestTask.trigger()
|
||||
})
|
||||
|
||||
tap.start()
|
48
test/test.2.taskchain.ts
Normal file
48
test/test.2.taskchain.ts
Normal file
@ -0,0 +1,48 @@
|
||||
import { expect, tap } from 'tapbundle'
|
||||
import taskbuffer = require('../dist/index')
|
||||
|
||||
import * as smartq from 'smartq'
|
||||
import * as smartdelay from 'smartdelay'
|
||||
|
||||
let task1Executed = false
|
||||
let task1 = new taskbuffer.Task({
|
||||
taskFunction: async () => {
|
||||
await smartdelay.delayFor(2000)
|
||||
task1Executed = true
|
||||
}
|
||||
})
|
||||
|
||||
let task2Executed = false
|
||||
let task2 = new taskbuffer.Task({
|
||||
taskFunction: async () => {
|
||||
await smartdelay.delayFor(2000)
|
||||
task2Executed = true
|
||||
}
|
||||
})
|
||||
|
||||
let task3Executed = false
|
||||
let task3 = new taskbuffer.Task({
|
||||
taskFunction: async () => {
|
||||
await smartdelay.delayFor(2000)
|
||||
task3Executed = true
|
||||
}
|
||||
})
|
||||
|
||||
tap.test('expect run tasks in sequence', async () => {
|
||||
let testTaskchain = new taskbuffer.Taskchain({
|
||||
name: 'Taskchain1',
|
||||
taskArray: [ task1, task2, task3 ]
|
||||
})
|
||||
let testPromise = testTaskchain.trigger()
|
||||
await smartdelay.delayFor(2100)
|
||||
// tslint:disable-next-line:no-unused-expression
|
||||
expect(task1Executed).to.be.true
|
||||
// tslint:disable-next-line:no-unused-expression
|
||||
expect(task2Executed).to.be.false
|
||||
await smartdelay.delayFor(2100)
|
||||
// tslint:disable-next-line:no-unused-expression
|
||||
expect(task2Executed).to.be.true
|
||||
await testPromise
|
||||
})
|
||||
|
||||
tap.start()
|
38
test/test.3.taskparallel.ts
Normal file
38
test/test.3.taskparallel.ts
Normal file
@ -0,0 +1,38 @@
|
||||
import { expect, tap } from 'tapbundle'
|
||||
import taskbuffer = require('../dist/index')
|
||||
|
||||
import * as smartq from 'smartq'
|
||||
import * as smartdelay from 'smartdelay'
|
||||
|
||||
let task1Executed = false
|
||||
let task1 = new taskbuffer.Task({
|
||||
taskFunction: async () => {
|
||||
await smartdelay.delayFor(2000)
|
||||
task1Executed = true
|
||||
}
|
||||
})
|
||||
|
||||
let task2Executed = false
|
||||
let task2 = new taskbuffer.Task({
|
||||
taskFunction: async () => {
|
||||
await smartdelay.delayFor(2000)
|
||||
task2Executed = true
|
||||
}
|
||||
})
|
||||
|
||||
let task3Executed = false
|
||||
let task3 = new taskbuffer.Task({
|
||||
taskFunction: async () => {
|
||||
await smartdelay.delayFor(2000)
|
||||
task3Executed = true
|
||||
}
|
||||
})
|
||||
|
||||
tap.test('expect run in Parallel', async () => {
|
||||
let testTaskparallel = new taskbuffer.Taskparallel({
|
||||
taskArray: [ task1, task2, task3 ]
|
||||
})
|
||||
await testTaskparallel.trigger()
|
||||
})
|
||||
|
||||
tap.start()
|
40
test/test.4.taskmanager.ts
Normal file
40
test/test.4.taskmanager.ts
Normal file
@ -0,0 +1,40 @@
|
||||
import { expect, tap } from 'tapbundle'
|
||||
import taskbuffer = require('../dist/index')
|
||||
|
||||
import * as smartq from 'smartq'
|
||||
import * as smartdelay from 'smartdelay'
|
||||
|
||||
let myTaskManager: taskbuffer.TaskManager
|
||||
let taskRunCounter = 0
|
||||
let taskDone = smartq.defer()
|
||||
|
||||
tap.test('should create an instance of TaskManager', async () => {
|
||||
myTaskManager = new taskbuffer.TaskManager()
|
||||
expect(myTaskManager).to.be.instanceof(taskbuffer.TaskManager)
|
||||
})
|
||||
|
||||
tap.test('should run the task as expected', async () => {
|
||||
let referenceBoolean = false
|
||||
myTaskManager.addTask(new taskbuffer.Task({
|
||||
name: 'myTask',
|
||||
taskFunction: async () => {
|
||||
console.log('Task executed!')
|
||||
referenceBoolean = true
|
||||
taskRunCounter++
|
||||
if (taskRunCounter === 10) {
|
||||
taskDone.resolve()
|
||||
}
|
||||
}
|
||||
}))
|
||||
await myTaskManager.triggerTaskByName('myTask')
|
||||
// tslint:disable-next-line:no-unused-expression
|
||||
expect(referenceBoolean).to.be.true
|
||||
})
|
||||
|
||||
tap.test('should schedule task', async () => {
|
||||
myTaskManager.scheduleTaskByName('myTask', '* * * * * *')
|
||||
await taskDone.promise
|
||||
myTaskManager.descheduleTaskByName('myTask')
|
||||
})
|
||||
|
||||
tap.start()
|
64
test/test.5.task.paramflow.ts
Normal file
64
test/test.5.task.paramflow.ts
Normal file
@ -0,0 +1,64 @@
|
||||
import { expect, tap } from 'tapbundle'
|
||||
import taskbuffer = require('../dist/index')
|
||||
|
||||
import * as q from 'smartq'
|
||||
import * as smartdelay from 'smartdelay'
|
||||
|
||||
let flowTask1 = new taskbuffer.Task({
|
||||
taskFunction: (x: number) => {
|
||||
let done = q.defer()
|
||||
console.log('flowTask1')
|
||||
console.log(x)
|
||||
done.resolve(x)
|
||||
return done.promise
|
||||
}
|
||||
})
|
||||
|
||||
let flowTaskBuffered = new taskbuffer.Task({
|
||||
taskFunction: (x: number) => {
|
||||
let done = q.defer()
|
||||
console.log('flowTask1')
|
||||
console.log(x)
|
||||
done.resolve(x)
|
||||
return done.promise
|
||||
},
|
||||
buffered: true,
|
||||
bufferMax: 1
|
||||
})
|
||||
|
||||
let flowTask2 = new taskbuffer.Task({
|
||||
taskFunction: (x: number) => {
|
||||
let done = q.defer()
|
||||
console.log('flowTask2')
|
||||
console.log(x)
|
||||
done.resolve(x)
|
||||
return done.promise
|
||||
},
|
||||
preTask: flowTask1
|
||||
})
|
||||
|
||||
let flowTask3 = new taskbuffer.Taskchain({
|
||||
taskArray: [ flowTask1, flowTask2 ]
|
||||
})
|
||||
|
||||
tap.test('should let a value flow through a task', async () => {
|
||||
let result = await flowTask1.trigger(12)
|
||||
expect(result).to.equal(12)
|
||||
})
|
||||
|
||||
tap.test('expect values to flow between tasks', async () => {
|
||||
let result = await flowTask2.trigger(12)
|
||||
expect(result).to.equal(12)
|
||||
})
|
||||
|
||||
tap.test('expect values to flow between tasks when buffered', async () => {
|
||||
let result = await flowTaskBuffered.trigger(12)
|
||||
expect(result).to.equal(12)
|
||||
})
|
||||
|
||||
tap.test('expect values to flow between tasks in Taskchain', async () => {
|
||||
let result = await flowTask3.trigger(12)
|
||||
expect(result).to.equal(12)
|
||||
})
|
||||
|
||||
tap.start()
|
28
test/test.6.taskonce.ts
Normal file
28
test/test.6.taskonce.ts
Normal file
@ -0,0 +1,28 @@
|
||||
import { expect, tap } from 'tapbundle'
|
||||
|
||||
import * as taskbuffer from '../dist/index'
|
||||
|
||||
let myNumber = 0
|
||||
let myTaskOnce: taskbuffer.TaskOnce
|
||||
|
||||
tap.test('should create a valid instance of TaskOnce', async () => {
|
||||
myTaskOnce = new taskbuffer.TaskOnce({
|
||||
taskFunction: async () => {
|
||||
myNumber++
|
||||
}
|
||||
})
|
||||
expect(myTaskOnce).to.be.instanceof(taskbuffer.TaskOnce)
|
||||
})
|
||||
|
||||
tap.test('myNumber should still be 0', async () => {
|
||||
expect(myNumber).to.equal(0)
|
||||
})
|
||||
|
||||
tap.test('myTaskOnce should trigger once', async () => {
|
||||
await myTaskOnce.trigger()
|
||||
await myTaskOnce.trigger()
|
||||
await myTaskOnce.trigger()
|
||||
expect(myNumber).to.equal(1)
|
||||
})
|
||||
|
||||
tap.start()
|
208
test/test.ts
208
test/test.ts
@ -1,208 +0,0 @@
|
||||
import { expect, tap } from 'tapbundle'
|
||||
import taskbuffer = require('../dist/index')
|
||||
|
||||
import * as q from 'smartq'
|
||||
|
||||
// setup some testData to work with
|
||||
let testTask: taskbuffer.Task
|
||||
let testTaskFunction = function () {
|
||||
let done = q.defer()
|
||||
console.log('main function executed!')
|
||||
done.resolve()
|
||||
return done.promise
|
||||
}
|
||||
|
||||
let testTaskFunctionTimeout = function () {
|
||||
let done = q.defer()
|
||||
console.log('main function started!')
|
||||
setTimeout(() => {
|
||||
console.log('main function ended!')
|
||||
done.resolve()
|
||||
}, 2000)
|
||||
return done.promise
|
||||
}
|
||||
|
||||
let testPreTask = new taskbuffer.Task({
|
||||
taskFunction: function () {
|
||||
let done = q.defer()
|
||||
console.log('preTask executed')
|
||||
done.resolve()
|
||||
return done.promise
|
||||
},
|
||||
preTask: testTask
|
||||
})
|
||||
|
||||
// some more tasks to wirj with
|
||||
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
|
||||
}
|
||||
})
|
||||
|
||||
tap.test('new Task() should return a new task', async () => {
|
||||
testTask = new taskbuffer.Task({ taskFunction: testTaskFunction, preTask: testPreTask })
|
||||
})
|
||||
tap.test('testTask should be and instance of Task', async () => {
|
||||
expect(testTask).to.be.instanceof(taskbuffer.Task)
|
||||
})
|
||||
tap.test('testTask.idle is true', async () => {
|
||||
if (!testTask.idle) {
|
||||
throw new Error('testTask.idle is not true')
|
||||
}
|
||||
|
||||
})
|
||||
tap.test('testTask.running is type boolean and initially false', async () => {
|
||||
expect(testTask.running).to.be.a('boolean')
|
||||
// tslint:disable-next-line:no-unused-expression
|
||||
expect(testTask.running).to.be.false
|
||||
})
|
||||
|
||||
tap.test('testTask.trigger() expect return Promise', async () => {
|
||||
expect(testTask.trigger()).to.be.instanceof(Promise)
|
||||
})
|
||||
|
||||
tap.test('testTask.trigger() returned Promise expect be fullfilled', async () => {
|
||||
await testTask.trigger()
|
||||
})
|
||||
|
||||
tap.test('expect run a task without pre and afterTask', async () => {
|
||||
let localTestTask = new taskbuffer.Task({ taskFunction: testTaskFunction })
|
||||
await localTestTask.trigger()
|
||||
})
|
||||
|
||||
tap.test('expect run buffered', async () => {
|
||||
let localTestTask = new taskbuffer.Task({
|
||||
taskFunction: testTaskFunctionTimeout,
|
||||
buffered: true,
|
||||
bufferMax: 2
|
||||
})
|
||||
localTestTask.trigger()
|
||||
localTestTask.trigger()
|
||||
localTestTask.trigger()
|
||||
await localTestTask.trigger()
|
||||
})
|
||||
|
||||
let testTaskchain
|
||||
let testTaskArray = [
|
||||
new taskbuffer.Task({
|
||||
name: 'task1',
|
||||
taskFunction: function () {
|
||||
let done = q.defer()
|
||||
setTimeout(done.resolve, 2000)
|
||||
return done.promise
|
||||
}
|
||||
}),
|
||||
new taskbuffer.Task({
|
||||
name: 'task2',
|
||||
taskFunction: function () {
|
||||
let done = q.defer()
|
||||
setTimeout(done.resolve, 2000)
|
||||
return done.promise
|
||||
}
|
||||
})
|
||||
]
|
||||
|
||||
tap.test('expect run tasks in sequence', async () => {
|
||||
testTaskchain = new taskbuffer.Taskchain({
|
||||
name: 'Taskchain1',
|
||||
taskArray: testTaskArray
|
||||
})
|
||||
await testTaskchain.trigger()
|
||||
})
|
||||
|
||||
tap.test('expect run in Parallel', async () => {
|
||||
let testTaskparallel = new taskbuffer.Taskparallel({
|
||||
taskArray: [ task1, task2, task3 ]
|
||||
})
|
||||
await testTaskparallel.trigger()
|
||||
})
|
||||
|
||||
let flowTask1 = new taskbuffer.Task({
|
||||
taskFunction: (x: number) => {
|
||||
let done = q.defer()
|
||||
console.log('flowTask1')
|
||||
console.log(x)
|
||||
done.resolve(x)
|
||||
return done.promise
|
||||
}
|
||||
})
|
||||
|
||||
let flowTaskBuffered = new taskbuffer.Task({
|
||||
taskFunction: (x: number) => {
|
||||
let done = q.defer()
|
||||
console.log('flowTask1')
|
||||
console.log(x)
|
||||
done.resolve(x)
|
||||
return done.promise
|
||||
},
|
||||
buffered: true,
|
||||
bufferMax: 1
|
||||
})
|
||||
|
||||
let flowTask2 = new taskbuffer.Task({
|
||||
taskFunction: (x: number) => {
|
||||
let done = q.defer()
|
||||
console.log('flowTask2')
|
||||
console.log(x)
|
||||
done.resolve(x)
|
||||
return done.promise
|
||||
},
|
||||
preTask: flowTask1
|
||||
})
|
||||
|
||||
let flowTask3 = new taskbuffer.Taskchain({
|
||||
taskArray: [ flowTask1, flowTask2 ]
|
||||
})
|
||||
|
||||
tap.test('should let a value flow through a task', async () => {
|
||||
let result = await flowTask1.trigger(12)
|
||||
expect(result).to.equal(12)
|
||||
})
|
||||
|
||||
tap.test('should let a values flow between tasks', async () => {
|
||||
let result = await flowTask2.trigger(12)
|
||||
expect(result).to.equal(12)
|
||||
})
|
||||
|
||||
tap.test('expect let a values flow between tasks when buffered', async () => {
|
||||
let result = await flowTaskBuffered.trigger(12)
|
||||
expect(result).to.equal(12)
|
||||
})
|
||||
|
||||
tap.test('should let a values flow between tasks in Taskchain', async () => {
|
||||
let result = await flowTask3.trigger(12)
|
||||
expect(result).to.equal(12)
|
||||
})
|
||||
|
||||
tap.start()
|
@ -1,7 +1,8 @@
|
||||
export {Task,ITaskFunction} from './taskbuffer.classes.task'
|
||||
export {Taskchain} from './taskbuffer.classes.taskchain'
|
||||
export {Taskparallel} from './taskbuffer.classes.taskparallel'
|
||||
export {Taskspace} from './taskbuffer.classes.taskspace'
|
||||
export { Task, ITaskFunction } from './taskbuffer.classes.task'
|
||||
export { Taskchain } from './taskbuffer.classes.taskchain'
|
||||
export { Taskparallel } from './taskbuffer.classes.taskparallel'
|
||||
export { TaskManager } from './taskbuffer.classes.taskmanager'
|
||||
export { TaskOnce } from './taskbuffer.classes.taskonce'
|
||||
|
||||
// import for naming only
|
||||
import './taskbuffer.classes.helpers'
|
||||
|
@ -28,12 +28,18 @@ export let isTaskTouched = (taskArg: Task, touchedTasksArray: Task[]): boolean =
|
||||
return result
|
||||
}
|
||||
|
||||
export let runTask = function (taskArg: Task, optionsArg: { x?, touchedTasksArray?: Task[] }) {
|
||||
export let runTask = async (taskArg: Task, optionsArg: { x?, touchedTasksArray?: Task[] }) => {
|
||||
let done = plugins.q.defer()
|
||||
|
||||
// pay respect to execDelay
|
||||
if (taskArg.execDelay) {
|
||||
await plugins.smartdelay.delayFor(taskArg.execDelay)
|
||||
}
|
||||
|
||||
// set running params
|
||||
taskArg.running = true
|
||||
done.promise.then(function () { taskArg.running = false })
|
||||
|
||||
done.promise.then(async () => { taskArg.running = false })
|
||||
|
||||
// handle options
|
||||
let options = plugins.lodash.merge(
|
||||
@ -75,7 +81,7 @@ export let runTask = function (taskArg: Task, optionsArg: { x?, touchedTasksArra
|
||||
console.log(err)
|
||||
})
|
||||
localDeferred.resolve()
|
||||
return done.promise
|
||||
return await done.promise
|
||||
}
|
||||
|
||||
export interface cycleObject {
|
||||
@ -116,18 +122,13 @@ export class BufferRunner {
|
||||
task: Task
|
||||
// initialze by default
|
||||
bufferCounter: number = 0
|
||||
bufferMax: number = 1
|
||||
running: boolean = false
|
||||
constructor(taskArg: Task) {
|
||||
this.task = taskArg
|
||||
}
|
||||
|
||||
setBufferMax (bufferMaxArg: number) {
|
||||
this.bufferMax = bufferMaxArg
|
||||
}
|
||||
|
||||
trigger (x): Promise<any> {
|
||||
if (!(this.bufferCounter >= this.bufferMax)) {
|
||||
if (!(this.bufferCounter >= this.task.bufferMax)) {
|
||||
this.bufferCounter++
|
||||
}
|
||||
let returnPromise: Promise<any> = this.task.cycleCounter.getPromiseForCycle(this.bufferCounter + 1)
|
||||
|
@ -6,9 +6,15 @@ export interface ITaskFunction {
|
||||
}
|
||||
|
||||
export class Task {
|
||||
// man datory properties
|
||||
name: string
|
||||
taskFunction: ITaskFunction
|
||||
buffered: boolean
|
||||
|
||||
bufferMax: number
|
||||
execDelay: number
|
||||
|
||||
// tasks to run before and after
|
||||
preTask: Task
|
||||
afterTask: Task
|
||||
|
||||
@ -16,31 +22,55 @@ export class Task {
|
||||
running: boolean = false
|
||||
bufferRunner = new helpers.BufferRunner(this)
|
||||
cycleCounter = new helpers.CycleCounter(this)
|
||||
|
||||
idle: boolean = true
|
||||
private _state: string = 'ready'
|
||||
|
||||
constructor(optionsArg: {
|
||||
taskFunction: ITaskFunction,
|
||||
preTask?: Task,
|
||||
afterTask?: Task,
|
||||
buffered?: boolean,
|
||||
bufferMax?: number,
|
||||
/**
|
||||
* the task function to run, must return promise
|
||||
*/
|
||||
taskFunction: ITaskFunction
|
||||
/**
|
||||
* any other task to run before
|
||||
*/
|
||||
preTask?: Task
|
||||
/**
|
||||
* any other task to run after
|
||||
*/
|
||||
afterTask?: Task
|
||||
/**
|
||||
* wether this task should run buffered
|
||||
*/
|
||||
buffered?: boolean
|
||||
/**
|
||||
* the maximum buffer
|
||||
*/
|
||||
bufferMax?: number
|
||||
/**
|
||||
* the execution delay, before the task is executed
|
||||
* only makes sense when running in buffered mode
|
||||
*/
|
||||
execDelay?: number
|
||||
/**
|
||||
* the name of the task
|
||||
*/
|
||||
name?: string
|
||||
}) {
|
||||
let options = optionsArg
|
||||
this.taskFunction = optionsArg.taskFunction
|
||||
this.preTask = options.preTask
|
||||
this.afterTask = options.afterTask
|
||||
this.preTask = optionsArg.preTask
|
||||
this.afterTask = optionsArg.afterTask
|
||||
this.idle = !this.running
|
||||
this.buffered = options.buffered
|
||||
this.bufferRunner.setBufferMax(options.bufferMax)
|
||||
this.name = options.name
|
||||
this.buffered = optionsArg.buffered
|
||||
this.bufferMax = optionsArg.bufferMax
|
||||
this.execDelay = optionsArg.execDelay
|
||||
this.name = optionsArg.name
|
||||
}
|
||||
|
||||
/**
|
||||
* trigger the task. Will trigger buffered if this.buffered is true
|
||||
*/
|
||||
trigger (x?): Promise<any> {
|
||||
trigger(x?): Promise<any> {
|
||||
if (this.buffered) {
|
||||
return this.triggerBuffered(x)
|
||||
} else {
|
||||
@ -51,21 +81,22 @@ export class Task {
|
||||
/**
|
||||
* trigger task unbuffered.
|
||||
*/
|
||||
triggerUnBuffered (x?): Promise<any> {
|
||||
triggerUnBuffered(x?): Promise<any> {
|
||||
return helpers.runTask(this, { x: x })
|
||||
}
|
||||
|
||||
/**
|
||||
* trigger task buffered.
|
||||
*/
|
||||
triggerBuffered (x?): Promise<any> {
|
||||
triggerBuffered(x?): Promise<any> {
|
||||
return this.bufferRunner.trigger(x)
|
||||
}
|
||||
|
||||
get state (): string {
|
||||
get state(): string {
|
||||
return this._state
|
||||
}
|
||||
set state (stateArg: string) {
|
||||
|
||||
set state(stateArg: string) {
|
||||
if (stateArg === 'locked') {
|
||||
this._state = 'locked'
|
||||
} else {
|
||||
|
@ -1,3 +1,6 @@
|
||||
// TaskChain chains tasks
|
||||
// and extends Task
|
||||
|
||||
import * as plugins from './taskbuffer.plugins'
|
||||
import { Task } from './taskbuffer.classes.task'
|
||||
import helpers = require('./taskbuffer.classes.helpers')
|
||||
|
@ -1 +1,97 @@
|
||||
import * as plugins from './taskbuffer.plugins'
|
||||
import { Task } from './taskbuffer.classes.task'
|
||||
|
||||
// interfaces
|
||||
import { Objectmap } from 'lik'
|
||||
|
||||
export class TaskManager {
|
||||
taskMap = new plugins.lik.Objectmap<Task>()
|
||||
private cronJobMap = new plugins.lik.Objectmap<ICronJob>()
|
||||
constructor () {
|
||||
// nothing here
|
||||
}
|
||||
|
||||
/**
|
||||
* checks if a task is already present
|
||||
* @param taskNameArg
|
||||
*/
|
||||
getTaskByName (taskNameArg): Task {
|
||||
return this.taskMap.find((itemArg) => {
|
||||
return itemArg.name === taskNameArg
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* adds a Task to the TaskManager
|
||||
* @param taskArg
|
||||
*/
|
||||
addTask (taskArg: Task): void {
|
||||
if (!taskArg.name) {
|
||||
throw new Error('taskArg needs a name to be added to taskManager')
|
||||
}
|
||||
this.taskMap.add(taskArg)
|
||||
}
|
||||
|
||||
/**
|
||||
* adds and schedules a task at once
|
||||
* @param taskArg
|
||||
* @param cronStringArg
|
||||
*/
|
||||
addAndScheduleTask (taskArg: Task, cronStringArg: string) {
|
||||
this.addTask(taskArg)
|
||||
let taskName = taskArg.name
|
||||
this.scheduleTaskByName(taskName, cronStringArg)
|
||||
}
|
||||
|
||||
/**
|
||||
* triggers a task in the TaskManagerByName
|
||||
* @param taskNameArg
|
||||
*/
|
||||
triggerTaskByName (taskNameArg: string): Promise<any> {
|
||||
let taskToTrigger = this.getTaskByName(taskNameArg)
|
||||
if (!taskToTrigger) {
|
||||
throw new Error(`There is no task with the name of ${taskNameArg}`)
|
||||
}
|
||||
return taskToTrigger.trigger()
|
||||
}
|
||||
|
||||
/**
|
||||
* schedules the task by name
|
||||
* @param taskNameArg
|
||||
*/
|
||||
scheduleTaskByName (taskNameArg: string, cronStringArg: string) {
|
||||
let taskToSchedule = this.getTaskByName(taskNameArg)
|
||||
let job = new plugins.cron.CronJob({
|
||||
cronTime: cronStringArg,
|
||||
onTick: () => {
|
||||
this.triggerTaskByName(taskNameArg)
|
||||
},
|
||||
start: true
|
||||
})
|
||||
this.cronJobMap.add({
|
||||
taskNameArg: taskToSchedule.name,
|
||||
cronString: cronStringArg,
|
||||
job: job
|
||||
})
|
||||
}
|
||||
|
||||
descheduleTaskByName (taskNameArg: string) {
|
||||
let descheduledCron = this.cronJobMap.findOneAndRemove((itemArg) => {
|
||||
return itemArg.taskNameArg === taskNameArg
|
||||
})
|
||||
descheduledCron.job.stop()
|
||||
}
|
||||
/**
|
||||
* returns all schedules of a specific task
|
||||
* @param taskNameArg
|
||||
*/
|
||||
getSchedulesForTaskName (taskNameArg: string) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
export interface ICronJob {
|
||||
cronString: string
|
||||
taskNameArg: string
|
||||
job: any
|
||||
}
|
||||
|
24
ts/taskbuffer.classes.taskonce.ts
Normal file
24
ts/taskbuffer.classes.taskonce.ts
Normal file
@ -0,0 +1,24 @@
|
||||
import * as plugins from './taskbuffer.plugins'
|
||||
|
||||
import { Task, ITaskFunction} from './taskbuffer.classes.task'
|
||||
|
||||
/**
|
||||
* TaskOnce is run exactly once, no matter how often it is triggered
|
||||
*/
|
||||
export class TaskOnce extends Task {
|
||||
hasTriggered: boolean = false
|
||||
constructor (optionsArg: {
|
||||
name?: string,
|
||||
taskFunction: ITaskFunction
|
||||
}) {
|
||||
super({
|
||||
name: optionsArg.name,
|
||||
taskFunction: async () => {
|
||||
if (!this.hasTriggered) {
|
||||
this.hasTriggered = true
|
||||
await optionsArg.taskFunction()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
@ -1,29 +1,28 @@
|
||||
import * as plugins from "./taskbuffer.plugins"
|
||||
import * as helpers from "./taskbuffer.classes.helpers"
|
||||
import { Task } from "./taskbuffer.classes.task"
|
||||
import * as plugins from './taskbuffer.plugins'
|
||||
import * as helpers from './taskbuffer.classes.helpers'
|
||||
import { Task } from './taskbuffer.classes.task'
|
||||
|
||||
export class Taskparallel extends Task {
|
||||
taskArray: Task[];
|
||||
constructor(optionsArg: {
|
||||
taskArray: Task[]
|
||||
}){
|
||||
let options = plugins.lodash.merge(
|
||||
optionsArg,
|
||||
{
|
||||
taskFunction: () => {
|
||||
let done = plugins.q.defer();
|
||||
let promiseArray: Promise<any>[] = []; // stores promises of all tasks, since they run in parallel
|
||||
this.taskArray.forEach(function (taskArg) {
|
||||
promiseArray.push(taskArg.trigger());
|
||||
})
|
||||
Promise.all(promiseArray)
|
||||
.then(done.resolve);
|
||||
return done.promise;
|
||||
}
|
||||
}
|
||||
);
|
||||
super(options);
|
||||
this.taskArray = optionsArg.taskArray;
|
||||
}
|
||||
taskArray: Task[]
|
||||
constructor (optionsArg: {
|
||||
taskArray: Task[]
|
||||
}) {
|
||||
let options = plugins.lodash.merge(
|
||||
optionsArg,
|
||||
{
|
||||
taskFunction: () => {
|
||||
let done = plugins.q.defer()
|
||||
let promiseArray: Promise<any>[] = [] // stores promises of all tasks, since they run in parallel
|
||||
this.taskArray.forEach(function (taskArg) {
|
||||
promiseArray.push(taskArg.trigger())
|
||||
})
|
||||
Promise.all(promiseArray)
|
||||
.then(done.resolve)
|
||||
return done.promise
|
||||
}
|
||||
}
|
||||
)
|
||||
super(options)
|
||||
this.taskArray = optionsArg.taskArray
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,6 +0,0 @@
|
||||
import * as plugins from "./taskbuffer.plugins"
|
||||
import * as helpers from "./taskbuffer.classes.helpers"
|
||||
|
||||
export class Taskspace {
|
||||
|
||||
}
|
@ -1,12 +1,18 @@
|
||||
import 'typings-global'
|
||||
import * as beautylog from 'beautylog'
|
||||
let cron = require('cron')
|
||||
import * as lik from 'lik'
|
||||
import * as lodash from 'lodash'
|
||||
import * as rxjs from 'rxjs'
|
||||
import * as q from 'smartq'
|
||||
import * as smartdelay from 'smartdelay'
|
||||
|
||||
export {
|
||||
beautylog,
|
||||
cron,
|
||||
lik,
|
||||
lodash,
|
||||
rxjs,
|
||||
q
|
||||
}
|
||||
q,
|
||||
smartdelay
|
||||
}
|
||||
|
216
yarn.lock
216
yarn.lock
@ -15,25 +15,41 @@
|
||||
dependencies:
|
||||
"@types/chai" "*"
|
||||
|
||||
"@types/chai@*", "@types/chai@^3.4.35":
|
||||
"@types/chai@*":
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.0.1.tgz#37fea779617cfec3fd2b19a0247e8bbdd5133bf6"
|
||||
|
||||
"@types/chai@^3.4.35":
|
||||
version "3.5.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-3.5.2.tgz#c11cd2817d3a401b7ba0f5a420f35c56139b1c1e"
|
||||
|
||||
"@types/lodash@4.x.x", "@types/lodash@^4.14.55":
|
||||
version "4.14.65"
|
||||
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.65.tgz#a0f78d71ffcd3c02628d5f616410c98c424326d5"
|
||||
"@types/cron@^1.2.1":
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/cron/-/cron-1.2.1.tgz#95c1e432d6106ca34c92f0743638bc786c073faa"
|
||||
|
||||
"@types/node@*", "@types/node@^7.0.29":
|
||||
version "7.0.29"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.29.tgz#ccfcec5b7135c7caf6c4ffb8c7f33102340d99df"
|
||||
"@types/lodash@4.x.x", "@types/lodash@^4.14.55", "@types/lodash@^4.14.67":
|
||||
version "4.14.68"
|
||||
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.68.tgz#754fbab68bd2bbb69547dc8ce7574f7012eed7f6"
|
||||
|
||||
"@types/minimatch@2.x.x":
|
||||
version "2.0.29"
|
||||
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-2.0.29.tgz#5002e14f75e2d71e564281df0431c8c1b4a2a36a"
|
||||
|
||||
"@types/node@*":
|
||||
version "8.0.9"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.9.tgz#19f44c3b6cb8a70d261d366f73650e3e3891ab2d"
|
||||
|
||||
"@types/promises-a-plus@*":
|
||||
version "0.0.27"
|
||||
resolved "https://registry.yarnpkg.com/@types/promises-a-plus/-/promises-a-plus-0.0.27.tgz#c64651134614c84b8f5d7114ce8901d36a609780"
|
||||
|
||||
"@types/shelljs@^0.6.0":
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.6.0.tgz#090b705c102ce7fc5c0c5ea9b524418ff15840df"
|
||||
"@types/q@1.x.x":
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.0.2.tgz#41f0b0f6ae0eeed3a51b003e2e08cba5525b74f6"
|
||||
|
||||
"@types/shelljs@^0.7.2":
|
||||
version "0.7.2"
|
||||
resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.7.2.tgz#c2bdb3fe80cd7a3da08750ca898ae44c589671f3"
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
@ -57,9 +73,9 @@ assertion-error@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c"
|
||||
|
||||
balanced-match@^0.4.1:
|
||||
version "0.4.2"
|
||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
|
||||
balanced-match@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
||||
|
||||
beautycolor@^1.0.7:
|
||||
version "1.0.7"
|
||||
@ -86,10 +102,10 @@ bindings@^1.2.1:
|
||||
resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11"
|
||||
|
||||
brace-expansion@^1.1.7:
|
||||
version "1.1.7"
|
||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59"
|
||||
version "1.1.8"
|
||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
|
||||
dependencies:
|
||||
balanced-match "^0.4.1"
|
||||
balanced-match "^1.0.0"
|
||||
concat-map "0.0.1"
|
||||
|
||||
chai-as-promised@^6.0.0:
|
||||
@ -99,8 +115,8 @@ chai-as-promised@^6.0.0:
|
||||
check-error "^1.0.2"
|
||||
|
||||
chai-string@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/chai-string/-/chai-string-1.3.0.tgz#df6139f294391b1035be5606f60a843b3a5041e7"
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/chai-string/-/chai-string-1.4.0.tgz#359140c051d36a4e4b1a5fc6b910152f438a8d49"
|
||||
|
||||
chai@^3.5.0:
|
||||
version "3.5.0"
|
||||
@ -138,12 +154,25 @@ concat-map@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||
|
||||
cron@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/cron/-/cron-1.2.1.tgz#3a86c09b41b8f261ac863a7cc85ea4735857eab2"
|
||||
dependencies:
|
||||
moment-timezone "^0.5.x"
|
||||
|
||||
deep-eql@^0.1.3:
|
||||
version "0.1.3"
|
||||
resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2"
|
||||
dependencies:
|
||||
type-detect "0.1.1"
|
||||
|
||||
define-properties@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94"
|
||||
dependencies:
|
||||
foreach "^2.0.5"
|
||||
object-keys "^1.0.8"
|
||||
|
||||
early@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/early/-/early-2.1.1.tgz#841e23254ea5dc54d8afaeee82f5ab65c00ee23c"
|
||||
@ -152,6 +181,23 @@ early@^2.1.1:
|
||||
smartq "^1.1.1"
|
||||
typings-global "^1.0.16"
|
||||
|
||||
es-abstract@^1.5.1:
|
||||
version "1.7.0"
|
||||
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c"
|
||||
dependencies:
|
||||
es-to-primitive "^1.1.1"
|
||||
function-bind "^1.1.0"
|
||||
is-callable "^1.1.3"
|
||||
is-regex "^1.0.3"
|
||||
|
||||
es-to-primitive@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d"
|
||||
dependencies:
|
||||
is-callable "^1.1.1"
|
||||
is-date-object "^1.0.1"
|
||||
is-symbol "^1.0.1"
|
||||
|
||||
es6-error@^4.0.2:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.0.2.tgz#eec5c726eacef51b7f6b73c20db6e1b13b069c98"
|
||||
@ -164,10 +210,18 @@ figlet@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/figlet/-/figlet-1.2.0.tgz#6c46537378fab649146b5a6143dda019b430b410"
|
||||
|
||||
foreach@^2.0.5:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
|
||||
|
||||
fs.realpath@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||
|
||||
function-bind@^1.0.2, function-bind@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771"
|
||||
|
||||
glob@^7.0.0:
|
||||
version "7.1.2"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
|
||||
@ -185,6 +239,12 @@ has-ansi@^2.0.0:
|
||||
dependencies:
|
||||
ansi-regex "^2.0.0"
|
||||
|
||||
has@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
|
||||
dependencies:
|
||||
function-bind "^1.0.2"
|
||||
|
||||
inflight@^1.0.4:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
|
||||
@ -200,6 +260,24 @@ interpret@^1.0.0:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.3.tgz#cbc35c62eeee73f19ab7b10a801511401afc0f90"
|
||||
|
||||
is-callable@^1.1.1, is-callable@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2"
|
||||
|
||||
is-date-object@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
|
||||
|
||||
is-regex@^1.0.3:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
|
||||
dependencies:
|
||||
has "^1.0.1"
|
||||
|
||||
is-symbol@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572"
|
||||
|
||||
isexe@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
||||
@ -218,6 +296,20 @@ left-pad@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.1.3.tgz#612f61c033f3a9e08e939f1caebeea41b6f3199a"
|
||||
|
||||
lik@^1.0.38:
|
||||
version "1.0.38"
|
||||
resolved "https://registry.yarnpkg.com/lik/-/lik-1.0.38.tgz#ccff0abd3d9236a5e4b7d80d514c5c210f18469b"
|
||||
dependencies:
|
||||
"@types/lodash" "^4.14.67"
|
||||
"@types/minimatch" "2.x.x"
|
||||
"@types/q" "1.x.x"
|
||||
lodash "^4.17.4"
|
||||
minimatch "^3.0.4"
|
||||
q "^1.5.0"
|
||||
rxjs "^5.4.1"
|
||||
smartq "^1.1.1"
|
||||
typings-global "^1.0.19"
|
||||
|
||||
lodash@^4.17.4:
|
||||
version "4.17.4"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
|
||||
@ -249,10 +341,31 @@ minimist@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
|
||||
|
||||
moment-timezone@^0.5.x:
|
||||
version "0.5.13"
|
||||
resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.13.tgz#99ce5c7d827262eb0f1f702044177f60745d7b90"
|
||||
dependencies:
|
||||
moment ">= 2.9.0"
|
||||
|
||||
"moment@>= 2.9.0":
|
||||
version "2.18.1"
|
||||
resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f"
|
||||
|
||||
nan@^2.3.2:
|
||||
version "2.6.2"
|
||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.6.2.tgz#e4ff34e6c95fdfb5aecc08de6596f43605a7db45"
|
||||
|
||||
object-keys@^1.0.8:
|
||||
version "1.0.11"
|
||||
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d"
|
||||
|
||||
object.getownpropertydescriptors@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
|
||||
dependencies:
|
||||
define-properties "^1.1.2"
|
||||
es-abstract "^1.5.1"
|
||||
|
||||
once@^1.3.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
||||
@ -266,8 +379,8 @@ onetime@^2.0.0:
|
||||
mimic-fn "^1.0.0"
|
||||
|
||||
ora@^1.1.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/ora/-/ora-1.2.0.tgz#32fb3183500efe83f5ea89101785f0ee6060fec9"
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/ora/-/ora-1.3.0.tgz#80078dd2b92a934af66a3ad72a5b910694ede51a"
|
||||
dependencies:
|
||||
chalk "^1.1.1"
|
||||
cli-cursor "^2.1.0"
|
||||
@ -286,6 +399,10 @@ pretty-bytes@^4.0.2:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9"
|
||||
|
||||
q@^1.5.0:
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1"
|
||||
|
||||
rechoir@^0.6.2:
|
||||
version "0.6.2"
|
||||
resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
|
||||
@ -305,9 +422,9 @@ restore-cursor@^2.0.0:
|
||||
onetime "^2.0.0"
|
||||
signal-exit "^3.0.2"
|
||||
|
||||
rxjs@^5.4.0:
|
||||
version "5.4.0"
|
||||
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.4.0.tgz#a7db14ab157f9d7aac6a56e655e7a3860d39bf26"
|
||||
rxjs@^5.4.1, rxjs@^5.4.2:
|
||||
version "5.4.2"
|
||||
resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.4.2.tgz#2a3236fcbf03df57bae06fd6972fd99e5c08fcf7"
|
||||
dependencies:
|
||||
symbol-observable "^1.0.1"
|
||||
|
||||
@ -315,7 +432,7 @@ semver@^5.3.0:
|
||||
version "5.3.0"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
|
||||
|
||||
shelljs@^0.7.6:
|
||||
shelljs@^0.7.8:
|
||||
version "0.7.8"
|
||||
resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3"
|
||||
dependencies:
|
||||
@ -353,22 +470,23 @@ smartenv@^2.0.0:
|
||||
smartq "^1.1.1"
|
||||
typings-global "^1.0.14"
|
||||
|
||||
smartq@^1.1.0, smartq@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/smartq/-/smartq-1.1.1.tgz#efb358705260d41ae18aef7ffd815f7b6fe17dd3"
|
||||
smartq@^1.1.1, smartq@^1.1.6:
|
||||
version "1.1.6"
|
||||
resolved "https://registry.yarnpkg.com/smartq/-/smartq-1.1.6.tgz#0c1ff4336d95e95b4f1fdd8ccd7e2c5a323b8412"
|
||||
dependencies:
|
||||
typed-promisify "^0.3.0"
|
||||
typings-global "^1.0.14"
|
||||
typings-global "^1.0.19"
|
||||
util.promisify "^1.0.0"
|
||||
|
||||
smartshell@^1.0.6:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/smartshell/-/smartshell-1.0.6.tgz#27b1c79029784abe72ac7e91fe698b7ebecc6629"
|
||||
version "1.0.8"
|
||||
resolved "https://registry.yarnpkg.com/smartshell/-/smartshell-1.0.8.tgz#1535756c0fe8069f7e6da1e3f9cb6c8f77094e42"
|
||||
dependencies:
|
||||
"@types/shelljs" "^0.6.0"
|
||||
"@types/shelljs" "^0.7.2"
|
||||
"@types/which" "^1.0.28"
|
||||
shelljs "^0.7.6"
|
||||
smartq "^1.1.0"
|
||||
which "^1.2.12"
|
||||
shelljs "^0.7.8"
|
||||
smartq "^1.1.1"
|
||||
typings-global "^1.0.19"
|
||||
which "^1.2.14"
|
||||
|
||||
strip-ansi@^3.0.0:
|
||||
version "3.0.1"
|
||||
@ -384,16 +502,16 @@ symbol-observable@^1.0.1:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d"
|
||||
|
||||
tapbundle@^1.0.14:
|
||||
version "1.0.14"
|
||||
resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-1.0.14.tgz#75827e335fcb02216f0267a26a26d702ddc02e3c"
|
||||
tapbundle@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-1.1.0.tgz#e0547f683ae36260f639ecd7435df95f0af01683"
|
||||
dependencies:
|
||||
early "^2.1.1"
|
||||
leakage "^0.3.0"
|
||||
smartchai "^1.0.3"
|
||||
smartdelay "^1.0.3"
|
||||
smartq "^1.1.1"
|
||||
typings-global "^1.0.16"
|
||||
typings-global "^1.0.19"
|
||||
|
||||
type-detect@0.1.1:
|
||||
version "0.1.1"
|
||||
@ -403,19 +521,21 @@ type-detect@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-1.0.0.tgz#762217cc06db258ec48908a1298e8b95121e8ea2"
|
||||
|
||||
typed-promisify@^0.3.0:
|
||||
version "0.3.0"
|
||||
resolved "https://registry.yarnpkg.com/typed-promisify/-/typed-promisify-0.3.0.tgz#1ba0af5e444c87d8047406f18ce49092a1191853"
|
||||
|
||||
typings-global@^1.0.14, typings-global@^1.0.16, typings-global@^1.0.17:
|
||||
version "1.0.17"
|
||||
resolved "https://registry.yarnpkg.com/typings-global/-/typings-global-1.0.17.tgz#41edc331ccec3168289adc8849e1e255efbe7152"
|
||||
typings-global@^1.0.14, typings-global@^1.0.16, typings-global@^1.0.19:
|
||||
version "1.0.19"
|
||||
resolved "https://registry.yarnpkg.com/typings-global/-/typings-global-1.0.19.tgz#3376a72d4de1e5541bf5702248ff64c3e6ea316c"
|
||||
dependencies:
|
||||
"@types/node" "^7.0.29"
|
||||
semver "^5.3.0"
|
||||
smartshell "^1.0.6"
|
||||
|
||||
which@^1.2.12:
|
||||
util.promisify@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
|
||||
dependencies:
|
||||
define-properties "^1.1.2"
|
||||
object.getownpropertydescriptors "^2.0.3"
|
||||
|
||||
which@^1.2.14:
|
||||
version "1.2.14"
|
||||
resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5"
|
||||
dependencies:
|
||||
|
Reference in New Issue
Block a user