/** * BaseRendererAdapter * * Abstract base class for all renderer adapters. * Similar to BaseStorageAdapter but for document/template rendering. * * Each renderer adapter converts templates/content to various output formats: * - HTML → PDF (Puppeteer, Playwright) * - HTML → Image (Puppeteer, Playwright) * - Data → Excel (ExcelJS) * - Data → Word (DocxTemplater) * - Direct PDF generation (PDFKit) * * Config-driven design: All behavior controlled via configuration. */ import type { StorageRendererAdapterConfig, StorageRenderOptions, StorageRenderResult, StorageRendererHealthCheck, STORAGE_RENDERER_TYPE, OUTPUT_FORMAT, ADAPTER_HEALTH_STATUS } from '@plyaz/types/storage'; import type { StorageLogger } from '../../core/logger'; /** * BaseRendererAdapter * * Abstract base class that all renderer adapters must extend. * * @example * ```typescript * class PuppeteerRenderer extends BaseRendererAdapter { * constructor(config: StorageRendererAdapterConfig) { * super(config); * } * * async render(options: StorageRenderOptions): Promise { * // Puppeteer-specific rendering logic * } * * async checkHealth(): Promise { * // Health check logic * } * } * ``` */ export declare abstract class BaseRendererAdapter { /** Renderer name (unique identifier) */ readonly name: string; /** Renderer type */ readonly type: STORAGE_RENDERER_TYPE; /** Whether this renderer is enabled */ readonly enabled: boolean; /** Priority (higher = preferred) */ readonly priority: number; /** Supported output formats */ readonly supportedFormats: OUTPUT_FORMAT[]; /** Logger instance */ protected readonly logger?: StorageLogger; /** Custom configuration */ protected readonly config: Record; /** Health status cache */ private healthStatus; private lastHealthCheck?; constructor(config: StorageRendererAdapterConfig); /** * Render content to specified output format * * @param options - Render options * @returns Rendered result with Buffer * * **Must be implemented by subclasses** */ abstract render(options: StorageRenderOptions): Promise; /** * Check renderer health * * @returns Health check result * * **Must be implemented by subclasses** */ abstract checkHealth(): Promise; /** * Cleanup resources (close browser, cleanup temp files, etc.) * * Optional - implement if renderer needs cleanup */ destroy(): Promise; /** * Check if renderer supports a specific output format * * @param format - Output format to check * @returns true if supported */ supportsFormat(format: OUTPUT_FORMAT): boolean; /** * Validate render options before processing * * @param options - Render options * @throws StoragePackageError if validation fails */ protected validateOptions(options: StorageRenderOptions): void; /** * Get cached health status */ getHealthStatus(): ADAPTER_HEALTH_STATUS; /** * Get last health check time */ getLastHealthCheck(): Date | undefined; /** * Update health status cache * * @protected */ protected updateHealthStatus(status: ADAPTER_HEALTH_STATUS): void; /** * Get renderer info for debugging */ getInfo(): { name: string; type: STORAGE_RENDERER_TYPE; enabled: boolean; priority: number; supportedFormats: OUTPUT_FORMAT[]; healthStatus: ADAPTER_HEALTH_STATUS; lastHealthCheck?: Date; }; /** * Get MIME type for output format * * @param format - Output format * @returns MIME type */ protected getMimeType(format: OUTPUT_FORMAT): string; }