UNPKG

@454creative/easy-email

Version:

A framework-agnostic email service library for Node.js with observability and monitoring

106 lines 3.33 kB
import { EmailEvent, ObservabilityConfig, EmailMetrics, AuditLog } from '../interfaces/observability.interface'; import { EmailOptions, EmailResponse, EmailProviderType } from '../interfaces/email-options.interface'; export declare class ObservabilityService { private static instance; private config; private events; private metrics; private auditLogs; private constructor(); static getInstance(config?: ObservabilityConfig): ObservabilityService; private initializeMetrics; /** * Track email sending attempt */ trackEmailAttempt(options: EmailOptions, provider: EmailProviderType, _startTime: number): string; /** * Track email success */ trackEmailSuccess(eventId: string, response: EmailResponse, duration: number, provider: EmailProviderType): void; /** * Track email failure */ trackEmailFailure(eventId: string, error: any, duration: number, provider: EmailProviderType): void; /** * Track connection verification */ trackConnectionVerification(provider: EmailProviderType, success: boolean, duration?: number): void; /** * Track SES quota usage */ trackSesQuotaUsage(quotaData: { max24HourSend: number; sentLast24Hours: number; maxSendRate: number; }): void; /** * Track SES sending statistics */ trackSesStatistics(statsData: { deliveryAttempts: number; bounces: number; complaints: number; rejects: number; }): void; /** * Track SES error with specific error type */ trackSesError(error: any, errorType: 'MessageRejected' | 'MailFromDomainNotVerified' | 'ConfigurationSetDoesNotExist' | 'TemplateDoesNotExist' | 'AccountSendingPaused' | 'SendingPaused' | 'MessageTooLarge' | 'InvalidParameterValue' | 'ValidationError' | 'ThrottlingException' | 'ServiceUnavailable' | 'InternalError' | 'NetworkError' | 'TimeoutError', duration: number): void; /** * Get current metrics */ getMetrics(): EmailMetrics; /** * Get SES-specific metrics */ getSesMetrics(): { quotaUsage: number; bounceRate: number; complaintRate: number; deliveryRate: number; lastQuotaCheck?: string; } | undefined; /** * Get metrics for a specific provider */ getProviderMetrics(provider: EmailProviderType): { sent: number; failed: number; avgTime: number; } | { sent: number; failed: number; avgTime: number; } | { sent: number; failed: number; avgTime: number; }; /** * Get events within time range */ getEvents(startTime?: Date, endTime?: Date): EmailEvent[]; /** * Get audit logs */ getAuditLogs(startTime?: Date, endTime?: Date): AuditLog[]; /** * Clear all data (useful for testing) */ clearData(): void; private sanitizeRecipients; private updateMetrics; private createAuditLog; private logEvent; /** * Create email event with common properties * @private */ private createEmailEvent; /** * Create connection verification event * @private */ private createConnectionEvent; } //# sourceMappingURL=observability.service.d.ts.map