@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,557 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { DeesElement, customElement, html, css, property, state, cssManager } from '@design.estate/dees-element';
11
+ /**
12
+ * A web component that displays TaskManager tasks with progress visualization
13
+ */
14
+ let TaskbufferDashboard = class TaskbufferDashboard extends DeesElement {
15
+ constructor() {
16
+ super(...arguments);
17
+ // Properties
18
+ this.taskManager = null;
19
+ this.refreshInterval = 1000; // milliseconds
20
+ // Internal state
21
+ this.tasks = [];
22
+ this.scheduledTasks = [];
23
+ this.isRunning = false;
24
+ }
25
+ // Styles
26
+ static { this.styles = [
27
+ cssManager.defaultStyles,
28
+ css `
29
+ :host {
30
+ display: block;
31
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
32
+ }
33
+
34
+ .dashboard-container {
35
+ padding: 24px;
36
+ background: ${cssManager.bdTheme('#ffffff', '#0a0a0a')};
37
+ min-height: 100vh;
38
+ }
39
+
40
+ .dashboard-header {
41
+ margin-bottom: 32px;
42
+ }
43
+
44
+ .dashboard-title {
45
+ font-size: 28px;
46
+ font-weight: 700;
47
+ color: ${cssManager.bdTheme('#09090b', '#fafafa')};
48
+ margin-bottom: 8px;
49
+ display: flex;
50
+ align-items: center;
51
+ gap: 12px;
52
+ }
53
+
54
+ .status-indicator {
55
+ width: 12px;
56
+ height: 12px;
57
+ border-radius: 50%;
58
+ background: ${cssManager.bdTheme('#22c55e', '#22c55e')};
59
+ animation: pulse 2s infinite;
60
+ }
61
+
62
+ .status-indicator.inactive {
63
+ background: ${cssManager.bdTheme('#94a3b8', '#475569')};
64
+ animation: none;
65
+ }
66
+
67
+ @keyframes pulse {
68
+ 0%, 100% {
69
+ opacity: 1;
70
+ }
71
+ 50% {
72
+ opacity: 0.5;
73
+ }
74
+ }
75
+
76
+ .dashboard-subtitle {
77
+ font-size: 14px;
78
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
79
+ }
80
+
81
+ .tasks-section {
82
+ margin-bottom: 48px;
83
+ }
84
+
85
+ .section-title {
86
+ font-size: 20px;
87
+ font-weight: 600;
88
+ color: ${cssManager.bdTheme('#18181b', '#e4e4e7')};
89
+ margin-bottom: 16px;
90
+ }
91
+
92
+ .tasks-grid {
93
+ display: grid;
94
+ grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
95
+ gap: 16px;
96
+ }
97
+
98
+ .task-card {
99
+ background: ${cssManager.bdTheme('#f8fafc', '#18181b')};
100
+ border: 1px solid ${cssManager.bdTheme('#e2e8f0', '#27272a')};
101
+ border-radius: 12px;
102
+ padding: 20px;
103
+ transition: all 0.2s ease;
104
+ }
105
+
106
+ .task-card:hover {
107
+ transform: translateY(-2px);
108
+ box-shadow: 0 4px 12px ${cssManager.bdTheme('rgba(0,0,0,0.1)', 'rgba(0,0,0,0.3)')};
109
+ }
110
+
111
+ .task-header {
112
+ display: flex;
113
+ justify-content: space-between;
114
+ align-items: flex-start;
115
+ margin-bottom: 12px;
116
+ }
117
+
118
+ .task-name {
119
+ font-size: 16px;
120
+ font-weight: 600;
121
+ color: ${cssManager.bdTheme('#0f172a', '#f1f5f9')};
122
+ }
123
+
124
+ .task-status {
125
+ display: inline-block;
126
+ padding: 4px 8px;
127
+ border-radius: 6px;
128
+ font-size: 11px;
129
+ font-weight: 600;
130
+ text-transform: uppercase;
131
+ letter-spacing: 0.5px;
132
+ }
133
+
134
+ .task-status.idle {
135
+ background: ${cssManager.bdTheme('#f1f5f9', '#27272a')};
136
+ color: ${cssManager.bdTheme('#64748b', '#94a3b8')};
137
+ }
138
+
139
+ .task-status.running {
140
+ background: ${cssManager.bdTheme('#dbeafe', '#1e3a8a')};
141
+ color: ${cssManager.bdTheme('#1e40af', '#93c5fd')};
142
+ }
143
+
144
+ .task-status.completed {
145
+ background: ${cssManager.bdTheme('#dcfce7', '#14532d')};
146
+ color: ${cssManager.bdTheme('#15803d', '#86efac')};
147
+ }
148
+
149
+ .task-status.failed {
150
+ background: ${cssManager.bdTheme('#fee2e2', '#7f1d1d')};
151
+ color: ${cssManager.bdTheme('#dc2626', '#fca5a5')};
152
+ }
153
+
154
+ .task-info {
155
+ display: flex;
156
+ gap: 16px;
157
+ margin-bottom: 16px;
158
+ font-size: 13px;
159
+ color: ${cssManager.bdTheme('#64748b', '#94a3b8')};
160
+ }
161
+
162
+ .task-info-item {
163
+ display: flex;
164
+ align-items: center;
165
+ gap: 4px;
166
+ }
167
+
168
+ .task-info-icon {
169
+ width: 14px;
170
+ height: 14px;
171
+ opacity: 0.7;
172
+ }
173
+
174
+ .progress-container {
175
+ margin-bottom: 16px;
176
+ }
177
+
178
+ .progress-label {
179
+ display: flex;
180
+ justify-content: space-between;
181
+ margin-bottom: 8px;
182
+ font-size: 13px;
183
+ color: ${cssManager.bdTheme('#475569', '#cbd5e1')};
184
+ }
185
+
186
+ .progress-bar {
187
+ height: 8px;
188
+ background: ${cssManager.bdTheme('#e2e8f0', '#27272a')};
189
+ border-radius: 4px;
190
+ overflow: hidden;
191
+ position: relative;
192
+ }
193
+
194
+ .progress-fill {
195
+ height: 100%;
196
+ background: linear-gradient(90deg, #3b82f6, #6366f1);
197
+ border-radius: 4px;
198
+ transition: width 0.3s ease;
199
+ position: relative;
200
+ overflow: hidden;
201
+ }
202
+
203
+ .progress-fill::after {
204
+ content: '';
205
+ position: absolute;
206
+ top: 0;
207
+ left: 0;
208
+ right: 0;
209
+ bottom: 0;
210
+ background: linear-gradient(
211
+ 90deg,
212
+ transparent,
213
+ rgba(255, 255, 255, 0.3),
214
+ transparent
215
+ );
216
+ animation: shimmer 2s infinite;
217
+ }
218
+
219
+ @keyframes shimmer {
220
+ 0% {
221
+ transform: translateX(-100%);
222
+ }
223
+ 100% {
224
+ transform: translateX(100%);
225
+ }
226
+ }
227
+
228
+ .steps-container {
229
+ border-top: 1px solid ${cssManager.bdTheme('#e2e8f0', '#27272a')};
230
+ padding-top: 12px;
231
+ }
232
+
233
+ .steps-title {
234
+ font-size: 12px;
235
+ font-weight: 600;
236
+ color: ${cssManager.bdTheme('#64748b', '#94a3b8')};
237
+ margin-bottom: 8px;
238
+ text-transform: uppercase;
239
+ letter-spacing: 0.5px;
240
+ }
241
+
242
+ .step-item {
243
+ display: flex;
244
+ align-items: center;
245
+ gap: 8px;
246
+ padding: 6px 0;
247
+ font-size: 13px;
248
+ }
249
+
250
+ .step-indicator {
251
+ width: 20px;
252
+ height: 20px;
253
+ border-radius: 50%;
254
+ display: flex;
255
+ align-items: center;
256
+ justify-content: center;
257
+ font-size: 10px;
258
+ font-weight: 600;
259
+ flex-shrink: 0;
260
+ }
261
+
262
+ .step-indicator.pending {
263
+ background: ${cssManager.bdTheme('#f1f5f9', '#27272a')};
264
+ color: ${cssManager.bdTheme('#94a3b8', '#64748b')};
265
+ border: 2px solid ${cssManager.bdTheme('#cbd5e1', '#3f3f46')};
266
+ }
267
+
268
+ .step-indicator.active {
269
+ background: linear-gradient(135deg, #3b82f6, #6366f1);
270
+ color: white;
271
+ animation: pulse 1.5s infinite;
272
+ }
273
+
274
+ .step-indicator.completed {
275
+ background: ${cssManager.bdTheme('#22c55e', '#22c55e')};
276
+ color: white;
277
+ }
278
+
279
+ .step-details {
280
+ flex: 1;
281
+ }
282
+
283
+ .step-name {
284
+ font-weight: 500;
285
+ color: ${cssManager.bdTheme('#1e293b', '#e2e8f0')};
286
+ }
287
+
288
+ .step-description {
289
+ font-size: 11px;
290
+ color: ${cssManager.bdTheme('#64748b', '#94a3b8')};
291
+ margin-top: 2px;
292
+ }
293
+
294
+ .step-percentage {
295
+ font-size: 11px;
296
+ font-weight: 600;
297
+ color: ${cssManager.bdTheme('#94a3b8', '#64748b')};
298
+ }
299
+
300
+ .empty-state {
301
+ text-align: center;
302
+ padding: 48px;
303
+ color: ${cssManager.bdTheme('#94a3b8', '#64748b')};
304
+ }
305
+
306
+ .empty-state-icon {
307
+ width: 64px;
308
+ height: 64px;
309
+ margin: 0 auto 16px;
310
+ opacity: 0.3;
311
+ }
312
+
313
+ .empty-state-text {
314
+ font-size: 16px;
315
+ margin-bottom: 8px;
316
+ }
317
+
318
+ .empty-state-subtext {
319
+ font-size: 14px;
320
+ color: ${cssManager.bdTheme('#cbd5e1', '#475569')};
321
+ }
322
+
323
+ .scheduled-section {
324
+ margin-top: 32px;
325
+ }
326
+
327
+ .schedule-info {
328
+ display: flex;
329
+ align-items: center;
330
+ gap: 8px;
331
+ margin-top: 8px;
332
+ font-size: 12px;
333
+ color: ${cssManager.bdTheme('#64748b', '#94a3b8')};
334
+ }
335
+
336
+ .schedule-icon {
337
+ width: 14px;
338
+ height: 14px;
339
+ }
340
+ `,
341
+ ]; }
342
+ // Lifecycle
343
+ async connectedCallback() {
344
+ await super.connectedCallback();
345
+ this.startRefreshing();
346
+ }
347
+ async disconnectedCallback() {
348
+ await super.disconnectedCallback();
349
+ this.stopRefreshing();
350
+ }
351
+ // Methods
352
+ startRefreshing() {
353
+ if (this.refreshTimer) {
354
+ clearInterval(this.refreshTimer);
355
+ }
356
+ this.updateData();
357
+ this.refreshTimer = setInterval(() => {
358
+ this.updateData();
359
+ }, this.refreshInterval);
360
+ this.isRunning = true;
361
+ }
362
+ stopRefreshing() {
363
+ if (this.refreshTimer) {
364
+ clearInterval(this.refreshTimer);
365
+ this.refreshTimer = null;
366
+ }
367
+ this.isRunning = false;
368
+ }
369
+ updateData() {
370
+ if (!this.taskManager) {
371
+ this.tasks = [];
372
+ this.scheduledTasks = [];
373
+ return;
374
+ }
375
+ this.tasks = this.taskManager.getAllTasksMetadata();
376
+ this.scheduledTasks = this.taskManager.getScheduledTasks();
377
+ }
378
+ formatNextRun(date) {
379
+ const now = new Date();
380
+ const diff = date.getTime() - now.getTime();
381
+ if (diff < 0)
382
+ return 'Past due';
383
+ if (diff < 60000)
384
+ return 'Less than a minute';
385
+ if (diff < 3600000)
386
+ return `${Math.floor(diff / 60000)} minutes`;
387
+ if (diff < 86400000)
388
+ return `${Math.floor(diff / 3600000)} hours`;
389
+ return `${Math.floor(diff / 86400000)} days`;
390
+ }
391
+ formatDuration(ms) {
392
+ if (!ms)
393
+ return '-';
394
+ if (ms < 1000)
395
+ return `${ms}ms`;
396
+ if (ms < 60000)
397
+ return `${(ms / 1000).toFixed(1)}s`;
398
+ return `${(ms / 60000).toFixed(1)}m`;
399
+ }
400
+ // Render
401
+ render() {
402
+ return html `
403
+ <div class="dashboard-container">
404
+ <div class="dashboard-header">
405
+ <div class="dashboard-title">
406
+ <span>TaskBuffer Dashboard</span>
407
+ <span class="status-indicator ${this.isRunning ? '' : 'inactive'}"></span>
408
+ </div>
409
+ <div class="dashboard-subtitle">
410
+ ${this.tasks.length} task${this.tasks.length !== 1 ? 's' : ''} registered
411
+ ${this.scheduledTasks.length > 0 ? ` • ${this.scheduledTasks.length} scheduled` : ''}
412
+ </div>
413
+ </div>
414
+
415
+ <div class="tasks-section">
416
+ <h2 class="section-title">Active Tasks</h2>
417
+
418
+ ${this.tasks.length > 0 ? html `
419
+ <div class="tasks-grid">
420
+ ${this.tasks.map(task => this.renderTaskCard(task))}
421
+ </div>
422
+ ` : html `
423
+ <div class="empty-state">
424
+ <svg class="empty-state-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
425
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
426
+ d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2" />
427
+ </svg>
428
+ <div class="empty-state-text">No tasks registered</div>
429
+ <div class="empty-state-subtext">Tasks will appear here when added to the TaskManager</div>
430
+ </div>
431
+ `}
432
+ </div>
433
+
434
+ ${this.scheduledTasks.length > 0 ? html `
435
+ <div class="scheduled-section">
436
+ <h2 class="section-title">Scheduled Tasks</h2>
437
+ <div class="tasks-grid">
438
+ ${this.scheduledTasks.map(task => this.renderScheduledTaskCard(task))}
439
+ </div>
440
+ </div>
441
+ ` : ''}
442
+ </div>
443
+ `;
444
+ }
445
+ renderTaskCard(task) {
446
+ return html `
447
+ <div class="task-card">
448
+ <div class="task-header">
449
+ <div class="task-name">${task.name || 'Unnamed Task'}</div>
450
+ <div class="task-status ${task.status}">${task.status}</div>
451
+ </div>
452
+
453
+ <div class="task-info">
454
+ <div class="task-info-item">
455
+ <svg class="task-info-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
456
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
457
+ d="M13 10V3L4 14h7v7l9-11h-7z" />
458
+ </svg>
459
+ <span>Run ${task.runCount || 0} times</span>
460
+ </div>
461
+ ${task.buffered ? html `
462
+ <div class="task-info-item">
463
+ <svg class="task-info-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
464
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
465
+ d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" />
466
+ </svg>
467
+ <span>Buffer: ${task.bufferMax || 0}</span>
468
+ </div>
469
+ ` : ''}
470
+ </div>
471
+
472
+ ${task.steps && task.steps.length > 0 ? html `
473
+ <div class="progress-container">
474
+ <div class="progress-label">
475
+ <span>Progress</span>
476
+ <span>${task.currentProgress || 0}%</span>
477
+ </div>
478
+ <div class="progress-bar">
479
+ <div class="progress-fill" style="width: ${task.currentProgress || 0}%"></div>
480
+ </div>
481
+ </div>
482
+
483
+ <div class="steps-container">
484
+ <div class="steps-title">Steps</div>
485
+ ${task.steps.map(step => html `
486
+ <div class="step-item">
487
+ <div class="step-indicator ${step.status}">
488
+ ${step.status === 'completed' ? '✓' :
489
+ step.status === 'active' ? '•' :
490
+ ''}
491
+ </div>
492
+ <div class="step-details">
493
+ <div class="step-name">${step.name}</div>
494
+ ${step.description ? html `
495
+ <div class="step-description">${step.description}</div>
496
+ ` : ''}
497
+ </div>
498
+ <div class="step-percentage">${step.percentage}%</div>
499
+ </div>
500
+ `)}
501
+ </div>
502
+ ` : ''}
503
+ </div>
504
+ `;
505
+ }
506
+ renderScheduledTaskCard(task) {
507
+ return html `
508
+ <div class="task-card">
509
+ <div class="task-header">
510
+ <div class="task-name">${task.name}</div>
511
+ <div class="task-status idle">scheduled</div>
512
+ </div>
513
+
514
+ <div class="schedule-info">
515
+ <svg class="schedule-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
516
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
517
+ d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" />
518
+ </svg>
519
+ <span>Next run: ${this.formatNextRun(task.nextRun)}</span>
520
+ </div>
521
+
522
+ <div class="schedule-info">
523
+ <svg class="schedule-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
524
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
525
+ d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" />
526
+ </svg>
527
+ <span>Schedule: ${task.schedule}</span>
528
+ </div>
529
+ </div>
530
+ `;
531
+ }
532
+ };
533
+ __decorate([
534
+ property({ type: Object }),
535
+ __metadata("design:type", Function)
536
+ ], TaskbufferDashboard.prototype, "taskManager", void 0);
537
+ __decorate([
538
+ property({ type: Number }),
539
+ __metadata("design:type", Number)
540
+ ], TaskbufferDashboard.prototype, "refreshInterval", void 0);
541
+ __decorate([
542
+ state(),
543
+ __metadata("design:type", Array)
544
+ ], TaskbufferDashboard.prototype, "tasks", void 0);
545
+ __decorate([
546
+ state(),
547
+ __metadata("design:type", Array)
548
+ ], TaskbufferDashboard.prototype, "scheduledTasks", void 0);
549
+ __decorate([
550
+ state(),
551
+ __metadata("design:type", Boolean)
552
+ ], TaskbufferDashboard.prototype, "isRunning", void 0);
553
+ TaskbufferDashboard = __decorate([
554
+ customElement('taskbuffer-dashboard')
555
+ ], TaskbufferDashboard);
556
+ export { TaskbufferDashboard };
557
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFza2J1ZmZlci1kYXNoYm9hcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvdGFza2J1ZmZlci1kYXNoYm9hcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBR2pIOztHQUVHO0FBRUksSUFBTSxtQkFBbUIsR0FBekIsTUFBTSxtQkFBb0IsU0FBUSxXQUFXO0lBQTdDOztRQUNMLGFBQWE7UUFFTixnQkFBVyxHQUF1QixJQUFJLENBQUM7UUFHdkMsb0JBQWUsR0FBVyxJQUFJLENBQUMsQ0FBQyxlQUFlO1FBRXRELGlCQUFpQjtRQUVULFVBQUssR0FBb0IsRUFBRSxDQUFDO1FBRzVCLG1CQUFjLEdBQXlCLEVBQUUsQ0FBQztRQUcxQyxjQUFTLEdBQVksS0FBSyxDQUFDO0lBcWdCckMsQ0FBQztJQWpnQkMsU0FBUzthQUNGLFdBQU0sR0FBRztRQUNkLFVBQVUsQ0FBQyxhQUFhO1FBQ3hCLEdBQUcsQ0FBQTs7Ozs7Ozs7c0JBUWUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDOzs7Ozs7Ozs7OztpQkFXN0MsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDOzs7Ozs7Ozs7OztzQkFXbkMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDOzs7OztzQkFLeEMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7aUJBZTdDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQzs7Ozs7Ozs7OztpQkFVeEMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDOzs7Ozs7Ozs7Oztz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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@push.rocks/taskbuffer",
3
- "version": "3.1.10",
3
+ "version": "3.4.0",
4
4
  "private": false,
5
5
  "description": "A flexible task management library supporting TypeScript, allowing for task buffering, scheduling, and execution with dependency management.",
6
6
  "main": "dist_ts/index.js",
@@ -29,19 +29,20 @@
29
29
  },
30
30
  "homepage": "https://code.foss.global/push.rocks/taskbuffer#readme",
31
31
  "dependencies": {
32
+ "@design.estate/dees-element": "^2.1.2",
32
33
  "@push.rocks/lik": "^6.0.5",
33
34
  "@push.rocks/smartdelay": "^3.0.5",
34
- "@push.rocks/smartlog": "^3.0.3",
35
+ "@push.rocks/smartlog": "^3.1.9",
35
36
  "@push.rocks/smartpromise": "^4.0.3",
36
37
  "@push.rocks/smartrx": "^3.0.6",
37
38
  "@push.rocks/smarttime": "^4.0.6",
38
39
  "@push.rocks/smartunique": "^3.0.6"
39
40
  },
40
41
  "devDependencies": {
41
- "@git.zone/tsbuild": "^2.1.66",
42
+ "@git.zone/tsbuild": "^2.6.8",
42
43
  "@git.zone/tsbundle": "^2.0.8",
43
44
  "@git.zone/tsrun": "^1.2.44",
44
- "@git.zone/tstest": "^2.3.5",
45
+ "@git.zone/tstest": "^2.3.6",
45
46
  "@types/node": "^20.8.7"
46
47
  },
47
48
  "files": [
@@ -61,7 +62,7 @@
61
62
  ],
62
63
  "scripts": {
63
64
  "test": "(tstest test/ --verbose --logfile --timeout 120)",
64
- "build": "(tsbuild --web && tsbundle npm)",
65
+ "build": "(tsbuild tsfolders)",
65
66
  "buildDocs": "tsdoc"
66
67
  }
67
68
  }