UNPKG

safeer-pdf-generator

Version:

Framework-agnostic PDF generation library with chunking, merging, S3 upload, and email delivery

75 lines 1.96 kB
import { EventEmitter } from 'events'; import { PdfGenerationResult } from '../types.js'; /** * Typed event map for PDF lifecycle events */ export interface PdfEventMap { 'generation:started': { title: string; rowCount: number; timestamp: string; }; 'generation:complete': { result: PdfGenerationResult; }; 'chunk:processed': { chunkIndex: number; totalChunks: number; sizeBytes: number; }; 's3:upload:complete': { url: string; key: string; requestPayload?: Record<string, any>; }; 'email:sent': { to: string; messageId?: string; }; 'file:saved': { path: string; sizeBytes: number; }; 'error': { error: Error; phase: string; stack?: string; }; } /** * Typed event emitter for PDF lifecycle events. * * @example * ```typescript * const events = new PdfEventEmitter(); * * events.on('generation:started', ({ title, rowCount }) => { * console.log(`Generating PDF: ${title} with ${rowCount} rows`); * }); * * events.on('s3:upload:complete', ({ url }) => { * notifyClient(url); * }); * * events.on('error', ({ error, phase }) => { * alertOps(`PDF failed at ${phase}: ${error.message}`); * }); * * await generatePdf({ title: 'Report', data, columns, events }); * ``` */ export declare class PdfEventEmitter extends EventEmitter { /** * Emit a typed lifecycle event */ emitEvent<K extends keyof PdfEventMap>(event: K, payload: PdfEventMap[K]): boolean; /** * Listen for a typed lifecycle event */ onEvent<K extends keyof PdfEventMap>(event: K, listener: (payload: PdfEventMap[K]) => void): this; /** * Listen for a typed lifecycle event (once) */ onceEvent<K extends keyof PdfEventMap>(event: K, listener: (payload: PdfEventMap[K]) => void): this; } //# sourceMappingURL=PdfEventEmitter.d.ts.map