UNPKG

waitlist-mailer

Version:

Modern, modular TypeScript library for managing waitlists with pluggable storage and mail providers. Supports MongoDB, SQL databases, and custom adapters with zero required dependencies for basic usage.

55 lines (47 loc) 1.68 kB
/** * Console-based mail provider for waitlist-mailer. * Perfect for development and testing. * Outputs email content to console instead of sending. */ import { MailProvider, EmailContext } from '../../types'; /** * Console-based mail provider implementation. * Outputs emails to console for development and testing. * No external dependencies required. */ export class ConsoleMailProvider implements MailProvider { constructor(private verbose: boolean = true) {} /** * Output a confirmation email to console. * @param email - Recipient email address * @param context - Email context * @returns Always returns true (successful "send") */ async sendConfirmation(email: string, context: EmailContext): Promise<boolean> { const timestamp = new Date().toISOString(); const subject = this.buildSubject(context); const body = this.buildBody(context); console.log(`\n${'='.repeat(60)}`); console.log(`[EMAIL SENT] ${timestamp}`); console.log(`To: ${email}`); console.log(`Subject: ${subject}`); if (this.verbose) { console.log(`\nContext:`); console.log(JSON.stringify(context, null, 2)); console.log(`\nBody:`); console.log(body); } console.log(`${'='.repeat(60)}\n`); return true; } private buildSubject(context: EmailContext): string { return context.subject || `Welcome to ${context.companyName || 'our platform'}`; } private buildBody(context: EmailContext): string { return context.customHtml || ` Thank you for joining ${context.companyName || 'our platform'}! Email: ${context.email} ${context.customUrl ? `Link: ${context.customUrl}` : ''} `.trim(); } }