@push.rocks/taskbuffer 3.1.10 → 3.4.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 (66) hide show
  1. package/LICENSE +1 -1
  2. package/dist_ts/00_commitinfo_data.js +2 -2
  3. package/dist_ts/index.d.ts +4 -1
  4. package/dist_ts/index.js +3 -1
  5. package/dist_ts/taskbuffer.classes.task.d.ts +43 -9
  6. package/dist_ts/taskbuffer.classes.task.js +105 -1
  7. package/dist_ts/taskbuffer.classes.taskmanager.d.ts +23 -6
  8. package/dist_ts/taskbuffer.classes.taskmanager.js +98 -1
  9. package/dist_ts/taskbuffer.classes.taskstep.d.ts +27 -0
  10. package/dist_ts/taskbuffer.classes.taskstep.js +37 -0
  11. package/dist_ts/taskbuffer.interfaces.d.ts +36 -0
  12. package/dist_ts/taskbuffer.interfaces.js +2 -0
  13. package/dist_ts_web/00_commitinfo_data.d.ts +8 -0
  14. package/dist_ts_web/00_commitinfo_data.js +9 -0
  15. package/dist_ts_web/ts/index.d.ts +13 -0
  16. package/dist_ts_web/ts/index.js +12 -0
  17. package/dist_ts_web/ts/taskbuffer.classes.bufferrunner.d.ts +8 -0
  18. package/dist_ts_web/ts/taskbuffer.classes.bufferrunner.js +28 -0
  19. package/dist_ts_web/ts/taskbuffer.classes.cyclecounter.d.ts +13 -0
  20. package/dist_ts_web/ts/taskbuffer.classes.cyclecounter.js +31 -0
  21. package/dist_ts_web/ts/taskbuffer.classes.distributedcoordinator.d.ts +27 -0
  22. package/dist_ts_web/ts/taskbuffer.classes.distributedcoordinator.js +5 -0
  23. package/dist_ts_web/ts/taskbuffer.classes.task.d.ts +86 -0
  24. package/dist_ts_web/ts/taskbuffer.classes.task.js +257 -0
  25. package/dist_ts_web/ts/taskbuffer.classes.taskchain.d.ts +14 -0
  26. package/dist_ts_web/ts/taskbuffer.classes.taskchain.js +51 -0
  27. package/dist_ts_web/ts/taskbuffer.classes.taskdebounced.d.ts +10 -0
  28. package/dist_ts_web/ts/taskbuffer.classes.taskdebounced.js +20 -0
  29. package/dist_ts_web/ts/taskbuffer.classes.taskmanager.d.ts +49 -0
  30. package/dist_ts_web/ts/taskbuffer.classes.taskmanager.js +208 -0
  31. package/dist_ts_web/ts/taskbuffer.classes.taskonce.d.ts +11 -0
  32. package/dist_ts_web/ts/taskbuffer.classes.taskonce.js +20 -0
  33. package/dist_ts_web/ts/taskbuffer.classes.taskparallel.d.ts +7 -0
  34. package/dist_ts_web/ts/taskbuffer.classes.taskparallel.js +23 -0
  35. package/dist_ts_web/ts/taskbuffer.classes.taskrunner.d.ts +30 -0
  36. package/dist_ts_web/ts/taskbuffer.classes.taskrunner.js +54 -0
  37. package/dist_ts_web/ts/taskbuffer.classes.taskstep.d.ts +27 -0
  38. package/dist_ts_web/ts/taskbuffer.classes.taskstep.js +37 -0
  39. package/dist_ts_web/ts/taskbuffer.interfaces.d.ts +36 -0
  40. package/dist_ts_web/ts/taskbuffer.interfaces.js +2 -0
  41. package/dist_ts_web/ts/taskbuffer.logging.d.ts +2 -0
  42. package/dist_ts_web/ts/taskbuffer.logging.js +3 -0
  43. package/dist_ts_web/ts/taskbuffer.plugins.d.ts +8 -0
  44. package/dist_ts_web/ts/taskbuffer.plugins.js +9 -0
  45. package/dist_ts_web/ts_web/00_commitinfo_data.d.ts +8 -0
  46. package/dist_ts_web/ts_web/00_commitinfo_data.js +9 -0
  47. package/dist_ts_web/ts_web/demorunner.d.ts +1 -0
  48. package/dist_ts_web/ts_web/demorunner.js +33 -0
  49. package/dist_ts_web/ts_web/elements/taskbuffer-dashboard.demo.d.ts +2 -0
  50. package/dist_ts_web/ts_web/elements/taskbuffer-dashboard.demo.js +285 -0
  51. package/dist_ts_web/ts_web/index.d.ts +2 -0
  52. package/dist_ts_web/ts_web/index.js +3 -0
  53. package/dist_ts_web/ts_web/taskbuffer-dashboard.d.ts +24 -0
  54. package/dist_ts_web/ts_web/taskbuffer-dashboard.js +557 -0
  55. package/package.json +6 -5
  56. package/readme.md +421 -643
  57. package/ts/00_commitinfo_data.ts +1 -1
  58. package/ts/index.ts +9 -1
  59. package/ts/taskbuffer.classes.task.ts +145 -18
  60. package/ts/taskbuffer.classes.taskmanager.ts +129 -9
  61. package/ts/taskbuffer.classes.taskstep.ts +57 -0
  62. package/ts/taskbuffer.interfaces.ts +39 -0
  63. package/ts_web/00_commitinfo_data.ts +8 -0
  64. package/ts_web/elements/taskbuffer-dashboard.demo.ts +311 -0
  65. package/ts_web/index.ts +12 -0
  66. package/ts_web/taskbuffer-dashboard.ts +541 -0
@@ -0,0 +1,285 @@
1
+ import { html, css, cssManager } from '@design.estate/dees-element';
2
+ import { TaskManager, Task } from '../../ts/index.js';
3
+ import '../taskbuffer-dashboard.js';
4
+ export const demoFunc = () => html `
5
+ <style>
6
+ ${css `
7
+ .demoWrapper {
8
+ box-sizing: border-box;
9
+ position: relative;
10
+ width: 100%;
11
+ min-height: 100vh;
12
+ padding: 48px;
13
+ background: ${cssManager.bdTheme('#f8f9fa', '#0a0a0a')};
14
+ }
15
+
16
+ h1 {
17
+ font-size: 32px;
18
+ font-weight: 700;
19
+ color: ${cssManager.bdTheme('#09090b', '#fafafa')};
20
+ margin-bottom: 12px;
21
+ text-align: center;
22
+ }
23
+
24
+ p {
25
+ font-size: 16px;
26
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
27
+ text-align: center;
28
+ margin-bottom: 48px;
29
+ }
30
+ `}
31
+ </style>
32
+
33
+ <div class="demoWrapper">
34
+ <h1>TaskBuffer Dashboard Demo</h1>
35
+ <p>Real-time visualization of task execution, progress tracking, and scheduling</p>
36
+
37
+ <dees-demowrapper
38
+ .title=${'Live Dashboard'}
39
+ .subtitle=${'Interactive task management dashboard with real-time updates'}
40
+ .runAfterRender=${async (element) => {
41
+ // Create TaskManager instance
42
+ const taskManager = new TaskManager();
43
+ // Get dashboard element
44
+ const dashboard = element.querySelector('taskbuffer-dashboard');
45
+ dashboard.taskManager = taskManager;
46
+ dashboard.refreshInterval = 500;
47
+ // Task counter for unique names
48
+ let taskCounter = 0;
49
+ // Helper to create random delay
50
+ const randomDelay = () => new Promise(resolve => setTimeout(resolve, Math.random() * 2000 + 500));
51
+ // Add initial demo tasks
52
+ const addDemoTasks = () => {
53
+ // Add simple task
54
+ const simpleTask = new Task({
55
+ name: `SimpleTask_${++taskCounter}`,
56
+ taskFunction: async () => {
57
+ console.log(`Executing SimpleTask_${taskCounter}`);
58
+ await randomDelay();
59
+ return `Result from SimpleTask_${taskCounter}`;
60
+ }
61
+ });
62
+ taskManager.addTask(simpleTask);
63
+ // Add task with steps
64
+ const steppedTask = new Task({
65
+ name: `SteppedTask_${++taskCounter}`,
66
+ steps: [
67
+ { name: 'init', description: 'Initializing', percentage: 20 },
68
+ { name: 'fetch', description: 'Fetching data', percentage: 30 },
69
+ { name: 'process', description: 'Processing', percentage: 35 },
70
+ { name: 'save', description: 'Saving results', percentage: 15 }
71
+ ],
72
+ taskFunction: async function () {
73
+ this.notifyStep('init');
74
+ await randomDelay();
75
+ this.notifyStep('fetch');
76
+ await randomDelay();
77
+ this.notifyStep('process');
78
+ await randomDelay();
79
+ this.notifyStep('save');
80
+ await randomDelay();
81
+ return `Completed SteppedTask_${taskCounter}`;
82
+ }
83
+ });
84
+ taskManager.addTask(steppedTask);
85
+ // Add buffered task
86
+ const bufferedTask = new Task({
87
+ name: `BufferedTask_${++taskCounter}`,
88
+ buffered: true,
89
+ bufferMax: 3,
90
+ steps: [
91
+ { name: 'buffer', description: 'Processing buffered item', percentage: 100 }
92
+ ],
93
+ taskFunction: async function (item) {
94
+ this.notifyStep('buffer');
95
+ console.log(`Processing buffered item: ${item}`);
96
+ await randomDelay();
97
+ return `Buffered task ${taskCounter} processed: ${item}`;
98
+ }
99
+ });
100
+ taskManager.addTask(bufferedTask);
101
+ };
102
+ // Add initial tasks
103
+ addDemoTasks();
104
+ // Automatically trigger some tasks
105
+ setTimeout(() => {
106
+ const tasks = taskManager.getAllTasksMetadata();
107
+ tasks.forEach(taskMeta => {
108
+ const task = taskManager.getTaskByName(taskMeta.name);
109
+ if (task && !taskMeta.name.includes('Scheduled')) {
110
+ if (taskMeta.buffered) {
111
+ // Trigger buffered task multiple times
112
+ for (let i = 0; i < 5; i++) {
113
+ task.trigger(`Data_${i}`);
114
+ }
115
+ }
116
+ else {
117
+ task.trigger();
118
+ }
119
+ }
120
+ });
121
+ }, 2000);
122
+ }}
123
+ >
124
+ <taskbuffer-dashboard></taskbuffer-dashboard>
125
+ </dees-demowrapper>
126
+
127
+ <dees-demowrapper
128
+ .title=${'Scheduled Tasks'}
129
+ .subtitle=${'Tasks scheduled with cron expressions'}
130
+ .runAfterRender=${async (element) => {
131
+ // Create TaskManager instance
132
+ const taskManager = new TaskManager();
133
+ // Get dashboard element
134
+ const dashboard = element.querySelector('taskbuffer-dashboard');
135
+ dashboard.taskManager = taskManager;
136
+ dashboard.refreshInterval = 1000;
137
+ // Add scheduled tasks
138
+ const scheduledTask1 = new Task({
139
+ name: 'HourlyBackup',
140
+ steps: [
141
+ { name: 'prepare', description: 'Preparing backup', percentage: 30 },
142
+ { name: 'backup', description: 'Creating backup', percentage: 50 },
143
+ { name: 'verify', description: 'Verifying backup', percentage: 20 }
144
+ ],
145
+ taskFunction: async function () {
146
+ this.notifyStep('prepare');
147
+ await new Promise(resolve => setTimeout(resolve, 1000));
148
+ this.notifyStep('backup');
149
+ await new Promise(resolve => setTimeout(resolve, 2000));
150
+ this.notifyStep('verify');
151
+ await new Promise(resolve => setTimeout(resolve, 500));
152
+ return 'Backup completed';
153
+ }
154
+ });
155
+ const scheduledTask2 = new Task({
156
+ name: 'DailyReport',
157
+ steps: [
158
+ { name: 'collect', description: 'Collecting data', percentage: 40 },
159
+ { name: 'analyze', description: 'Analyzing data', percentage: 40 },
160
+ { name: 'send', description: 'Sending report', percentage: 20 }
161
+ ],
162
+ taskFunction: async function () {
163
+ this.notifyStep('collect');
164
+ await new Promise(resolve => setTimeout(resolve, 1500));
165
+ this.notifyStep('analyze');
166
+ await new Promise(resolve => setTimeout(resolve, 1500));
167
+ this.notifyStep('send');
168
+ await new Promise(resolve => setTimeout(resolve, 500));
169
+ return 'Report sent';
170
+ }
171
+ });
172
+ // Schedule tasks
173
+ taskManager.addAndScheduleTask(scheduledTask1, '0 * * * *'); // Every hour
174
+ taskManager.addAndScheduleTask(scheduledTask2, '0 0 * * *'); // Daily at midnight
175
+ // Also add them as regular tasks for demo
176
+ const demoTask = new Task({
177
+ name: 'DemoScheduledExecution',
178
+ steps: [
179
+ { name: 'execute', description: 'Simulating scheduled execution', percentage: 100 }
180
+ ],
181
+ taskFunction: async function () {
182
+ this.notifyStep('execute');
183
+ await new Promise(resolve => setTimeout(resolve, 1000));
184
+ // Trigger scheduled tasks for demo
185
+ scheduledTask1.trigger();
186
+ scheduledTask2.trigger();
187
+ return 'Triggered scheduled tasks for demo';
188
+ }
189
+ });
190
+ taskManager.addTask(demoTask);
191
+ // Trigger demo after 2 seconds
192
+ setTimeout(() => {
193
+ demoTask.trigger();
194
+ }, 2000);
195
+ }}
196
+ >
197
+ <taskbuffer-dashboard></taskbuffer-dashboard>
198
+ </dees-demowrapper>
199
+
200
+ <dees-demowrapper
201
+ .title=${'Task Execution Control'}
202
+ .subtitle=${'Interactive controls for task management'}
203
+ .runAfterRender=${async (element) => {
204
+ // Create TaskManager instance
205
+ const taskManager = new TaskManager();
206
+ // Get dashboard element
207
+ const dashboard = element.querySelector('taskbuffer-dashboard');
208
+ dashboard.taskManager = taskManager;
209
+ dashboard.refreshInterval = 300;
210
+ // Add control buttons
211
+ const controlsDiv = document.createElement('div');
212
+ controlsDiv.style.cssText = `
213
+ display: flex;
214
+ gap: 8px;
215
+ margin-bottom: 16px;
216
+ flex-wrap: wrap;
217
+ `;
218
+ const createButton = (text, onClick, style = '') => {
219
+ const button = document.createElement('button');
220
+ button.textContent = text;
221
+ button.style.cssText = `
222
+ padding: 8px 16px;
223
+ border: none;
224
+ border-radius: 6px;
225
+ cursor: pointer;
226
+ font-size: 14px;
227
+ transition: all 0.2s;
228
+ ${style}
229
+ `;
230
+ button.onclick = onClick;
231
+ return button;
232
+ };
233
+ let taskCounter = 0;
234
+ // Add task button
235
+ controlsDiv.appendChild(createButton('Add Task', () => {
236
+ const task = new Task({
237
+ name: `Task_${++taskCounter}`,
238
+ steps: [
239
+ { name: 'step1', description: 'Step 1', percentage: 33 },
240
+ { name: 'step2', description: 'Step 2', percentage: 33 },
241
+ { name: 'step3', description: 'Step 3', percentage: 34 }
242
+ ],
243
+ taskFunction: async function () {
244
+ for (const step of ['step1', 'step2', 'step3']) {
245
+ this.notifyStep(step);
246
+ await new Promise(resolve => setTimeout(resolve, 1000));
247
+ }
248
+ return `Task_${taskCounter} completed`;
249
+ }
250
+ });
251
+ taskManager.addTask(task);
252
+ }, 'background: #3b82f6; color: white;'));
253
+ // Trigger all button
254
+ controlsDiv.appendChild(createButton('Trigger All', () => {
255
+ const tasks = taskManager.getAllTasksMetadata();
256
+ tasks.forEach(taskMeta => {
257
+ const task = taskManager.getTaskByName(taskMeta.name);
258
+ if (task) {
259
+ task.trigger();
260
+ }
261
+ });
262
+ }, 'background: #22c55e; color: white;'));
263
+ // Clear all button
264
+ controlsDiv.appendChild(createButton('Clear All', () => {
265
+ const tasks = taskManager.getAllTasksMetadata();
266
+ tasks.forEach(taskMeta => {
267
+ const task = taskManager.getTaskByName(taskMeta.name);
268
+ if (task) {
269
+ taskManager.taskMap.remove(task);
270
+ taskManager.descheduleTaskByName(taskMeta.name);
271
+ }
272
+ });
273
+ }, 'background: #ef4444; color: white;'));
274
+ element.insertBefore(controlsDiv, dashboard);
275
+ // Add some initial tasks
276
+ for (let i = 0; i < 3; i++) {
277
+ controlsDiv.querySelector('button').click();
278
+ }
279
+ }}
280
+ >
281
+ <taskbuffer-dashboard></taskbuffer-dashboard>
282
+ </dees-demowrapper>
283
+ </div>
284
+ `;
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci1kYXNoYm9hcmQuZGVtby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzX3dlYi9lbGVtZW50cy90YXNrYnVmZmVyLWRhc2hib2FyZC5kZW1vLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyw0QkFBNEIsQ0FBQztBQUVwQyxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFBOztNQUU1QixHQUFHLENBQUE7Ozs7Ozs7c0JBT2EsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDOzs7Ozs7aUJBTTdDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQzs7Ozs7OztpQkFPeEMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDOzs7O0tBSXBEOzs7Ozs7OztlQVFVLGdCQUFnQjtrQkFDYiw4REFBOEQ7d0JBQ3hELEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtJQUNsQyw4QkFBOEI7SUFDOUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUV0Qyx3QkFBd0I7SUFDeEIsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ2hFLFNBQVMsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO0lBQ3BDLFNBQVMsQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDO0lBRWhDLGdDQUFnQztJQUNoQyxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7SUFFcEIsZ0NBQWdDO0lBQ2hDLE1BQU0sV0FBVyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksT0FBTyxD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
@@ -0,0 +1,2 @@
1
+ export * from './taskbuffer-dashboard.js';
2
+ export type { TaskManager, Task, ITaskMetadata, ITaskExecutionReport, IScheduledTaskInfo, ITaskStep } from '../ts/index.js';
@@ -0,0 +1,3 @@
1
+ // Export web components
2
+ export * from './taskbuffer-dashboard.js';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0JBQXdCO0FBQ3hCLGNBQWMsMkJBQTJCLENBQUMifQ==
@@ -0,0 +1,24 @@
1
+ import { DeesElement } from '@design.estate/dees-element';
2
+ import type { TaskManager } from '../ts/index.js';
3
+ /**
4
+ * A web component that displays TaskManager tasks with progress visualization
5
+ */
6
+ export declare class TaskbufferDashboard extends DeesElement {
7
+ taskManager: TaskManager | null;
8
+ refreshInterval: number;
9
+ private tasks;
10
+ private scheduledTasks;
11
+ private isRunning;
12
+ private refreshTimer;
13
+ static styles: import("@design.estate/dees-element").CSSResult[];
14
+ connectedCallback(): Promise<void>;
15
+ disconnectedCallback(): Promise<void>;
16
+ private startRefreshing;
17
+ private stopRefreshing;
18
+ private updateData;
19
+ private formatNextRun;
20
+ private formatDuration;
21
+ render(): import("@design.estate/dees-element").TemplateResult<1>;
22
+ private renderTaskCard;
23
+ private renderScheduledTaskCard;
24
+ }