UNPKG

@mulutime/plugin-sdk

Version:

SDK for developing MuluTime booking platform plugins

88 lines 2.82 kB
import { PluginContext } from '@mulutime/plugin-types'; import { SystemEventType, SystemEventPayload, EventAction } from '../types'; export interface EventHandlerOptions { maxRetries?: number; retryDelay?: number; timeout?: number; enableFiltering?: boolean; } export declare class EventActionHandler { private actions; private options; constructor(options?: EventHandlerOptions); /** * Register an event action handler */ register(action: EventAction): void; /** * Register multiple event actions */ registerMany(actions: EventAction[]): void; /** * Unregister an event action handler */ unregister(eventType: SystemEventType, handler: EventAction['handler']): void; /** * Handle an incoming system event */ handleEvent(event: SystemEventPayload, context: PluginContext): Promise<void>; /** * Check if a handler should be executed based on filters */ private shouldExecuteHandler; /** * Execute a single event handler with retry logic */ private executeHandler; /** * Get a nested value from an object using dot notation */ private getNestedValue; /** * Delay utility for retries */ private delay; /** * Get all registered event types */ getRegisteredEventTypes(): SystemEventType[]; /** * Get handlers for a specific event type */ getHandlers(eventType: SystemEventType): EventAction[]; /** * Clear all registered handlers */ clear(): void; /** * Get statistics about registered handlers */ getStats(): { totalEventTypes: number; totalHandlers: number; enabledHandlers: number; handlersByEventType: Record<string, number>; }; } export declare class EventActionBuilder { private action; static create(): EventActionBuilder; eventType(type: SystemEventType): EventActionBuilder; handler(handler: EventAction['handler']): EventActionBuilder; priority(priority: number): EventActionBuilder; enabled(enabled?: boolean): EventActionBuilder; filterByOrganization(organizationId: string): EventActionBuilder; filterByConditions(conditions: Record<string, any>): EventActionBuilder; build(): EventAction; } export declare function OnEvent(eventTypes: SystemEventType | SystemEventType[], options?: { priority?: number; filters?: EventAction['filters']; }): any; export declare function createEventAction(eventType: SystemEventType, handler: EventAction['handler'], options?: { priority?: number; enabled?: boolean; filters?: EventAction['filters']; }): EventAction; export declare function extractEventActions(pluginClass: any): EventAction[]; //# sourceMappingURL=event-handler.d.ts.map