UNPKG

@mulutime/plugin-sdk

Version:

SDK for developing MuluTime booking platform plugins

124 lines 3.58 kB
import { PluginContext } from '@mulutime/plugin-types'; import { ScheduledAction } from '../types'; export interface ScheduledHandlerOptions { timezone?: string; maxRetries?: number; retryDelay?: number; timeout?: number; } export interface ScheduleExecution { id: string; actionName: string; scheduledTime: Date; actualTime: Date; success: boolean; error?: string; duration: number; } export declare class ScheduledActionHandler { private actions; private executions; private timers; private options; constructor(options?: ScheduledHandlerOptions); /** * Register a scheduled action */ register(action: ScheduledAction): void; /** * Register multiple scheduled actions */ registerMany(actions: ScheduledAction[]): void; /** * Unregister a scheduled action */ unregister(actionName: string): void; /** * Enable a scheduled action */ enable(actionName: string): void; /** * Disable a scheduled action */ disable(actionName: string): void; /** * Execute a scheduled action immediately */ executeNow(actionName: string, context: PluginContext): Promise<void>; /** * Schedule an action based on its schedule type */ private scheduleAction; /** * Calculate the next execution time for an action */ private calculateNextExecution; /** * Basic cron expression parser (simplified) */ private parseCronExpression; /** * Execute a scheduled action with retry logic */ private executeAction; /** * Delay utility for retries */ private delay; /** * Get all registered actions */ getRegisteredActions(): ScheduledAction[]; /** * Get execution history */ getExecutionHistory(actionName?: string, limit?: number): ScheduleExecution[]; /** * Get statistics about scheduled actions */ getStats(): { totalActions: number; enabledActions: number; totalExecutions: number; successfulExecutions: number; failedExecutions: number; averageExecutionTime: number; }; /** * Clear all scheduled actions and timers */ clear(): void; /** * Start all enabled scheduled actions */ start(context: PluginContext): void; /** * Stop all scheduled actions */ stop(): void; } export declare class ScheduledActionBuilder { private action; static create(): ScheduledActionBuilder; name(name: string): ScheduledActionBuilder; schedule(schedule: ScheduledAction['schedule']): ScheduledActionBuilder; time(time: string): ScheduledActionBuilder; cronExpression(cron: string): ScheduledActionBuilder; handler(handler: ScheduledAction['handler']): ScheduledActionBuilder; enabled(enabled?: boolean): ScheduledActionBuilder; timezone(timezone: string): ScheduledActionBuilder; build(): ScheduledAction; } export declare function Scheduled(schedule: ScheduledAction['schedule'], options?: { time?: string; cronExpression?: string; timezone?: string; }): any; export declare function createScheduledAction(name: string, schedule: ScheduledAction['schedule'], handler: ScheduledAction['handler'], options?: { time?: string; cronExpression?: string; enabled?: boolean; timezone?: string; }): ScheduledAction; export declare function extractScheduledActions(pluginClass: any): ScheduledAction[]; //# sourceMappingURL=scheduled-handler.d.ts.map