@betterinternship/core 2.20.1 → 2.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,13 @@
1
+ export interface IArchiveContext {
2
+ sender?: string;
3
+ alias: string;
4
+ source: string;
5
+ to: string[];
6
+ cc: string[];
7
+ bcc: string[];
8
+ subject: string;
9
+ content: string;
10
+ tags?: Record<string, string>;
11
+ configurationSetName?: string;
12
+ }
13
+ export declare const archiveSentEmail: (context: IArchiveContext, messageId: string | undefined, attempts: number) => Promise<void>;
@@ -0,0 +1,107 @@
1
+ import { randomUUID } from 'crypto';
2
+ import { ENV } from '../env.js';
3
+ let warnedMissingBucket = false;
4
+ let warnedMissingCredentials = false;
5
+ const getArchiveBucketName = () => {
6
+ const bucketName = ENV.EMAIL_ARCHIVE_BUCKET;
7
+ if (!bucketName) {
8
+ if (!warnedMissingBucket) {
9
+ console.warn('[EMAIL_ARCHIVE] EMAIL_ARCHIVE_BUCKET not set; sent emails will not be archived.');
10
+ warnedMissingBucket = true;
11
+ }
12
+ return undefined;
13
+ }
14
+ if (!ENV.GOOGLE_CLOUD_CREDENTIALS || !ENV.GOOGLE_CLOUD_PROJECT_ID) {
15
+ if (!warnedMissingCredentials) {
16
+ console.error('[ERROR:EMAIL_ARCHIVE] EMAIL_ARCHIVE_BUCKET is set but GOOGLE_CLOUD_CREDENTIALS/GOOGLE_CLOUD_PROJECT_ID are missing; sent emails will not be archived.');
17
+ warnedMissingCredentials = true;
18
+ }
19
+ return undefined;
20
+ }
21
+ return bucketName;
22
+ };
23
+ let _bucket = null;
24
+ const getArchiveBucket = async (bucketName) => {
25
+ if (!_bucket) {
26
+ const { Storage } = await import('@google-cloud/storage');
27
+ const credentials = JSON.parse(ENV.GOOGLE_CLOUD_CREDENTIALS);
28
+ _bucket = new Storage({
29
+ projectId: ENV.GOOGLE_CLOUD_PROJECT_ID,
30
+ credentials,
31
+ }).bucket(bucketName);
32
+ }
33
+ return _bucket;
34
+ };
35
+ const buildObjectKey = (sentAt, idForKey) => {
36
+ const iso = sentAt.toISOString();
37
+ const [year, month, day] = iso.slice(0, 10).split('-');
38
+ const sanitizedTimestamp = iso.replace(/[:.]/g, '-');
39
+ const key = `email-archive/${year}/${month}/${day}/${sanitizedTimestamp}_${idForKey}.json`;
40
+ return ENV.NODE_ENV !== 'production' ? `debug/${key}` : key;
41
+ };
42
+ const recordArchiveEvent = async (event) => {
43
+ if (!ENV.DATABASE_URL) {
44
+ console.warn('[EMAIL_ARCHIVE] DATABASE_URL not set; archive event not recorded.');
45
+ return;
46
+ }
47
+ try {
48
+ const { internalDb } = await import('@betterinternship/schema');
49
+ await internalDb
50
+ .insertInto('internal.email_delivery_events')
51
+ .values({
52
+ event_type: 'send_success',
53
+ recipient_email: event.recipient,
54
+ feedback_id: event.feedbackId,
55
+ attempts: event.attempts,
56
+ correlation_type: event.correlationDetail ? 'email_archive' : null,
57
+ correlation_detail: event.correlationDetail,
58
+ })
59
+ .execute();
60
+ }
61
+ catch (error) {
62
+ console.error('[ERROR:EMAIL_ARCHIVE] Could not record archive event.', error);
63
+ }
64
+ };
65
+ export const archiveSentEmail = async (context, messageId, attempts) => {
66
+ const bucketName = getArchiveBucketName();
67
+ if (!bucketName)
68
+ return;
69
+ const sentAt = new Date();
70
+ const idForKey = messageId ?? randomUUID();
71
+ const key = buildObjectKey(sentAt, idForKey);
72
+ const payload = {
73
+ message_id: messageId ?? null,
74
+ sent_at: sentAt.toISOString(),
75
+ service: ENV.EMAIL_ARCHIVE_SERVICE,
76
+ attempts,
77
+ source: context.source,
78
+ sender: context.sender ?? null,
79
+ alias: context.alias,
80
+ to: context.to,
81
+ cc: context.cc,
82
+ bcc: context.bcc,
83
+ subject: context.subject,
84
+ content: context.content,
85
+ tags: context.tags,
86
+ configuration_set_name: context.configurationSetName ?? null,
87
+ };
88
+ let uploadedKey = null;
89
+ try {
90
+ const bucket = await getArchiveBucket(bucketName);
91
+ await bucket.file(key).save(JSON.stringify(payload, null, 2), {
92
+ contentType: 'application/json',
93
+ resumable: false,
94
+ });
95
+ uploadedKey = key;
96
+ }
97
+ catch (error) {
98
+ console.error('[ERROR:EMAIL_ARCHIVE] Could not upload archive object.', error);
99
+ }
100
+ await recordArchiveEvent({
101
+ recipient: context.to[0],
102
+ feedbackId: idForKey,
103
+ attempts,
104
+ correlationDetail: uploadedKey,
105
+ });
106
+ };
107
+ //# sourceMappingURL=archive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.js","sourceRoot":"","sources":["../../../lib/email/archive.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { SendEmailCommand, SESClient, } from '@aws-sdk/client-ses';
2
2
  import { randomUUID } from 'crypto';
3
3
  import { ENV } from '../env.js';
4
+ import { archiveSentEmail } from './archive.js';
4
5
  let _sesClient = null;
5
6
  const getSesClient = () => {
6
7
  if (!_sesClient) {
@@ -71,13 +72,14 @@ const toSesTags = (tags) => Object.entries(tags).map(([name, value]) => ({
71
72
  Name: name,
72
73
  Value: value.trim().slice(0, 256).replaceAll(' ', ''),
73
74
  }));
74
- const sendWithRetries = async (params, logRecipients) => {
75
+ const sendWithRetries = async (params, logRecipients, archiveContext) => {
75
76
  const maxAttempts = getMaxAttempts();
76
77
  for (let attempt = 1; attempt <= maxAttempts; attempt++) {
77
78
  try {
78
79
  const command = new SendEmailCommand(params);
79
80
  const result = await getSesClient().send(command);
80
81
  console.warn('[AWSSES] Email sent to ' + logRecipients.join(', '));
82
+ void archiveSentEmail(archiveContext, result.MessageId, attempt).catch((error) => console.error('[ERROR:EMAIL_ARCHIVE] Archive failed.', error));
81
83
  return {
82
84
  messageId: result.MessageId,
83
85
  response: 'Successfully sent via Amazon SES.',
@@ -108,6 +110,7 @@ export const sendMultiEmail = async ({ sender, subject, to, cc, bcc, content, al
108
110
  const ccRecipients = normalizeRecipients(cc);
109
111
  const bccRecipients = normalizeRecipients(bcc);
110
112
  const logRecipients = [...toRecipients, ...ccRecipients, ...bccRecipients];
113
+ const source = `"${sender ?? 'BetterInternship'}" <${alias}@betterinternship.com>`;
111
114
  const params = {
112
115
  Destination: {
113
116
  ToAddresses: toRecipients,
@@ -120,11 +123,23 @@ export const sendMultiEmail = async ({ sender, subject, to, cc, bcc, content, al
120
123
  Html: { Data: content },
121
124
  },
122
125
  },
123
- Source: `"${sender ?? 'BetterInternship'}" <${alias}@betterinternship.com>`,
126
+ Source: source,
124
127
  ConfigurationSetName: configurationSetName,
125
128
  Tags: tags ? toSesTags(tags) : undefined,
126
129
  };
127
- return await sendWithRetries(params, logRecipients);
130
+ const archiveContext = {
131
+ sender,
132
+ alias,
133
+ source,
134
+ to: toRecipients,
135
+ cc: ccRecipients,
136
+ bcc: bccRecipients,
137
+ subject,
138
+ content,
139
+ tags,
140
+ configurationSetName,
141
+ };
142
+ return await sendWithRetries(params, logRecipients, archiveContext);
128
143
  };
129
144
  export const sendSingleEmail = async (params) => {
130
145
  if (!normalizeRecipients(params.recipient).length) {
@@ -1 +1 @@
1
- {"version":3,"file":"email.js","sourceRoot":"","sources":["../../../lib/email/email.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"email.js","sourceRoot":"","sources":["../../../lib/email/email.ts"],"names":[],"mappings":"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"}