- Create packages/emails/ with EmailClient interface abstraction - Wrap Postmark ServerClient in adapter for clean typing - Add createLoggingEmailClient for dev mode (logs to console) - Split email templates into individual files with full test coverage - Update api-server to use new package via context injection - Remove EMAIL_DEV_MODE - now uses POSTMARK_API_KEY presence - Delete apps/api-server/src/utils/email.ts Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
24 lines
664 B
TypeScript
24 lines
664 B
TypeScript
import type {
|
|
ClientSendParams,
|
|
ClientSendResult,
|
|
EmailClient,
|
|
} from "./types.js";
|
|
|
|
let messageIdCounter = 0;
|
|
|
|
export function createLoggingEmailClient(): EmailClient {
|
|
return {
|
|
sendEmail: (params: ClientSendParams): Promise<ClientSendResult> => {
|
|
console.log("=== DEV MODE EMAIL ===");
|
|
console.log(`From: ${params.from}`);
|
|
console.log(`To: ${params.to}`);
|
|
console.log(`Subject: ${params.subject}`);
|
|
console.log(`Text Body:\n${params.textBody}`);
|
|
console.log("======================");
|
|
|
|
messageIdCounter++;
|
|
return Promise.resolve({ messageId: `dev-mode-${messageIdCounter.toString()}` });
|
|
},
|
|
};
|
|
}
|