From 5766583d629af78018a911992dee9a88d63ac60f Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Tue, 9 Dec 2025 20:04:17 -0800 Subject: Adds some logs and uses updated pengueno stuff --- lib/email.ts | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'lib') 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, 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 = { -- cgit v1.2.3-70-g09d2