// SPDX-License-Identifier: AGPL-3.0-or-later import type {LoggerInterface} from '@fluxer/logger/src/LoggerInterface'; import type {WorkerJobOptions, WorkerJobPayload} from '@pkgs/worker/src/contracts/WorkerTypes'; export interface WorkerTaskAttempt { readonly isLastAttempt: boolean; } export interface WorkerTaskHelpers { logger: LoggerInterface; jobId: bigint; attempt?: WorkerTaskAttempt; addJob: ( taskType: string, payload: TPayload, options?: WorkerJobOptions, ) => Promise; reportProgress: (current: number, total: number | null, message?: string | null) => Promise; shouldCancel: () => Promise; setContextLink: (link: string) => Promise; } export type WorkerTaskResult = Record; export type WorkerTaskHandler> = ( payload: Payload, helpers: WorkerTaskHelpers, ) => Promise | Promise; export class JobCancelledError extends Error { constructor(message = 'Job cancelled by admin') { super(message); this.name = 'JobCancelledError'; } }