diff options
| author | Elizabeth Hunt <me@liz.coffee> | 2025-12-09 20:04:17 -0800 |
|---|---|---|
| committer | Elizabeth Hunt <me@liz.coffee> | 2025-12-09 20:14:01 -0800 |
| commit | 5766583d629af78018a911992dee9a88d63ac60f (patch) | |
| tree | fc43ad7fc10e80097133c4230f0b8bfa035e17d8 /lib/email.ts | |
| parent | fd4e7ac4466593605c18b1b5fab4f76db5326520 (diff) | |
| download | canary-5766583d629af78018a911992dee9a88d63ac60f.tar.gz canary-5766583d629af78018a911992dee9a88d63ac60f.zip | |
Adds some logs and uses updated pengueno stuff
Diffstat (limited to 'lib/email.ts')
| -rw-r--r-- | lib/email.ts | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/lib/email.ts b/lib/email.ts index d889900..a719608 100644 --- a/lib/email.ts +++ b/lib/email.ts @@ -1,6 +1,6 @@ import { ImapFlow, type FetchMessageObject, type FetchQueryObject, type MailboxLockObject } from 'imapflow'; import { EmailSendInstruction, type Email, EmailRecvInstruction } from '@emprespresso/uptime'; -import { Either, ITraceable, LogLevel, Metric, Optional, ServerTrace, TraceUtil } from '@emprespresso/pengueno'; +import { Either, ITrace, ITraceable, LogLevel, LogTraceable, Metric, Optional, ServerTrace, TraceUtil } from '@emprespresso/pengueno'; import { createTransport } from 'nodemailer'; interface IRecv { @@ -131,7 +131,7 @@ export class Inbox { this.listMessages().then((eitherMessages) => eitherMessages.flatMap((messages) => Either.fromFailable(() => - Optional.from(messages.find((message) => this.equals(e.get(), message))).get(), + Optional.from(messages.find((message) => this.equals(e, message))).get(), ), ), ), @@ -181,13 +181,22 @@ export class Inbox { .get(); } - private equals(email: Email, message: FetchMessageObject) { + private equals(tEmail: ITraceable<Email>, message: FetchMessageObject) { + const email = tEmail.get(); const subjectMatches = email.subject === message.envelope?.subject; - const bodyMatches = message.bodyParts?.get('text')?.toString().trim() === email.text.trim(); + const body = message.bodyParts?.get('text')?.toString().trim(); + const bodyMatches = body === email.text.trim(); const headers = message.headers?.toLocaleString(); const fromMatches = headers?.includes(`From: ${email.from}`); const toMatches = headers?.includes(`To: ${email.to}`); - return subjectMatches && bodyMatches && fromMatches && toMatches; + tEmail.trace.traceScope(LogLevel.INFO).trace(JSON.stringify({ + subjectMatches, + bodyMatches, + fromMatches, + toMatches, + assertion: { email, headers, body }, + })) + return subjectMatches; // TODO: && bodyMatches && fromMatches && toMatches; } private static Metrics = { |
