UNPKG

@wahaha216/koishi-plugin-jmcomic

Version:

下载JM本子,无需python。支持pdf、zip加密。

76 lines (75 loc) 1.91 kB
import { Config } from ".."; import { Logger } from "koishi"; import { JmTaskPayload } from "../processors/jmProcessor"; /** * 任务可能的状态 * pending: 等待处理 * processing: 正在处理 * completed: 处理完成 * failed: 处理失败 */ type TaskStatus = "pending" | "processing" | "completed" | "failed"; interface Task { id: string; payload: JmTaskPayload; status: TaskStatus; createdAt: string; processedAt?: string; error?: string; } type TaskProcessor = (payload: JmTaskPayload) => Promise<void>; interface QueueOptions { concurrency?: number; } interface AddTaskResult { task: Task; pendingAhead: number; queuePosition: number; } export declare class Queue { private tasks; private processor; private readonly concurrency; private activeTasks; /** * koishi 配置项 */ private config; /** * koishi 日志 */ private logger; constructor(processor: TaskProcessor, options: QueueOptions, config: Config, logger: Logger); /** * 向队列添加一个新任务 */ add(payload: JmTaskPayload): AddTaskResult; /** * 获取任务状态 */ getTask(id: string): Task | undefined; /** * 获取所有任务的只读列表 */ getAllTasks(): Readonly<Task[]>; /** * 获取指定任务在队列中的位置信息 * @param taskId 任务ID * @returns {pendingAhead: number, queuePosition: number} * pendingAhead: 在此任务之前有多少个待处理任务 * queuePosition: 此任务在所有待处理任务中的位置(从1开始) */ getTaskQueuePosition(taskId: string): { pendingAhead: number; queuePosition: number; }; /** * 检查并处理队列中的任务 */ private _processQueue; /** * 执行单个任务 */ private _runTask; } export {};