workcraft-js
Version:
Node module for Workcraft Workers
99 lines (97 loc) • 2.73 kB
TypeScript
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 };