introduce TaskOnce
This commit is contained in:
		
							
								
								
									
										1
									
								
								dist/index.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								dist/index.d.ts
									
									
									
									
										vendored
									
									
								
							@@ -2,4 +2,5 @@ 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 { TaskManager } from './taskbuffer.classes.taskmanager';
 | 
					export { TaskManager } from './taskbuffer.classes.taskmanager';
 | 
				
			||||||
 | 
					export { TaskOnce } from './taskbuffer.classes.taskonce';
 | 
				
			||||||
import './taskbuffer.classes.helpers';
 | 
					import './taskbuffer.classes.helpers';
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							@@ -8,6 +8,8 @@ var taskbuffer_classes_taskparallel_1 = require("./taskbuffer.classes.taskparall
 | 
				
			|||||||
exports.Taskparallel = taskbuffer_classes_taskparallel_1.Taskparallel;
 | 
					exports.Taskparallel = taskbuffer_classes_taskparallel_1.Taskparallel;
 | 
				
			||||||
var taskbuffer_classes_taskmanager_1 = require("./taskbuffer.classes.taskmanager");
 | 
					var taskbuffer_classes_taskmanager_1 = require("./taskbuffer.classes.taskmanager");
 | 
				
			||||||
exports.TaskManager = taskbuffer_classes_taskmanager_1.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
 | 
					// import for naming only
 | 
				
			||||||
require("./taskbuffer.classes.helpers");
 | 
					require("./taskbuffer.classes.helpers");
 | 
				
			||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFFQUE0RDtBQUFwRCx5Q0FBQSxJQUFJLENBQUE7QUFDWiwrRUFBd0Q7QUFBaEQsbURBQUEsU0FBUyxDQUFBO0FBQ2pCLHFGQUE4RDtBQUF0RCx5REFBQSxZQUFZLENBQUE7QUFDcEIsbUZBQThEO0FBQXJELHVEQUFBLFdBQVcsQ0FBQTtBQUVwQix5QkFBeUI7QUFDekIsd0NBQXFDIn0=
 | 
					//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFFQUErRDtBQUF0RCx5Q0FBQSxJQUFJLENBQUE7QUFDYiwrRUFBMEQ7QUFBakQsbURBQUEsU0FBUyxDQUFBO0FBQ2xCLHFGQUFnRTtBQUF2RCx5REFBQSxZQUFZLENBQUE7QUFDckIsbUZBQThEO0FBQXJELHVEQUFBLFdBQVcsQ0FBQTtBQUNwQiw2RUFBd0Q7QUFBL0MsaURBQUEsUUFBUSxDQUFBO0FBRWpCLHlCQUF5QjtBQUN6Qix3Q0FBcUMifQ==
 | 
				
			||||||
							
								
								
									
										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
 | 
				
			||||||
							
								
								
									
										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()
 | 
				
			||||||
@@ -2,6 +2,7 @@ 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 { TaskManager } from './taskbuffer.classes.taskmanager'
 | 
					export { TaskManager } from './taskbuffer.classes.taskmanager'
 | 
				
			||||||
 | 
					export { TaskOnce } from './taskbuffer.classes.taskonce'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// import for naming only
 | 
					// import for naming only
 | 
				
			||||||
import './taskbuffer.classes.helpers'
 | 
					import './taskbuffer.classes.helpers'
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										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()
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user