@mulutime/plugin-sdk
Version:
SDK for developing MuluTime booking platform plugins
124 lines • 3.58 kB
TypeScript
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