Tuzk is a library for managing asynchronous tasks with progress tracking and error handling.
- Task Management: Run, pause, resume, and cancel tasks with intuitive APIs.
- Progress Tracking: Track task progress with checkpoint markers and percentage-based updates.
- Error Handling: Handle task errors with custom error types and centralized error reporting.
- Concurrency Support: Combine multiple tasks using
Tuzk.all()
andTuzk.parallel()
.
import { Tuzk } from '@leawind/tuzk';
const task = new Tuzk<number>(async (tuzk) => {
let sum = 0;
for (let i = 1; i <= 100; i++) {
sum += i;
await tuzk.checkpoint(i / 100);
}
return sum;
});
assert(task.stateIs('pending'));
const result = await task.run();
assert(task.stateIs('success'));
assert(result === 5050);
import { Tuzk } from '@leawind/tuzk';
const tuzks: Tuzk<void>[] = [
new Tuzk(async (tuzk) => await tuzk.checkpoint(0.5)),
new Tuzk(async (tuzk) => await tuzk.checkpoint(0.5)),
];
const tuzkAll = Tuzk.all(tuzks);
// It auto runs all subtasks
await tuzkAll.run();
// It only succeeds when all subtasks succeed
assert(tuzks[0].stateIs('success'));
assert(tuzks[1].stateIs('success'));
assert(tuzkAll.stateIs('success'));
flowchart TB
Pending ==> Running
Running <==> Paused
Running ==> Succeed
Running --> Failed
Running --> Cancelled
Paused --> Cancelled