@454creative/easy-email
Version:
A framework-agnostic email service library for Node.js with observability and monitoring
73 lines • 1.89 kB
TypeScript
export interface EmailEvent {
id: string;
timestamp: string;
type: 'email_sent' | 'email_failed' | 'connection_verified' | 'connection_failed';
provider: 'smtp' | 'sendgrid' | 'ses';
recipient?: string;
subject?: string;
messageId?: string;
duration?: number;
error?: {
message: string;
code?: string;
details?: any;
};
metadata?: Record<string, any>;
}
export interface ObservabilityConfig {
enabled: boolean;
logLevel?: 'debug' | 'info' | 'warn' | 'error';
includeSensitiveData?: boolean;
customLogger?: (event: EmailEvent) => void;
metricsCollector?: (metrics: EmailMetrics) => void;
tracingEnabled?: boolean;
}
export interface EmailMetrics {
totalSent: number;
totalFailed: number;
successRate: number;
averageSendTime: number;
providerBreakdown: {
smtp: {
sent: number;
failed: number;
avgTime: number;
};
sendgrid: {
sent: number;
failed: number;
avgTime: number;
};
ses: {
sent: number;
failed: number;
avgTime: number;
};
};
last24Hours: {
sent: number;
failed: number;
avgTime: number;
};
sesMetrics?: {
quotaUsage: number;
bounceRate: number;
complaintRate: number;
deliveryRate: number;
lastQuotaCheck?: string;
};
}
export interface AuditLog {
timestamp: string;
action: 'email_sent' | 'email_failed' | 'configuration_changed' | 'connection_verified';
userId?: string;
ipAddress?: string;
emailDetails: {
to: string[];
subject: string;
provider: string;
messageId?: string;
};
metadata?: Record<string, any>;
}
//# sourceMappingURL=observability.interface.d.ts.map