Skip to content

Commit ef3f16b

Browse files
committed
feat(TaskQueue):
- Created an internal `InternalQueueTask` interface.
1 parent 5465a8e commit ef3f16b

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

src/tools/queues/TaskQueue.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import uuidX from "@nasriya/uuidx";
22
import atomix from "../../atomix";
3-
import { BaseQueueTask, TaskPriorityLevel } from "./docs";
3+
import { BaseQueueTask, InternalQueueTask, TaskPriorityLevel } from "./docs";
44

55
/**
66
* The general-purpose prioritized task queue utility.
@@ -24,7 +24,7 @@ import { BaseQueueTask, TaskPriorityLevel } from "./docs";
2424
*/
2525
export class TaskQueue {
2626
readonly #_flags = Object.seal({ isRunning: false })
27-
readonly #_queues: Map<TaskPriorityLevel, BaseQueueTask[]> = new Map([
27+
readonly #_queues: Map<TaskPriorityLevel, InternalQueueTask[]> = new Map([
2828
[0, []], [1, []], [2, []], [3, []],
2929
]);
3030

@@ -33,7 +33,7 @@ export class TaskQueue {
3333
* being searched first. If all queues are empty, returns undefined.
3434
* @returns the next task, or undefined if all queues are empty
3535
*/
36-
#_getNextTask(): BaseQueueTask | undefined {
36+
#_getNextTask(): InternalQueueTask | undefined {
3737
const priorityLevels: TaskPriorityLevel[] = [0, 1, 2, 3];
3838
for (const level of priorityLevels) {
3939
const queue = this.#_queues.get(level)!;
@@ -91,7 +91,7 @@ export class TaskQueue {
9191
}
9292

9393
readonly #_handlers = {
94-
onResolve: (task: BaseQueueTask, userData: any) => {
94+
onResolve: (task: InternalQueueTask, userData: any) => {
9595
this.#_stats.succeeded++;
9696

9797
// Run user onResolve callback
@@ -101,7 +101,7 @@ export class TaskQueue {
101101
this.#_helpers.logger.taskCallbackError('onResolve', task.id, callbackError);
102102
}
103103
},
104-
onReject: (task: BaseQueueTask, error: any) => {
104+
onReject: (task: InternalQueueTask, error: any) => {
105105
this.#_stats.failed++;
106106

107107
// Run user onReject callback
@@ -111,7 +111,7 @@ export class TaskQueue {
111111
this.#_helpers.logger.taskCallbackError('onReject', task.id, callbackError);
112112
}
113113
},
114-
onDone: (task: BaseQueueTask) => {
114+
onDone: (task: InternalQueueTask) => {
115115
this.#_helpers.id.remove(task.id);
116116
this.#_stats.processed++;
117117

@@ -269,7 +269,7 @@ export class TaskQueue {
269269
*/
270270
addTask(task: BaseQueueTask) {
271271
this.#_helpers.validateTask(task);
272-
this.#_queues.get(task.priority ?? 3)!.push(task);
272+
this.#_queues.get(task.priority ?? 3)!.push(task as InternalQueueTask);
273273
this.#_stats.total++;
274274
this.#_run();
275275
}
@@ -284,7 +284,7 @@ export class TaskQueue {
284284
*/
285285
bulkAddTasks(tasks: BaseQueueTask[]) {
286286
tasks.forEach(task => this.#_helpers.validateTask(task));
287-
tasks.forEach(task => this.#_queues.get(task.priority ?? 3)!.push(task));
287+
tasks.forEach(task => this.#_queues.get(task.priority ?? 3)!.push(task as InternalQueueTask));
288288
this.#_stats.total += tasks.length;
289289
this.#_run();
290290
}

src/tools/queues/docs.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,10 @@ export interface BaseQueueTask<T = any, K extends Record<string, any> = Record<s
6060

6161
/** Optional callback executed when the task completes, regardless of success or failure. */
6262
onDone?: () => any | Promise<any>;
63+
}
64+
65+
export interface InternalQueueTask extends BaseQueueTask {
66+
id: string;
67+
priority: TaskPriorityLevel;
68+
metadata: Record<string, any>;
6369
}

0 commit comments

Comments
 (0)