UNPKG

workcraft-js

Version:

Node module for Workcraft Workers

99 lines (97 loc) 2.73 kB
type Subscriber = (message: Update) => void; type Unsubscribe = () => void; interface PartialTaskPayload { task_args?: any[]; task_kwargs?: Record<string, any>; prerun_handler_args?: any[]; prerun_handler_kwargs?: Record<string, any>; postrun_handler_args?: any[]; postrun_handler_kwargs?: Record<string, any>; } interface CreateTaskOptions { taskName: string; taskPayload?: PartialTaskPayload; queue?: string; retryOnFailure?: boolean; retryLimit?: number; } type TaskPayload = { task_args: any[]; task_kwargs: Record<string, any>; prerun_handler_args: any[]; prerun_handler_kwargs: Record<string, any>; postrun_handler_args: any[]; postrun_handler_kwargs: Record<string, any>; }; declare enum TaskStatus { PENDING = "PENDING", RUNNING = "RUNNING", SUCCESS = "SUCCESS", FAILURE = "FAILURE", INVALID = "INVALID", CANCELLED = "CANCELLED" } declare enum PeonStatus { IDLE = "IDLE", PREPARING = "PREPARING", WORKING = "WORKING", OFFLINE = "OFFLINE" } type Task = { id: string; task_name: string; status: TaskStatus; created_at: Date; updated_at: Date; worker_id: string | null; queue: string; payload: TaskPayload; result: any | null; retry_on_failure: boolean; retry_count: number; retry_limit: number; }; type Peon = { id: string; status: PeonStatus; last_heartbeat: Date; current_task: string | null; queues: string; }; declare enum UpdateType { TASK_UPDATE = "task_update", PEON_UPDATE = "peon_update" } type Update = { type: UpdateType; message: { task?: Task; peon?: Peon; }; }; type WorkcraftConfig = { strongholdUrl: string; apiKey: string; }; declare class WorkcraftClient { private config; private strongholdUrl; private apiKey; private fetchWithApiKey; private sse; private subscribers; private reconnectDelay; constructor(config: WorkcraftConfig); private createJWT; private setupSSE; private notifySubscribers; subscribe(callback: Subscriber): Promise<Unsubscribe>; disconnect(): Promise<void>; init(): Promise<void>; deleteTaskOrThrow(taskId: string): Promise<any>; createTaskOrThrow({ taskName, taskPayload, queue, retryOnFailure, retryLimit, }: CreateTaskOptions): Promise<Task | null>; getTaskByIdOrThrow(id: string): Promise<Task>; getPeonByIdOrThrow(id: string): Promise<Peon>; cancelTaskOrThrow(id: string): Promise<void>; } export { type CreateTaskOptions, type PartialTaskPayload, type Peon, PeonStatus, type Task, type TaskPayload, TaskStatus, type Update, UpdateType, WorkcraftClient, type WorkcraftConfig };