https://github.com/nottimtam/taskman.js
CRON-scheduled asynchronous task manager.
https://github.com/nottimtam/taskman.js
async asynchronous task timestamp
Last synced: about 1 month ago
JSON representation
CRON-scheduled asynchronous task manager.
- Host: GitHub
- URL: https://github.com/nottimtam/taskman.js
- Owner: NotTimTam
- License: mit
- Created: 2024-08-14T17:11:09.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-10-13T17:06:37.000Z (5 months ago)
- Last Synced: 2025-10-22T00:52:11.426Z (5 months ago)
- Topics: async, asynchronous, task, timestamp
- Homepage: https://www.npmjs.com/package/@nottimtam/taskman.js
- Size: 13.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# taskman.js
CRON-scheduled asynchronous task manager.
The task manager ensures that a task's callback (even if asynchronous) will not run more than 1 execution concurrently.
# Installation
```terminal
npm i @nottimtam/taskman.js
```
# Usage
## ES6
```js
import TaskMan from "@nottimtam/taskman.js";
const taskManager = new TaskMan();
const task = () => console.log("Hello, world!"); // The callback to run.
taskManager.createTask("my-task", task).schedule("*/5 * * * *"); // Run the task every 5 minutes.
```
## CJS
```js
const { TaskManager } = require("@nottimtam/taskman.js");
const taskManager = new TaskManager();
const task = () => console.log("Hello, world!"); // The callback to run.
taskManager.createTask("my-task", task).schedule("*/5 * * * *"); // Run the task every 5 minutes.
```
# Reference
## Importing in CJS
```js
const { TaskManager, Task } = require("@nottimtam/taskman.js");
```
## Importing in ESM
```js
import TaskManager, { Task } from "@nottimtam/taskman.js";
```
### `TaskManager`
**Description**: Manages tasks to ensure they do not run in parallel.
#### Constructor
- **`constructor()`**
- Initializes an empty task manager.
#### Properties
- **`tasks`**: An object that stores tasks by their identifier.
#### Methods
- **`createTask(identifier, callback)`**
- Creates a new task with the provided identifier and callback function.
- **identifier**: The unique identifier for the task.
- **callback**: The asynchronous function associated with the task.
- **Returns**: The newly created `Task` instance.
### `Task`
**Description**: Represents a task with a unique identifier and a callback function. It can be initiated manually or scheduled using a cron job.
While tasks can be created and run independently of a task manager, creating them using a TaskManager's `createTask` method will keep your tasks housed in one container.
#### Constructor
- **`constructor(identifier, callback)`**
- **identifier**: A unique identifier for the task (string).
- **callback**: The function to be executed when the task is initiated (function).
#### Properties
- **`identifier`**: The unique identifier for the task.
- **`callback`**: The function associated with the task.
- **`running`**: Boolean indicating whether the task is currently running.
- **`started`**: Timestamp indicating when the task was started.
#### Methods
- **`initiate()`**
- Attempts to start the task. Logs a warning if the task is already running.
- **Returns**: A `Promise` that resolves once the task is completed.
- **`schedule(time = "*/5 * * * *", timeZone = "default")`**
- Schedules the task to run based on a cron schedule.
- **time**: The cron time string (defaults to every five minutes).
- **timeZone**: The timezone in which to operate the job (optional).
- **Returns**: The newly created `CronJob` instance.