summaryrefslogtreecommitdiff
path: root/lib/email.ts
diff options
context:
space:
mode:
authorElizabeth Hunt <me@liz.coffee>2025-12-09 20:04:17 -0800
committerElizabeth Hunt <me@liz.coffee>2025-12-09 20:14:01 -0800
commit5766583d629af78018a911992dee9a88d63ac60f (patch)
treefc43ad7fc10e80097133c4230f0b8bfa035e17d8 /lib/email.ts
parentfd4e7ac4466593605c18b1b5fab4f76db5326520 (diff)
downloadcanary-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.ts19
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 = {