@push.rocks/taskbuffer 4.1.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/dist_ts/00_commitinfo_data.js +1 -1
  2. package/dist_ts_web/00_commitinfo_data.js +2 -2
  3. package/dist_ts_web/{ts_web/elements → elements}/taskbuffer-dashboard.demo.js +1 -1
  4. package/dist_ts_web/{ts_web/index.d.ts → index.d.ts} +1 -1
  5. package/dist_ts_web/{ts_web/taskbuffer-dashboard.d.ts → taskbuffer-dashboard.d.ts} +6 -6
  6. package/dist_ts_web/{ts_web/taskbuffer-dashboard.js → taskbuffer-dashboard.js} +23 -16
  7. package/package.json +8 -8
  8. package/readme.hints.md +28 -1
  9. package/readme.md +538 -408
  10. package/ts/00_commitinfo_data.ts +1 -1
  11. package/ts_web/00_commitinfo_data.ts +1 -1
  12. package/ts_web/taskbuffer-dashboard.ts +5 -5
  13. package/dist_ts_web/ts/index.d.ts +0 -13
  14. package/dist_ts_web/ts/index.js +0 -12
  15. package/dist_ts_web/ts/taskbuffer.classes.bufferrunner.d.ts +0 -8
  16. package/dist_ts_web/ts/taskbuffer.classes.bufferrunner.js +0 -41
  17. package/dist_ts_web/ts/taskbuffer.classes.cyclecounter.d.ts +0 -14
  18. package/dist_ts_web/ts/taskbuffer.classes.cyclecounter.js +0 -44
  19. package/dist_ts_web/ts/taskbuffer.classes.distributedcoordinator.d.ts +0 -27
  20. package/dist_ts_web/ts/taskbuffer.classes.distributedcoordinator.js +0 -5
  21. package/dist_ts_web/ts/taskbuffer.classes.task.d.ts +0 -99
  22. package/dist_ts_web/ts/taskbuffer.classes.task.js +0 -338
  23. package/dist_ts_web/ts/taskbuffer.classes.taskchain.d.ts +0 -14
  24. package/dist_ts_web/ts/taskbuffer.classes.taskchain.js +0 -60
  25. package/dist_ts_web/ts/taskbuffer.classes.taskdebounced.d.ts +0 -10
  26. package/dist_ts_web/ts/taskbuffer.classes.taskdebounced.js +0 -31
  27. package/dist_ts_web/ts/taskbuffer.classes.taskmanager.d.ts +0 -54
  28. package/dist_ts_web/ts/taskbuffer.classes.taskmanager.js +0 -238
  29. package/dist_ts_web/ts/taskbuffer.classes.taskonce.d.ts +0 -11
  30. package/dist_ts_web/ts/taskbuffer.classes.taskonce.js +0 -20
  31. package/dist_ts_web/ts/taskbuffer.classes.taskparallel.d.ts +0 -7
  32. package/dist_ts_web/ts/taskbuffer.classes.taskparallel.js +0 -25
  33. package/dist_ts_web/ts/taskbuffer.classes.taskrunner.d.ts +0 -30
  34. package/dist_ts_web/ts/taskbuffer.classes.taskrunner.js +0 -60
  35. package/dist_ts_web/ts/taskbuffer.classes.taskstep.d.ts +0 -27
  36. package/dist_ts_web/ts/taskbuffer.classes.taskstep.js +0 -37
  37. package/dist_ts_web/ts/taskbuffer.interfaces.d.ts +0 -47
  38. package/dist_ts_web/ts/taskbuffer.interfaces.js +0 -2
  39. package/dist_ts_web/ts/taskbuffer.logging.d.ts +0 -2
  40. package/dist_ts_web/ts/taskbuffer.logging.js +0 -3
  41. package/dist_ts_web/ts/taskbuffer.plugins.d.ts +0 -8
  42. package/dist_ts_web/ts/taskbuffer.plugins.js +0 -9
  43. package/dist_ts_web/ts_web/00_commitinfo_data.d.ts +0 -8
  44. package/dist_ts_web/ts_web/00_commitinfo_data.js +0 -9
  45. package/dist_ts_web/ts_web/demorunner.d.ts +0 -1
  46. package/dist_ts_web/ts_web/demorunner.js +0 -33
  47. /package/dist_ts_web/{ts_web/elements → elements}/taskbuffer-dashboard.demo.d.ts +0 -0
  48. /package/dist_ts_web/{ts_web/index.js → index.js} +0 -0
  49. /package/{LICENSE → license.md} +0 -0
@@ -1,238 +0,0 @@
1
- import * as plugins from './taskbuffer.plugins.js';
2
- import { Task } from './taskbuffer.classes.task.js';
3
- import { AbstractDistributedCoordinator, } from './taskbuffer.classes.distributedcoordinator.js';
4
- import { logger } from './taskbuffer.logging.js';
5
- export class TaskManager {
6
- constructor(options = {}) {
7
- this.randomId = plugins.smartunique.shortId();
8
- this.taskMap = new plugins.lik.ObjectMap();
9
- this.taskSubject = new plugins.smartrx.rxjs.Subject();
10
- this.taskSubscriptions = new Map();
11
- this.cronJobManager = new plugins.smarttime.CronManager();
12
- this.options = {
13
- distributedCoordinator: null,
14
- };
15
- this.options = Object.assign(this.options, options);
16
- }
17
- getTaskByName(taskName) {
18
- return this.taskMap.findSync((task) => task.name === taskName);
19
- }
20
- addTask(task) {
21
- if (!task.name) {
22
- throw new Error('Task must have a name to be added to taskManager');
23
- }
24
- this.taskMap.add(task);
25
- const subscription = task.eventSubject.subscribe((event) => {
26
- this.taskSubject.next(event);
27
- });
28
- this.taskSubscriptions.set(task, subscription);
29
- }
30
- removeTask(task) {
31
- this.taskMap.remove(task);
32
- const subscription = this.taskSubscriptions.get(task);
33
- if (subscription) {
34
- subscription.unsubscribe();
35
- this.taskSubscriptions.delete(task);
36
- }
37
- }
38
- addAndScheduleTask(task, cronString) {
39
- this.addTask(task);
40
- this.scheduleTaskByName(task.name, cronString);
41
- }
42
- async triggerTaskByName(taskName) {
43
- const taskToTrigger = this.getTaskByName(taskName);
44
- if (!taskToTrigger) {
45
- throw new Error(`No task with the name ${taskName} found.`);
46
- }
47
- return taskToTrigger.trigger();
48
- }
49
- async triggerTask(task) {
50
- return task.trigger();
51
- }
52
- scheduleTaskByName(taskName, cronString) {
53
- const taskToSchedule = this.getTaskByName(taskName);
54
- if (!taskToSchedule) {
55
- throw new Error(`No task with the name ${taskName} found.`);
56
- }
57
- this.handleTaskScheduling(taskToSchedule, cronString);
58
- }
59
- handleTaskScheduling(task, cronString) {
60
- const cronJob = this.cronJobManager.addCronjob(cronString, async (triggerTime) => {
61
- this.logTaskState(task);
62
- if (this.options.distributedCoordinator) {
63
- const announcementResult = await this.performDistributedConsultation(task, triggerTime);
64
- if (!announcementResult.shouldTrigger) {
65
- logger.log('info', 'Distributed coordinator result: NOT EXECUTING');
66
- return;
67
- }
68
- else {
69
- logger.log('info', 'Distributed coordinator result: CHOSEN AND EXECUTING');
70
- }
71
- }
72
- try {
73
- await task.trigger();
74
- }
75
- catch (err) {
76
- logger.log('error', `TaskManager: scheduled task "${task.name || 'unnamed'}" failed: ${err instanceof Error ? err.message : String(err)}`);
77
- }
78
- });
79
- task.cronJob = cronJob;
80
- }
81
- logTaskState(task) {
82
- logger.log('info', `Taskbuffer schedule triggered task >>${task.name}<<`);
83
- const bufferState = task.buffered
84
- ? `buffered with max ${task.bufferMax} buffered calls`
85
- : `unbuffered`;
86
- logger.log('info', `Task >>${task.name}<< is ${bufferState}`);
87
- }
88
- async performDistributedConsultation(task, triggerTime) {
89
- logger.log('info', 'Found a distributed coordinator, performing consultation.');
90
- return this.options.distributedCoordinator.fireDistributedTaskRequest({
91
- submitterId: this.randomId,
92
- requestResponseId: plugins.smartunique.shortId(),
93
- status: 'requesting',
94
- taskExecutionParallel: 1,
95
- taskExecutionTime: triggerTime,
96
- taskExecutionTimeout: task.timeout,
97
- taskName: task.name,
98
- taskVersion: task.version,
99
- });
100
- }
101
- descheduleTaskByName(taskName) {
102
- const task = this.getTaskByName(taskName);
103
- if (task && task.cronJob) {
104
- this.cronJobManager.removeCronjob(task.cronJob);
105
- task.cronJob = null;
106
- }
107
- if (this.cronJobManager.cronjobs.isEmpty) {
108
- this.cronJobManager.stop();
109
- }
110
- }
111
- async descheduleTask(task) {
112
- await this.descheduleTaskByName(task.name);
113
- }
114
- getScheduleForTaskName(taskName) {
115
- const task = this.getTaskByName(taskName);
116
- return task && task.cronJob ? task.cronJob.cronExpression : null;
117
- }
118
- async start() {
119
- if (this.options.distributedCoordinator) {
120
- await this.options.distributedCoordinator.start();
121
- }
122
- this.cronJobManager.start();
123
- }
124
- async stop() {
125
- this.cronJobManager.stop();
126
- if (this.options.distributedCoordinator) {
127
- await this.options.distributedCoordinator.stop();
128
- }
129
- for (const [, subscription] of this.taskSubscriptions) {
130
- subscription.unsubscribe();
131
- }
132
- this.taskSubscriptions.clear();
133
- }
134
- // Get metadata for a specific task
135
- getTaskMetadata(taskName) {
136
- const task = this.getTaskByName(taskName);
137
- if (!task)
138
- return null;
139
- return task.getMetadata();
140
- }
141
- // Get metadata for all tasks
142
- getAllTasksMetadata() {
143
- return this.taskMap.getArray().map(task => task.getMetadata());
144
- }
145
- // Get scheduled tasks with their schedules and next run times
146
- getScheduledTasks() {
147
- const scheduledTasks = [];
148
- for (const task of this.taskMap.getArray()) {
149
- if (task.cronJob) {
150
- scheduledTasks.push({
151
- name: task.name || 'unnamed',
152
- schedule: task.cronJob.cronExpression,
153
- nextRun: new Date(task.cronJob.getNextExecutionTime()),
154
- lastRun: task.lastRun,
155
- steps: task.getStepsMetadata?.(),
156
- metadata: task.getMetadata(),
157
- });
158
- }
159
- }
160
- return scheduledTasks;
161
- }
162
- // Get next scheduled runs across all tasks
163
- getNextScheduledRuns(limit = 10) {
164
- const scheduledRuns = this.getScheduledTasks()
165
- .map(task => ({
166
- taskName: task.name,
167
- nextRun: task.nextRun,
168
- schedule: task.schedule,
169
- }))
170
- .sort((a, b) => a.nextRun.getTime() - b.nextRun.getTime())
171
- .slice(0, limit);
172
- return scheduledRuns;
173
- }
174
- getTasksByLabel(key, value) {
175
- return this.taskMap.getArray().filter(task => task.labels[key] === value);
176
- }
177
- getTasksMetadataByLabel(key, value) {
178
- return this.getTasksByLabel(key, value).map(task => task.getMetadata());
179
- }
180
- // Add, execute, and remove a task while collecting metadata
181
- async addExecuteRemoveTask(task, options) {
182
- // Add task to manager
183
- this.addTask(task);
184
- // Optionally schedule it
185
- if (options?.schedule) {
186
- this.scheduleTaskByName(task.name, options.schedule);
187
- }
188
- const startTime = Date.now();
189
- const progressUpdates = [];
190
- try {
191
- // Execute the task
192
- const result = await task.trigger();
193
- // Collect execution report
194
- const report = {
195
- taskName: task.name || 'unnamed',
196
- startTime,
197
- endTime: Date.now(),
198
- duration: Date.now() - startTime,
199
- steps: task.getStepsMetadata(),
200
- stepsCompleted: task.getStepsMetadata()
201
- .filter(step => step.status === 'completed')
202
- .map(step => step.name),
203
- progress: task.getProgress(),
204
- result,
205
- };
206
- // Remove task from manager
207
- this.removeTask(task);
208
- // Deschedule if it was scheduled
209
- if (options?.schedule && task.name) {
210
- this.descheduleTaskByName(task.name);
211
- }
212
- return report;
213
- }
214
- catch (error) {
215
- // Create error report
216
- const errorReport = {
217
- taskName: task.name || 'unnamed',
218
- startTime,
219
- endTime: Date.now(),
220
- duration: Date.now() - startTime,
221
- steps: task.getStepsMetadata(),
222
- stepsCompleted: task.getStepsMetadata()
223
- .filter(step => step.status === 'completed')
224
- .map(step => step.name),
225
- progress: task.getProgress(),
226
- error: error,
227
- };
228
- // Remove task from manager even on error
229
- this.removeTask(task);
230
- // Deschedule if it was scheduled
231
- if (options?.schedule && task.name) {
232
- this.descheduleTaskByName(task.name);
233
- }
234
- throw errorReport;
235
- }
236
- }
237
- }
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2ttYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvdGFza2J1ZmZlci5jbGFzc2VzLnRhc2ttYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3BELE9BQU8sRUFDTCw4QkFBOEIsR0FFL0IsTUFBTSxnREFBZ0QsQ0FBQztBQUV4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFZakQsTUFBTSxPQUFPLFdBQVc7SUFVdEIsWUFBWSxVQUEwQyxFQUFFO1FBVGpELGFBQVEsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pDLFlBQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFrQixDQUFDO1FBQzdDLGdCQUFXLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQWMsQ0FBQztRQUNyRSxzQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBcUQsQ0FBQztRQUNqRixtQkFBYyxHQUFHLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0RCxZQUFPLEdBQW1DO1lBQy9DLHNCQUFzQixFQUFFLElBQUk7U0FDN0IsQ0FBQztRQUdBLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFTSxhQUFhLENBQUMsUUFBZ0I7UUFDbkMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQztJ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
@@ -1,11 +0,0 @@
1
- import { Task, type ITaskFunction } from './taskbuffer.classes.task.js';
2
- /**
3
- * TaskOnce is run exactly once, no matter how often it is triggered
4
- */
5
- export declare class TaskOnce extends Task {
6
- hasTriggered: boolean;
7
- constructor(optionsArg: {
8
- name?: string;
9
- taskFunction: ITaskFunction;
10
- });
11
- }
@@ -1,20 +0,0 @@
1
- import * as plugins from './taskbuffer.plugins.js';
2
- import { Task } from './taskbuffer.classes.task.js';
3
- /**
4
- * TaskOnce is run exactly once, no matter how often it is triggered
5
- */
6
- export class TaskOnce extends Task {
7
- constructor(optionsArg) {
8
- super({
9
- name: optionsArg.name,
10
- taskFunction: async () => {
11
- if (!this.hasTriggered) {
12
- this.hasTriggered = true;
13
- await optionsArg.taskFunction();
14
- }
15
- },
16
- });
17
- this.hasTriggered = false;
18
- }
19
- }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2tvbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvdGFza2J1ZmZlci5jbGFzc2VzLnRhc2tvbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0seUJBQXlCLENBQUM7QUFFbkQsT0FBTyxFQUFFLElBQUksRUFBc0IsTUFBTSw4QkFBOEIsQ0FBQztBQUV4RTs7R0FFRztBQUNILE1BQU0sT0FBTyxRQUFTLFNBQVEsSUFBSTtJQUVoQyxZQUFZLFVBQTBEO1FBQ3BFLEtBQUssQ0FBQztZQUNKLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtZQUNyQixZQUFZLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO29CQUN6QixNQUFNLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDbEMsQ0FBQztZQUNILENBQUM7U0FDRixDQUFDLENBQUM7UUFWTCxpQkFBWSxHQUFZLEtBQUssQ0FBQztJQVc5QixDQUFDO0NBQ0YifQ==
@@ -1,7 +0,0 @@
1
- import { Task } from './taskbuffer.classes.task.js';
2
- export declare class Taskparallel extends Task {
3
- taskArray: Task[];
4
- constructor(optionsArg: {
5
- taskArray: Task[];
6
- });
7
- }
@@ -1,25 +0,0 @@
1
- import * as plugins from './taskbuffer.plugins.js';
2
- import { Task } from './taskbuffer.classes.task.js';
3
- export class Taskparallel extends Task {
4
- constructor(optionsArg) {
5
- const options = {
6
- ...optionsArg,
7
- ...{
8
- taskFunction: () => {
9
- const done = plugins.smartpromise.defer();
10
- const promiseArray = []; // stores promises of all tasks, since they run in parallel
11
- this.taskArray.forEach(function (taskArg) {
12
- promiseArray.push(taskArg.trigger());
13
- });
14
- Promise.all(promiseArray)
15
- .then((results) => done.resolve(results))
16
- .catch((err) => done.reject(err));
17
- return done.promise;
18
- },
19
- },
20
- };
21
- super(options);
22
- this.taskArray = optionsArg.taskArray;
23
- }
24
- }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2twYXJhbGxlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL3Rhc2tidWZmZXIuY2xhc3Nlcy50YXNrcGFyYWxsZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFcEQsTUFBTSxPQUFPLFlBQWEsU0FBUSxJQUFJO0lBRXBDLFlBQVksVUFBaUM7UUFDM0MsTUFBTSxPQUFPLEdBQUc7WUFDZCxHQUFHLFVBQVU7WUFDYixHQUFHO2dCQUNELFlBQVksRUFBRSxHQUFHLEVBQUU7b0JBQ2pCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQzFDLE1BQU0sWUFBWSxHQUFtQixFQUFFLENBQUMsQ0FBQywyREFBMkQ7b0JBQ3BHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVUsT0FBTzt3QkFDdEMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztvQkFDdkMsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUM7eUJBQ3RCLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQzt5QkFDeEMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3BDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDdEIsQ0FBQzthQUNGO1NBQ0YsQ0FBQztRQUNGLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQztJQUN4QyxDQUFDO0NBQ0YifQ==
@@ -1,30 +0,0 @@
1
- import * as plugins from './taskbuffer.plugins.js';
2
- import { Task } from './taskbuffer.classes.task.js';
3
- export declare class TaskRunner {
4
- maxParallelJobs: number;
5
- status: 'stopped' | 'running';
6
- runningTasks: plugins.lik.ObjectMap<Task>;
7
- queuedTasks: Task[];
8
- constructor();
9
- /**
10
- * adds a task to the queue
11
- */
12
- addTask(taskArg: Task): void;
13
- /**
14
- * set amount of parallel tasks
15
- * be careful, you might lose dependability of tasks
16
- */
17
- setMaxParallelJobs(maxParallelJobsArg: number): void;
18
- /**
19
- * starts the task queue
20
- */
21
- start(): Promise<void>;
22
- /**
23
- * checks whether execution is on point
24
- */
25
- checkExecution(): Promise<void>;
26
- /**
27
- * stops the task queue
28
- */
29
- stop(): Promise<void>;
30
- }
@@ -1,60 +0,0 @@
1
- import * as plugins from './taskbuffer.plugins.js';
2
- import { Task } from './taskbuffer.classes.task.js';
3
- import { logger } from './taskbuffer.logging.js';
4
- export class TaskRunner {
5
- constructor() {
6
- this.maxParallelJobs = 1;
7
- this.status = 'stopped';
8
- this.runningTasks = new plugins.lik.ObjectMap();
9
- this.queuedTasks = [];
10
- this.runningTasks.eventSubject.subscribe(async (eventArg) => {
11
- this.checkExecution();
12
- });
13
- }
14
- /**
15
- * adds a task to the queue
16
- */
17
- addTask(taskArg) {
18
- this.queuedTasks.push(taskArg);
19
- this.checkExecution();
20
- }
21
- /**
22
- * set amount of parallel tasks
23
- * be careful, you might lose dependability of tasks
24
- */
25
- setMaxParallelJobs(maxParallelJobsArg) {
26
- this.maxParallelJobs = maxParallelJobsArg;
27
- }
28
- /**
29
- * starts the task queue
30
- */
31
- async start() {
32
- this.status = 'running';
33
- }
34
- /**
35
- * checks whether execution is on point
36
- */
37
- async checkExecution() {
38
- if (this.runningTasks.getArray().length < this.maxParallelJobs &&
39
- this.status === 'running' &&
40
- this.queuedTasks.length > 0) {
41
- const nextJob = this.queuedTasks.shift();
42
- this.runningTasks.add(nextJob);
43
- try {
44
- await nextJob.trigger();
45
- }
46
- catch (err) {
47
- logger.log('error', `TaskRunner: task "${nextJob.name || 'unnamed'}" failed: ${err instanceof Error ? err.message : String(err)}`);
48
- }
49
- this.runningTasks.remove(nextJob);
50
- this.checkExecution();
51
- }
52
- }
53
- /**
54
- * stops the task queue
55
- */
56
- async stop() {
57
- this.status = 'stopped';
58
- }
59
- }
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2tydW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy90YXNrYnVmZmVyLmNsYXNzZXMudGFza3J1bm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLHlCQUF5QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFakQsTUFBTSxPQUFPLFVBQVU7SUFPckI7UUFOTyxvQkFBZSxHQUFXLENBQUMsQ0FBQztRQUM1QixXQUFNLEdBQTBCLFNBQVMsQ0FBQztRQUMxQyxpQkFBWSxHQUNqQixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFRLENBQUM7UUFDN0IsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFHOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUMxRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPLENBQUMsT0FBYTtRQUMxQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGtCQUFrQixDQUFDLGtCQUEwQjtRQUNsRCxJQUFJLENBQUMsZUFBZSxHQUFHLGtCQUFrQixDQUFDO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxjQUFjO1FBQ3pCLElBQ0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWU7WUFDMUQsSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTO1lBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFDM0IsQ0FBQztZQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDO2dCQUNILE1BQU0sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFCLENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLHFCQUFxQixPQUFPLENBQUMsSUFBSSxJQUFJLFNBQVMsYUFBYSxHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3JJLENBQUM7WUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxJQUFJO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDMUIsQ0FBQztDQUNGIn0=
@@ -1,27 +0,0 @@
1
- export interface ITaskStep {
2
- name: string;
3
- description: string;
4
- percentage: number;
5
- status: 'pending' | 'active' | 'completed';
6
- startTime?: number;
7
- endTime?: number;
8
- duration?: number;
9
- }
10
- export declare class TaskStep implements ITaskStep {
11
- name: string;
12
- description: string;
13
- percentage: number;
14
- status: 'pending' | 'active' | 'completed';
15
- startTime?: number;
16
- endTime?: number;
17
- duration?: number;
18
- constructor(config: {
19
- name: string;
20
- description: string;
21
- percentage: number;
22
- });
23
- start(): void;
24
- complete(): void;
25
- reset(): void;
26
- toJSON(): ITaskStep;
27
- }
@@ -1,37 +0,0 @@
1
- export class TaskStep {
2
- constructor(config) {
3
- this.status = 'pending';
4
- this.name = config.name;
5
- this.description = config.description;
6
- this.percentage = config.percentage;
7
- }
8
- start() {
9
- this.status = 'active';
10
- this.startTime = Date.now();
11
- }
12
- complete() {
13
- if (this.startTime) {
14
- this.endTime = Date.now();
15
- this.duration = this.endTime - this.startTime;
16
- }
17
- this.status = 'completed';
18
- }
19
- reset() {
20
- this.status = 'pending';
21
- this.startTime = undefined;
22
- this.endTime = undefined;
23
- this.duration = undefined;
24
- }
25
- toJSON() {
26
- return {
27
- name: this.name,
28
- description: this.description,
29
- percentage: this.percentage,
30
- status: this.status,
31
- startTime: this.startTime,
32
- endTime: this.endTime,
33
- duration: this.duration,
34
- };
35
- }
36
- }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5jbGFzc2VzLnRhc2tzdGVwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvdGFza2J1ZmZlci5jbGFzc2VzLnRhc2tzdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE1BQU0sT0FBTyxRQUFRO0lBU25CLFlBQVksTUFBaUU7UUFMdEUsV0FBTSxHQUF1QyxTQUFTLENBQUM7UUFNNUQsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7SUFDdEMsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztRQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2hELENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO0lBQzVCLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ3hCLENBQUM7SUFDSixDQUFDO0NBQ0YifQ==
@@ -1,47 +0,0 @@
1
- import type { ITaskStep } from './taskbuffer.classes.taskstep.js';
2
- export interface ITaskMetadata {
3
- name: string;
4
- version?: string;
5
- status: 'idle' | 'running' | 'completed' | 'failed';
6
- steps: ITaskStep[];
7
- currentStep?: string;
8
- currentProgress: number;
9
- lastRun?: Date;
10
- nextRun?: Date;
11
- runCount: number;
12
- averageDuration?: number;
13
- cronSchedule?: string;
14
- buffered?: boolean;
15
- bufferMax?: number;
16
- timeout?: number;
17
- lastError?: string;
18
- errorCount?: number;
19
- labels?: Record<string, string>;
20
- }
21
- export interface ITaskExecutionReport {
22
- taskName: string;
23
- startTime: number;
24
- endTime: number;
25
- duration: number;
26
- steps: ITaskStep[];
27
- stepsCompleted: string[];
28
- progress: number;
29
- result?: any;
30
- error?: Error;
31
- }
32
- export interface IScheduledTaskInfo {
33
- name: string;
34
- schedule: string;
35
- nextRun: Date;
36
- lastRun?: Date;
37
- steps?: ITaskStep[];
38
- metadata?: ITaskMetadata;
39
- }
40
- export type TTaskEventType = 'started' | 'step' | 'completed' | 'failed';
41
- export interface ITaskEvent {
42
- type: TTaskEventType;
43
- task: ITaskMetadata;
44
- timestamp: number;
45
- stepName?: string;
46
- error?: string;
47
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvdGFza2J1ZmZlci5pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -1,2 +0,0 @@
1
- import * as plugins from './taskbuffer.plugins.js';
2
- export declare const logger: plugins.smartlog.ConsoleLog;
@@ -1,3 +0,0 @@
1
- import * as plugins from './taskbuffer.plugins.js';
2
- export const logger = new plugins.smartlog.ConsoleLog();
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5sb2dnaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvdGFza2J1ZmZlci5sb2dnaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0seUJBQXlCLENBQUM7QUFFbkQsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyJ9
@@ -1,8 +0,0 @@
1
- import * as lik from '@push.rocks/lik';
2
- import * as smartlog from '@push.rocks/smartlog';
3
- import * as smartpromise from '@push.rocks/smartpromise';
4
- import * as smartdelay from '@push.rocks/smartdelay';
5
- import * as smartrx from '@push.rocks/smartrx';
6
- import * as smarttime from '@push.rocks/smarttime';
7
- import * as smartunique from '@push.rocks/smartunique';
8
- export { lik, smartlog, smartpromise, smartdelay, smartrx, smarttime, smartunique, };
@@ -1,9 +0,0 @@
1
- import * as lik from '@push.rocks/lik';
2
- import * as smartlog from '@push.rocks/smartlog';
3
- import * as smartpromise from '@push.rocks/smartpromise';
4
- import * as smartdelay from '@push.rocks/smartdelay';
5
- import * as smartrx from '@push.rocks/smartrx';
6
- import * as smarttime from '@push.rocks/smarttime';
7
- import * as smartunique from '@push.rocks/smartunique';
8
- export { lik, smartlog, smartpromise, smartdelay, smartrx, smarttime, smartunique, };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci5wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvdGFza2J1ZmZlci5wbHVnaW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxHQUFHLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxLQUFLLFFBQVEsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEtBQUssWUFBWSxNQUFNLDBCQUEwQixDQUFDO0FBQ3pELE9BQU8sS0FBSyxVQUFVLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxLQUFLLE9BQU8sTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEtBQUssU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBQ25ELE9BQU8sS0FBSyxXQUFXLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsT0FBTyxFQUNMLEdBQUcsRUFDSCxRQUFRLEVBQ1IsWUFBWSxFQUNaLFVBQVUsRUFDVixPQUFPLEVBQ1AsU0FBUyxFQUNULFdBQVcsR0FDWixDQUFDIn0=
@@ -1,8 +0,0 @@
1
- /**
2
- * autocreated commitinfo by @push.rocks/commitinfo
3
- */
4
- export declare const commitinfo: {
5
- name: string;
6
- version: string;
7
- description: string;
8
- };
@@ -1,9 +0,0 @@
1
- /**
2
- * autocreated commitinfo by @push.rocks/commitinfo
3
- */
4
- export const commitinfo = {
5
- name: '@push.rocks/taskbuffer',
6
- version: '4.1.0',
7
- description: 'A flexible task management library supporting TypeScript, allowing for task buffering, scheduling, and execution with dependency management.'
8
- };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsd0JBQXdCO0lBQzlCLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLFdBQVcsRUFBRSw4SUFBOEk7Q0FDNUosQ0FBQSJ9
@@ -1 +0,0 @@
1
- export {};
@@ -1,33 +0,0 @@
1
- import { html, render } from '@design.estate/dees-element';
2
- import { taskbufferDashboardDemo } from './index.js';
3
- // Main demo runner
4
- class DemoRunner {
5
- constructor() {
6
- this.init();
7
- }
8
- async init() {
9
- // Wait for DOM to be ready
10
- await this.domReady();
11
- // Render the demo
12
- this.renderDemo();
13
- }
14
- domReady() {
15
- return new Promise((resolve) => {
16
- if (document.readyState === 'complete' || document.readyState === 'interactive') {
17
- resolve();
18
- }
19
- else {
20
- document.addEventListener('DOMContentLoaded', () => resolve());
21
- }
22
- });
23
- }
24
- renderDemo() {
25
- // Get the demo function result
26
- const demoTemplate = taskbufferDashboardDemo();
27
- // Render to body
28
- render(demoTemplate, document.body);
29
- }
30
- }
31
- // Start the demo runner
32
- new DemoRunner();
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVtb3J1bm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9kZW1vcnVubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXJELG1CQUFtQjtBQUNuQixNQUFNLFVBQVU7SUFDZDtRQUNFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLDJCQUEyQjtRQUMzQixNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUV0QixrQkFBa0I7UUFDbEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxRQUFRO1FBQ2QsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQzdCLElBQUksUUFBUSxDQUFDLFVBQVUsS0FBSyxVQUFVLElBQUksUUFBUSxDQUFDLFVBQVUsS0FBSyxhQUFhLEVBQUUsQ0FBQztnQkFDaEYsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sUUFBUSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDakUsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFVBQVU7UUFDaEIsK0JBQStCO1FBQy9CLE1BQU0sWUFBWSxHQUFHLHVCQUF1QixFQUFFLENBQUM7UUFFL0MsaUJBQWlCO1FBQ2pCLE1BQU0sQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7Q0FDRjtBQUVELHdCQUF3QjtBQUN4QixJQUFJLFVBQVUsRUFBRSxDQUFDIn0=
File without changes
File without changes