@calmo/task-runner 3.8.0 → 3.8.2
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.
- package/CHANGELOG.md +10 -0
- package/coverage/coverage-final.json +5 -4
- package/coverage/index.html +18 -18
- package/coverage/lcov-report/index.html +18 -18
- package/coverage/lcov-report/src/EventBus.ts.html +70 -34
- package/coverage/lcov-report/src/TaskGraphValidationError.ts.html +1 -1
- package/coverage/lcov-report/src/TaskGraphValidator.ts.html +120 -60
- package/coverage/lcov-report/src/TaskRunner.ts.html +78 -63
- package/coverage/lcov-report/src/TaskRunnerBuilder.ts.html +1 -1
- package/coverage/lcov-report/src/TaskRunnerExecutionConfig.ts.html +1 -1
- package/coverage/lcov-report/src/TaskStateManager.ts.html +17 -29
- package/coverage/lcov-report/src/WorkflowExecutor.ts.html +1 -1
- package/coverage/lcov-report/src/contracts/ErrorTypes.ts.html +103 -0
- package/coverage/lcov-report/src/contracts/RunnerEvents.ts.html +1 -1
- package/coverage/lcov-report/src/contracts/index.html +23 -8
- package/coverage/lcov-report/src/index.html +13 -13
- package/coverage/lcov-report/src/strategies/DryRunExecutionStrategy.ts.html +1 -1
- package/coverage/lcov-report/src/strategies/RetryingExecutionStrategy.ts.html +1 -1
- package/coverage/lcov-report/src/strategies/StandardExecutionStrategy.ts.html +1 -1
- package/coverage/lcov-report/src/strategies/index.html +1 -1
- package/coverage/lcov.info +238 -213
- package/coverage/src/EventBus.ts.html +70 -34
- package/coverage/src/TaskGraphValidationError.ts.html +1 -1
- package/coverage/src/TaskGraphValidator.ts.html +120 -60
- package/coverage/src/TaskRunner.ts.html +78 -63
- package/coverage/src/TaskRunnerBuilder.ts.html +1 -1
- package/coverage/src/TaskRunnerExecutionConfig.ts.html +1 -1
- package/coverage/src/TaskStateManager.ts.html +17 -29
- package/coverage/src/WorkflowExecutor.ts.html +1 -1
- package/coverage/src/contracts/ErrorTypes.ts.html +103 -0
- package/coverage/src/contracts/RunnerEvents.ts.html +1 -1
- package/coverage/src/contracts/index.html +23 -8
- package/coverage/src/index.html +13 -13
- package/coverage/src/strategies/DryRunExecutionStrategy.ts.html +1 -1
- package/coverage/src/strategies/RetryingExecutionStrategy.ts.html +1 -1
- package/coverage/src/strategies/StandardExecutionStrategy.ts.html +1 -1
- package/coverage/src/strategies/index.html +1 -1
- package/dist/EventBus.js +11 -2
- package/dist/EventBus.js.map +1 -1
- package/dist/TaskGraphValidator.d.ts +3 -0
- package/dist/TaskGraphValidator.js +33 -26
- package/dist/TaskGraphValidator.js.map +1 -1
- package/dist/TaskRunner.d.ts +4 -0
- package/dist/TaskRunner.js +38 -44
- package/dist/TaskRunner.js.map +1 -1
- package/dist/TaskStateManager.js +1 -5
- package/dist/TaskStateManager.js.map +1 -1
- package/dist/contracts/ErrorTypes.d.ts +6 -0
- package/dist/contracts/ErrorTypes.js +7 -0
- package/dist/contracts/ErrorTypes.js.map +1 -0
- package/dist/contracts/ValidationError.d.ts +2 -1
- package/package.json +1 -1
- package/src/EventBus.ts +27 -15
- package/src/TaskGraphValidator.ts +52 -32
- package/src/TaskRunner.ts +51 -46
- package/src/TaskStateManager.ts +1 -5
- package/src/contracts/ErrorTypes.ts +6 -0
- package/src/contracts/ValidationError.ts +10 -1
- package/test-report.xml +152 -128
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
26
|
<span class="strong">100% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>48/48</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -265,7 +265,12 @@
|
|
|
265
265
|
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
266
|
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
267
|
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
-
<a name='L203'></a><a href='#L203'>203</a
|
|
268
|
+
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
+
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
+
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
+
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
+
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
+
<a name='L208'></a><a href='#L208'>208</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
269
274
|
<span class="cline-any cline-neutral"> </span>
|
|
270
275
|
<span class="cline-any cline-neutral"> </span>
|
|
271
276
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -346,23 +351,14 @@
|
|
|
346
351
|
<span class="cline-any cline-neutral"> </span>
|
|
347
352
|
<span class="cline-any cline-yes">5x</span>
|
|
348
353
|
<span class="cline-any cline-neutral"> </span>
|
|
349
|
-
<span class="cline-any cline-neutral"> </span>
|
|
350
|
-
<span class="cline-any cline-neutral"> </span>
|
|
351
|
-
<span class="cline-any cline-neutral"> </span>
|
|
352
|
-
<span class="cline-any cline-neutral"> </span>
|
|
353
|
-
<span class="cline-any cline-neutral"> </span>
|
|
354
|
-
<span class="cline-any cline-yes">15x</span>
|
|
355
354
|
<span class="cline-any cline-yes">27x</span>
|
|
356
355
|
<span class="cline-any cline-neutral"> </span>
|
|
357
|
-
<span class="cline-any cline-neutral"> </span>
|
|
358
356
|
<span class="cline-any cline-yes">5x</span>
|
|
359
|
-
<span class="cline-any cline-neutral"> </span>
|
|
360
|
-
<span class="cline-any cline-neutral"> </span>
|
|
361
|
-
<span class="cline-any cline-neutral"> </span>
|
|
362
357
|
<span class="cline-any cline-yes">15x</span>
|
|
363
358
|
<span class="cline-any cline-neutral"> </span>
|
|
364
359
|
<span class="cline-any cline-neutral"> </span>
|
|
365
360
|
<span class="cline-any cline-neutral"> </span>
|
|
361
|
+
<span class="cline-any cline-neutral"> </span>
|
|
366
362
|
<span class="cline-any cline-yes">5x</span>
|
|
367
363
|
<span class="cline-any cline-yes">15x</span>
|
|
368
364
|
<span class="cline-any cline-yes">5x</span>
|
|
@@ -426,15 +422,32 @@
|
|
|
426
422
|
<span class="cline-any cline-neutral"> </span>
|
|
427
423
|
<span class="cline-any cline-neutral"> </span>
|
|
428
424
|
<span class="cline-any cline-neutral"> </span>
|
|
429
|
-
<span class="cline-any cline-neutral"> </span>
|
|
430
425
|
<span class="cline-any cline-yes">58x</span>
|
|
431
426
|
<span class="cline-any cline-yes">5x</span>
|
|
432
|
-
<span class="cline-any cline-yes">5x</span>
|
|
433
|
-
<span class="cline-any cline-yes">3x</span>
|
|
434
427
|
<span class="cline-any cline-neutral"> </span>
|
|
435
428
|
<span class="cline-any cline-neutral"> </span>
|
|
436
429
|
<span class="cline-any cline-neutral"> </span>
|
|
437
430
|
<span class="cline-any cline-neutral"> </span>
|
|
431
|
+
<span class="cline-any cline-neutral"> </span>
|
|
432
|
+
<span class="cline-any cline-neutral"> </span>
|
|
433
|
+
<span class="cline-any cline-yes">44x</span>
|
|
434
|
+
<span class="cline-any cline-neutral"> </span>
|
|
435
|
+
<span class="cline-any cline-neutral"> </span>
|
|
436
|
+
<span class="cline-any cline-neutral"> </span>
|
|
437
|
+
<span class="cline-any cline-neutral"> </span>
|
|
438
|
+
<span class="cline-any cline-neutral"> </span>
|
|
439
|
+
<span class="cline-any cline-neutral"> </span>
|
|
440
|
+
<span class="cline-any cline-neutral"> </span>
|
|
441
|
+
<span class="cline-any cline-neutral"> </span>
|
|
442
|
+
<span class="cline-any cline-neutral"> </span>
|
|
443
|
+
<span class="cline-any cline-neutral"> </span>
|
|
444
|
+
<span class="cline-any cline-neutral"> </span>
|
|
445
|
+
<span class="cline-any cline-neutral"> </span>
|
|
446
|
+
<span class="cline-any cline-yes">5x</span>
|
|
447
|
+
<span class="cline-any cline-yes">5x</span>
|
|
448
|
+
<span class="cline-any cline-yes">3x</span>
|
|
449
|
+
<span class="cline-any cline-neutral"> </span>
|
|
450
|
+
<span class="cline-any cline-neutral"> </span>
|
|
438
451
|
<span class="cline-any cline-yes">5x</span>
|
|
439
452
|
<span class="cline-any cline-neutral"> </span>
|
|
440
453
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -463,9 +476,6 @@
|
|
|
463
476
|
<span class="cline-any cline-neutral"> </span>
|
|
464
477
|
<span class="cline-any cline-neutral"> </span>
|
|
465
478
|
<span class="cline-any cline-neutral"> </span>
|
|
466
|
-
<span class="cline-any cline-yes">44x</span>
|
|
467
|
-
<span class="cline-any cline-neutral"> </span>
|
|
468
|
-
<span class="cline-any cline-neutral"> </span>
|
|
469
479
|
<span class="cline-any cline-neutral"> </span>
|
|
470
480
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { TaskStep } from "./TaskStep.js";
|
|
471
481
|
import { TaskResult } from "./TaskResult.js";
|
|
@@ -548,23 +558,14 @@ export class TaskRunner<TContext> {
|
|
|
548
558
|
public static getMermaidGraph<T>(steps: TaskStep<T>[]): string {
|
|
549
559
|
const graphLines = ["graph TD"];
|
|
550
560
|
|
|
551
|
-
// Helper to sanitize node names or wrap them if needed
|
|
552
|
-
// For simplicity, we just wrap in quotes and use the name as ID if it's simple
|
|
553
|
-
// or generate an ID if strictly needed. Here we assume names are unique IDs.
|
|
554
|
-
// We will wrap names in quotes for the label, but use the name as the ID.
|
|
555
|
-
// Actually, Mermaid ID cannot have spaces without quotes.
|
|
556
|
-
const safeId = (name: string) => JSON.stringify(name);
|
|
557
561
|
const sanitize = (name: string) => this.sanitizeMermaidId(name);
|
|
558
562
|
|
|
559
|
-
// Add all nodes first to ensure they exist
|
|
560
563
|
for (const step of steps) {
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
graphLines.push(` ${sanitize(step.name)}[${safeId(step.name)}]`);
|
|
564
|
+
graphLines.push(
|
|
565
|
+
` ${sanitize(step.name)}[${JSON.stringify(step.name)}]`
|
|
566
|
+
);
|
|
565
567
|
}
|
|
566
568
|
|
|
567
|
-
// Add edges
|
|
568
569
|
for (const step of steps) {
|
|
569
570
|
if (step.dependencies) {
|
|
570
571
|
for (const dep of step.dependencies) {
|
|
@@ -628,44 +629,58 @@ export class TaskRunner<TContext> {
|
|
|
628
629
|
config?.concurrency
|
|
629
630
|
);
|
|
630
631
|
|
|
631
|
-
// We need to handle the timeout cleanup properly.
|
|
632
632
|
if (config?.timeout !== undefined) {
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
633
|
+
return this.executeWithTimeout(
|
|
634
|
+
executor,
|
|
635
|
+
steps,
|
|
636
|
+
config.timeout,
|
|
637
|
+
config.signal
|
|
638
|
+
);
|
|
639
|
+
} else {
|
|
640
|
+
return executor.execute(steps, config?.signal);
|
|
641
|
+
}
|
|
642
|
+
}
|
|
639
643
|
|
|
640
|
-
|
|
641
|
-
|
|
644
|
+
/**
|
|
645
|
+
* Executes tasks with a timeout, ensuring resources are cleaned up.
|
|
646
|
+
*/
|
|
647
|
+
private async executeWithTimeout(
|
|
648
|
+
executor: WorkflowExecutor<TContext>,
|
|
649
|
+
steps: TaskStep<TContext>[],
|
|
650
|
+
timeout: number,
|
|
651
|
+
signal?: AbortSignal
|
|
652
|
+
): Promise<Map<string, TaskResult>> {
|
|
653
|
+
const controller = new AbortController();
|
|
654
|
+
const timeoutId = setTimeout(() => {
|
|
655
|
+
controller.abort(new Error(`Workflow timed out after ${timeout}ms`));
|
|
656
|
+
}, timeout);
|
|
642
657
|
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
if (config.signal.aborted) {
|
|
646
|
-
// If already aborted, use it directly (WorkflowExecutor handles early abort)
|
|
647
|
-
// We can cancel timeout immediately
|
|
648
|
-
clearTimeout(timeoutId);
|
|
649
|
-
effectiveSignal = config.signal;
|
|
650
|
-
} else {
|
|
651
|
-
// Listen to user signal to abort our controller
|
|
652
|
-
onAbort = () => {
|
|
653
|
-
controller.abort(config.signal?.reason);
|
|
654
|
-
};
|
|
655
|
-
config.signal.addEventListener("abort", onAbort);
|
|
656
|
-
}
|
|
657
|
-
}
|
|
658
|
+
let effectiveSignal = controller.signal;
|
|
659
|
+
let onAbort: (() => void) | undefined;
|
|
658
660
|
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
661
|
+
// Handle combination of signals if user provided one
|
|
662
|
+
if (signal) {
|
|
663
|
+
if (signal.aborted) {
|
|
664
|
+
// If already aborted, use it directly (WorkflowExecutor handles early abort)
|
|
665
|
+
// We can cancel timeout immediately
|
|
662
666
|
clearTimeout(timeoutId);
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
667
|
+
effectiveSignal = signal;
|
|
668
|
+
} else {
|
|
669
|
+
// Listen to user signal to abort our controller
|
|
670
|
+
onAbort = () => {
|
|
671
|
+
controller.abort(signal.reason);
|
|
672
|
+
};
|
|
673
|
+
signal.addEventListener("abort", onAbort);
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
try {
|
|
678
|
+
return await executor.execute(steps, effectiveSignal);
|
|
679
|
+
} finally {
|
|
680
|
+
clearTimeout(timeoutId);
|
|
681
|
+
if (signal && onAbort) {
|
|
682
|
+
signal.removeEventListener("abort", onAbort);
|
|
666
683
|
}
|
|
667
|
-
} else {
|
|
668
|
-
return executor.execute(steps, config?.signal);
|
|
669
684
|
}
|
|
670
685
|
}
|
|
671
686
|
}
|
|
@@ -676,7 +691,7 @@ export class TaskRunner<TContext> {
|
|
|
676
691
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
677
692
|
Code coverage generated by
|
|
678
693
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
679
|
-
at 2026-01-
|
|
694
|
+
at 2026-01-21T01:16:02.348Z
|
|
680
695
|
</div>
|
|
681
696
|
<script src="../prettify.js"></script>
|
|
682
697
|
<script>
|
|
@@ -322,7 +322,7 @@ export class TaskRunnerBuilder<TContext> {
|
|
|
322
322
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
323
323
|
Code coverage generated by
|
|
324
324
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
325
|
-
at 2026-01-
|
|
325
|
+
at 2026-01-21T01:16:02.348Z
|
|
326
326
|
</div>
|
|
327
327
|
<script src="../prettify.js"></script>
|
|
328
328
|
<script>
|
|
@@ -139,7 +139,7 @@ export interface TaskRunnerExecutionConfig {
|
|
|
139
139
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
140
140
|
Code coverage generated by
|
|
141
141
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
142
|
-
at 2026-01-
|
|
142
|
+
at 2026-01-21T01:16:02.348Z
|
|
143
143
|
</div>
|
|
144
144
|
<script src="../prettify.js"></script>
|
|
145
145
|
<script>
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
26
|
<span class="strong">100% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>48/48</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
47
|
<span class="strong">100% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>48/48</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -211,11 +211,7 @@
|
|
|
211
211
|
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
212
|
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
213
|
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
-
<a name='L153'></a><a href='#L153'>153</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
214
|
+
<a name='L149'></a><a href='#L149'>149</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
219
215
|
<span class="cline-any cline-neutral"> </span>
|
|
220
216
|
<span class="cline-any cline-neutral"> </span>
|
|
221
217
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -224,20 +220,20 @@
|
|
|
224
220
|
<span class="cline-any cline-neutral"> </span>
|
|
225
221
|
<span class="cline-any cline-neutral"> </span>
|
|
226
222
|
<span class="cline-any cline-neutral"> </span>
|
|
227
|
-
<span class="cline-any cline-yes">
|
|
228
|
-
<span class="cline-any cline-yes">
|
|
229
|
-
<span class="cline-any cline-yes">
|
|
223
|
+
<span class="cline-any cline-yes">66x</span>
|
|
224
|
+
<span class="cline-any cline-yes">66x</span>
|
|
225
|
+
<span class="cline-any cline-yes">66x</span>
|
|
230
226
|
<span class="cline-any cline-neutral"> </span>
|
|
231
|
-
<span class="cline-any cline-yes">
|
|
227
|
+
<span class="cline-any cline-yes">66x</span>
|
|
232
228
|
<span class="cline-any cline-neutral"> </span>
|
|
233
229
|
<span class="cline-any cline-neutral"> </span>
|
|
234
230
|
<span class="cline-any cline-neutral"> </span>
|
|
235
231
|
<span class="cline-any cline-neutral"> </span>
|
|
236
232
|
<span class="cline-any cline-neutral"> </span>
|
|
237
233
|
<span class="cline-any cline-neutral"> </span>
|
|
238
|
-
<span class="cline-any cline-yes">
|
|
239
|
-
<span class="cline-any cline-yes">
|
|
240
|
-
<span class="cline-any cline-yes">
|
|
234
|
+
<span class="cline-any cline-yes">65x</span>
|
|
235
|
+
<span class="cline-any cline-yes">65x</span>
|
|
236
|
+
<span class="cline-any cline-yes">65x</span>
|
|
241
237
|
<span class="cline-any cline-neutral"> </span>
|
|
242
238
|
<span class="cline-any cline-neutral"> </span>
|
|
243
239
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -315,24 +311,20 @@
|
|
|
315
311
|
<span class="cline-any cline-neutral"> </span>
|
|
316
312
|
<span class="cline-any cline-neutral"> </span>
|
|
317
313
|
<span class="cline-any cline-neutral"> </span>
|
|
318
|
-
<span class="cline-any cline-yes">
|
|
319
|
-
<span class="cline-any cline-neutral"> </span>
|
|
314
|
+
<span class="cline-any cline-yes">88x</span>
|
|
320
315
|
<span class="cline-any cline-neutral"> </span>
|
|
321
316
|
<span class="cline-any cline-neutral"> </span>
|
|
317
|
+
<span class="cline-any cline-yes">8x</span>
|
|
322
318
|
<span class="cline-any cline-yes">7x</span>
|
|
323
|
-
<span class="cline-any cline-yes">6x</span>
|
|
324
|
-
<span class="cline-any cline-neutral"> </span>
|
|
325
|
-
<span class="cline-any cline-neutral"> </span>
|
|
326
|
-
<span class="cline-any cline-neutral"> </span>
|
|
327
|
-
<span class="cline-any cline-yes">6x</span>
|
|
328
|
-
<span class="cline-any cline-neutral"> </span>
|
|
329
319
|
<span class="cline-any cline-neutral"> </span>
|
|
330
320
|
<span class="cline-any cline-neutral"> </span>
|
|
331
321
|
<span class="cline-any cline-neutral"> </span>
|
|
322
|
+
<span class="cline-any cline-yes">7x</span>
|
|
323
|
+
<span class="cline-any cline-yes">7x</span>
|
|
332
324
|
<span class="cline-any cline-neutral"> </span>
|
|
333
325
|
<span class="cline-any cline-neutral"> </span>
|
|
334
326
|
<span class="cline-any cline-neutral"> </span>
|
|
335
|
-
<span class="cline-any cline-yes">
|
|
327
|
+
<span class="cline-any cline-yes">88x</span>
|
|
336
328
|
<span class="cline-any cline-neutral"> </span>
|
|
337
329
|
<span class="cline-any cline-neutral"> </span>
|
|
338
330
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -470,20 +462,16 @@ export class TaskStateManager<TContext> {
|
|
|
470
462
|
for (const step of this.pendingSteps) {
|
|
471
463
|
// Also check running? No, running tasks are handled by AbortSignal in Executor.
|
|
472
464
|
// We only cancel what is pending and hasn't started.
|
|
473
|
-
/* v8 ignore next 1 */
|
|
474
465
|
if (!this.results.has(step.name) && !this.running.has(step.name)) {
|
|
475
466
|
const result: TaskResult = {
|
|
476
467
|
status: "cancelled",
|
|
477
468
|
message,
|
|
478
469
|
};
|
|
479
470
|
this.results.set(step.name, result);
|
|
471
|
+
this.eventBus.emit("taskEnd", { step, result });
|
|
480
472
|
}
|
|
481
473
|
}
|
|
482
474
|
// Clear pending set as they are now "done" (cancelled)
|
|
483
|
-
// Wait, if we clear pending steps, processDependencies won't pick them up.
|
|
484
|
-
// The loop in Executor relies on results.size or pendingSteps.
|
|
485
|
-
// The previous implementation iterated `steps` (all steps) to cancel.
|
|
486
|
-
// Here we iterate `pendingSteps`.
|
|
487
475
|
this.pendingSteps.clear();
|
|
488
476
|
}
|
|
489
477
|
|
|
@@ -526,7 +514,7 @@ export class TaskStateManager<TContext> {
|
|
|
526
514
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
527
515
|
Code coverage generated by
|
|
528
516
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
529
|
-
at 2026-01-
|
|
517
|
+
at 2026-01-21T01:16:02.348Z
|
|
530
518
|
</div>
|
|
531
519
|
<script src="../prettify.js"></script>
|
|
532
520
|
<script>
|
|
@@ -643,7 +643,7 @@ export class WorkflowExecutor<TContext> {
|
|
|
643
643
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
644
644
|
Code coverage generated by
|
|
645
645
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
646
|
-
at 2026-01-
|
|
646
|
+
at 2026-01-21T01:16:02.348Z
|
|
647
647
|
</div>
|
|
648
648
|
<script src="../prettify.js"></script>
|
|
649
649
|
<script>
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for src/contracts/ErrorTypes.ts</title>
|
|
7
|
+
<meta charset="utf-8" />
|
|
8
|
+
<link rel="stylesheet" href="../../prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="../../base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
|
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
+
<style type='text/css'>
|
|
13
|
+
.coverage-summary .sorter {
|
|
14
|
+
background-image: url(../../sort-arrow-sprite.png);
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
|
|
19
|
+
<body>
|
|
20
|
+
<div class='wrapper'>
|
|
21
|
+
<div class='pad1'>
|
|
22
|
+
<h1><a href="../../index.html">All files</a> / <a href="index.html">src/contracts</a> ErrorTypes.ts</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">100% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>3/3</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">100% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>0/0</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">100% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>0/0</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">100% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>3/3</span>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
</div>
|
|
54
|
+
<p class="quiet">
|
|
55
|
+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
+
</p>
|
|
57
|
+
<template id="filterTemplate">
|
|
58
|
+
<div class="quiet">
|
|
59
|
+
Filter:
|
|
60
|
+
<input type="search" id="fileSearch">
|
|
61
|
+
</div>
|
|
62
|
+
</template>
|
|
63
|
+
</div>
|
|
64
|
+
<div class='status-line high'></div>
|
|
65
|
+
<pre><table class="coverage">
|
|
66
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
+
<a name='L7'></a><a href='#L7'>7</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
73
|
+
<span class="cline-any cline-neutral"> </span>
|
|
74
|
+
<span class="cline-any cline-neutral"> </span>
|
|
75
|
+
<span class="cline-any cline-yes">17x</span>
|
|
76
|
+
<span class="cline-any cline-yes">17x</span>
|
|
77
|
+
<span class="cline-any cline-yes">17x</span>
|
|
78
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/**
|
|
79
|
+
* Error type constants for task graph validation.
|
|
80
|
+
*/
|
|
81
|
+
export const ERROR_DUPLICATE_TASK = "duplicate_task" as const;
|
|
82
|
+
export const ERROR_MISSING_DEPENDENCY = "missing_dependency" as const;
|
|
83
|
+
export const ERROR_CYCLE = "cycle" as const;
|
|
84
|
+
</pre></td></tr></table></pre>
|
|
85
|
+
|
|
86
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
87
|
+
</div><!-- /wrapper -->
|
|
88
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
89
|
+
Code coverage generated by
|
|
90
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
91
|
+
at 2026-01-21T01:16:02.348Z
|
|
92
|
+
</div>
|
|
93
|
+
<script src="../../prettify.js"></script>
|
|
94
|
+
<script>
|
|
95
|
+
window.onload = function () {
|
|
96
|
+
prettyPrint();
|
|
97
|
+
};
|
|
98
|
+
</script>
|
|
99
|
+
<script src="../../sorter.js"></script>
|
|
100
|
+
<script src="../../block-navigation.js"></script>
|
|
101
|
+
</body>
|
|
102
|
+
</html>
|
|
103
|
+
|
|
@@ -202,7 +202,7 @@ export type ListenerMap<TContext> = {
|
|
|
202
202
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
203
203
|
Code coverage generated by
|
|
204
204
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
205
|
-
at 2026-01-
|
|
205
|
+
at 2026-01-21T01:16:02.348Z
|
|
206
206
|
</div>
|
|
207
207
|
<script src="../../prettify.js"></script>
|
|
208
208
|
<script>
|
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">100% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>3/3</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">100% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
35
|
<span class='fraction'>0/0</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
42
|
<span class='fraction'>0/0</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">100% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>3/3</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line high'></div>
|
|
65
65
|
<div class="pad1">
|
|
66
66
|
<table class="coverage-summary">
|
|
67
67
|
<thead>
|
|
@@ -79,6 +79,21 @@
|
|
|
79
79
|
</tr>
|
|
80
80
|
</thead>
|
|
81
81
|
<tbody><tr>
|
|
82
|
+
<td class="file high" data-value="ErrorTypes.ts"><a href="ErrorTypes.ts.html">ErrorTypes.ts</a></td>
|
|
83
|
+
<td data-value="100" class="pic high">
|
|
84
|
+
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
|
85
|
+
</td>
|
|
86
|
+
<td data-value="100" class="pct high">100%</td>
|
|
87
|
+
<td data-value="3" class="abs high">3/3</td>
|
|
88
|
+
<td data-value="100" class="pct high">100%</td>
|
|
89
|
+
<td data-value="0" class="abs high">0/0</td>
|
|
90
|
+
<td data-value="100" class="pct high">100%</td>
|
|
91
|
+
<td data-value="0" class="abs high">0/0</td>
|
|
92
|
+
<td data-value="100" class="pct high">100%</td>
|
|
93
|
+
<td data-value="3" class="abs high">3/3</td>
|
|
94
|
+
</tr>
|
|
95
|
+
|
|
96
|
+
<tr>
|
|
82
97
|
<td class="file empty" data-value="RunnerEvents.ts"><a href="RunnerEvents.ts.html">RunnerEvents.ts</a></td>
|
|
83
98
|
<td data-value="0" class="pic empty">
|
|
84
99
|
<div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div>
|
|
@@ -101,7 +116,7 @@
|
|
|
101
116
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
102
117
|
Code coverage generated by
|
|
103
118
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
104
|
-
at 2026-01-
|
|
119
|
+
at 2026-01-21T01:16:02.348Z
|
|
105
120
|
</div>
|
|
106
121
|
<script src="../../prettify.js"></script>
|
|
107
122
|
<script>
|