alepha
Version:
Easy-to-use modern TypeScript framework for building many kind of applications.
36 lines (30 loc) • 889 B
text/typescript
import { $logger } from "alepha/logger";
import type { EmailProvider, EmailSendOptions } from "./EmailProvider.ts";
export interface EmailRecord {
to: string;
subject: string;
body: string;
sentAt: Date;
}
export class MemoryEmailProvider implements EmailProvider {
protected readonly log = $logger();
public records: EmailRecord[] = [];
public async send(options: EmailSendOptions): Promise<void> {
const { to, subject, body } = options;
this.log.debug("Sending email to memory store", { to, subject });
for (const recipient of Array.isArray(to) ? to : [to]) {
this.records.push({
to: recipient,
subject,
body,
sentAt: new Date(),
});
}
}
/**
* Get the last email sent (for testing purposes).
*/
public get last(): EmailRecord | undefined {
return this.records[this.records.length - 1];
}
}