Files
publisher-dashboard/packages/emails/src/logging-client.ts
igm c2b815dd6a Extract emails into separate package with clean interface
- 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>
2026-01-12 15:51:12 +08:00

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()}` });
},
};
}