Skip to content

A TypeScript library for managing asynchronous tasks with support for dependencies and progress tracking.

License

Notifications You must be signed in to change notification settings

Leawind/tuzk-ts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tuzk

GitHub License JSR Version deno score GitHub Actions Workflow Status

Tuzk is a library for managing asynchronous tasks with progress tracking and error handling.

Features

  • 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() and Tuzk.parallel().

Usage

Basic Task

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);

Combine Tasks

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'));

Task State Diagram

flowchart TB
	Pending ==> Running

	Running <==> Paused

	Running ==> Succeed
	Running --> Failed

	Running --> Cancelled
	Paused --> Cancelled
Loading

About

A TypeScript library for managing asynchronous tasks with support for dependencies and progress tracking.

Topics

Resources

License

Stars

Watchers

Forks