@net3/queuer
Version:
69 lines (68 loc) • 3.31 kB
TypeScript
import { QueueConfiguration, QueueState, QueueUsage, QueueItem, QueueStatus } from './types';
/**
* Central utility handling all queue storage and scheduling logic.
* All data is persisted via the piece `context.store` (PROJECT scope).
*/
export declare class QueueManager {
static getQueueConfiguration(context: any, queueId: string): Promise<QueueConfiguration | null>;
/**
* NOTE: Activepieces key-value store cannot list keys, so a full “list queues”
* is not possible without maintaining an external index. Stub returns [].
*/
static listAllQueues(): Promise<QueueConfiguration[]>;
static getQueueState(context: any, queueId: string): Promise<QueueState>;
static getQueueUsage(context: any, queueId: string): Promise<QueueUsage>;
static getQueueStatus(context: any, queueId: string): Promise<QueueStatus | null>;
/** Check daily/hourly rate limits and return availability. */
static checkRateLimits(context: any, queueId: string): Promise<{
canSend: boolean;
nextAvailableTime?: number;
dailyRemaining?: number;
hourlyRemaining?: number;
}>;
static calculateDelayMs(delayType: 'fixed' | 'random', delayUnit: 'seconds' | 'minutes' | 'hours' | 'days', delayValue?: number, delayMin?: number, delayMax?: number): number;
static calculateItemDelay(context: any, queue: QueueConfiguration, limits: any): Promise<{
delayMs: number;
limitDelay: number;
activeHoursDelay: number;
}>;
static isWithinActiveHours(activeHours: any): boolean;
static getNextActiveTime(activeHours: any): number;
static getNextActiveWindow(activeHours: any): string;
static addItemToQueue(context: any, queueId: string, targetAction: string, actionConfig: any, delayMs: number): Promise<{
queueItemId: string;
releaseTime: number;
}>;
static getQueueItem(context: any, queueItemId: string): Promise<QueueItem | null>;
static updateItemStatus(context: any, queueItemId: string, status: QueueItem['status'], error?: string): Promise<void>;
static validateQueuePosition(context: any, queueItemId: string): Promise<{
isValid: boolean;
shouldRepause: boolean;
newReleaseTime?: number;
reason?: string;
}>;
static checkIfNextInQueue(context: any, currentItem: QueueItem): Promise<boolean>;
static markExecutionComplete(context: any, queueId: string, queueItemId: string): Promise<void>;
static cleanupQueueItem(context: any, queueId: string, queueItemId: string, releaseTime: number): Promise<void>;
static incrementUsageCounters(context: any, queueId: string): Promise<void>;
/**
* Get all items in a queue with their details
*/
static listQueueItems(context: any, queueId: string): Promise<QueueItem[]>;
/**
* Clear all items from a queue
*/
static clearQueue(context: any, queueId: string): Promise<{
clearedCount: number;
queueId: string;
}>;
/**
* Get complete queue information including configuration and status
*/
static getQueueDetails(context: any, queueId: string): Promise<{
configuration: QueueConfiguration | null;
status: QueueStatus | null;
state: QueueState;
usage: QueueUsage;
}>;
}