@adtrackify/at-service-common 3.18.16 → 3.18.18
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.
- package/dist/cjs/__tests__/clients/sqs-bundled-client.spec.js +10 -0
- package/dist/cjs/__tests__/clients/sqs-bundled-client.spec.js.map +1 -1
- package/dist/cjs/__tests__/helpers/acuity-helper.spec.js +4 -1
- package/dist/cjs/__tests__/helpers/acuity-helper.spec.js.map +1 -1
- package/dist/cjs/__tests__/libs/contacts.spec.js +7 -3
- package/dist/cjs/__tests__/libs/contacts.spec.js.map +1 -1
- package/dist/cjs/__tests__/services/email-verification/contact-email-verification-service.spec.js +10 -5
- package/dist/cjs/__tests__/services/email-verification/contact-email-verification-service.spec.js.map +1 -1
- package/dist/cjs/__tests__/services/email-verification/email-verification-service.spec.js +7 -2
- package/dist/cjs/__tests__/services/email-verification/email-verification-service.spec.js.map +1 -1
- package/dist/cjs/clients/generic/sqs-bundled-client.d.ts +1 -1
- package/dist/cjs/clients/generic/sqs-bundled-client.js +4 -4
- package/dist/cjs/clients/generic/sqs-bundled-client.js.map +1 -1
- package/dist/cjs/helpers/acuity-helper.js.map +1 -1
- package/dist/cjs/libs/contacts.js +53 -33
- package/dist/cjs/libs/contacts.js.map +1 -1
- package/dist/cjs/libs/emails.js +3 -0
- package/dist/cjs/libs/emails.js.map +1 -1
- package/dist/cjs/services/email-verification/contact-email-verification-service.js +54 -19
- package/dist/cjs/services/email-verification/contact-email-verification-service.js.map +1 -1
- package/dist/cjs/services/email-verification/email-verification-service.d.ts +4 -2
- package/dist/cjs/services/email-verification/email-verification-service.js +71 -32
- package/dist/cjs/services/email-verification/email-verification-service.js.map +1 -1
- package/dist/esm/__tests__/clients/sqs-bundled-client.spec.js +10 -0
- package/dist/esm/__tests__/clients/sqs-bundled-client.spec.js.map +1 -1
- package/dist/esm/__tests__/helpers/acuity-helper.spec.js +5 -2
- package/dist/esm/__tests__/helpers/acuity-helper.spec.js.map +1 -1
- package/dist/esm/__tests__/libs/contacts.spec.js +8 -4
- package/dist/esm/__tests__/libs/contacts.spec.js.map +1 -1
- package/dist/esm/__tests__/services/email-verification/contact-email-verification-service.spec.js +11 -6
- package/dist/esm/__tests__/services/email-verification/contact-email-verification-service.spec.js.map +1 -1
- package/dist/esm/__tests__/services/email-verification/email-verification-service.spec.js +7 -2
- package/dist/esm/__tests__/services/email-verification/email-verification-service.spec.js.map +1 -1
- package/dist/esm/clients/generic/sqs-bundled-client.d.ts +1 -1
- package/dist/esm/clients/generic/sqs-bundled-client.js +4 -4
- package/dist/esm/clients/generic/sqs-bundled-client.js.map +1 -1
- package/dist/esm/helpers/acuity-helper.js +1 -1
- package/dist/esm/helpers/acuity-helper.js.map +1 -1
- package/dist/esm/libs/contacts.js +53 -33
- package/dist/esm/libs/contacts.js.map +1 -1
- package/dist/esm/libs/emails.js +3 -0
- package/dist/esm/libs/emails.js.map +1 -1
- package/dist/esm/services/email-verification/contact-email-verification-service.js +54 -19
- package/dist/esm/services/email-verification/contact-email-verification-service.js.map +1 -1
- package/dist/esm/services/email-verification/email-verification-service.d.ts +4 -2
- package/dist/esm/services/email-verification/email-verification-service.js +71 -32
- package/dist/esm/services/email-verification/email-verification-service.js.map +1 -1
- package/package.json +1 -1
|
@@ -33,12 +33,14 @@ const buildThirdPartyTraits = (contacts, sourceId, contactGroupId) => {
|
|
|
33
33
|
exports.buildThirdPartyTraits = buildThirdPartyTraits;
|
|
34
34
|
const normalizeThirdPartyContacts = (contacts) => {
|
|
35
35
|
try {
|
|
36
|
-
return contacts.map((contact) =>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
return contacts.map((contact) => {
|
|
37
|
+
return {
|
|
38
|
+
...contact,
|
|
39
|
+
emailAddress: contact.emailAddress?.trim()?.toLowerCase(),
|
|
40
|
+
firstName: contact?.firstName ? (0, strings_js_1.capitalizeEachWord)(contact?.firstName?.trim()) : undefined,
|
|
41
|
+
lastName: contact?.lastName ? (0, strings_js_1.capitalizeEachWord)(contact?.lastName?.trim()) : undefined,
|
|
42
|
+
};
|
|
43
|
+
});
|
|
42
44
|
}
|
|
43
45
|
catch (error) {
|
|
44
46
|
helpers_1.Logger.error('Failed to normalize third party contacts', { error });
|
|
@@ -47,7 +49,7 @@ const normalizeThirdPartyContacts = (contacts) => {
|
|
|
47
49
|
};
|
|
48
50
|
exports.normalizeThirdPartyContacts = normalizeThirdPartyContacts;
|
|
49
51
|
const removeDuplicateContactsByEmail = (contacts, emailKey) => {
|
|
50
|
-
return contacts.filter((contact, index, self) => index === self.findIndex((
|
|
52
|
+
return contacts.filter((contact, index, self) => index === self.findIndex((t) => t[emailKey] === contact[emailKey]));
|
|
51
53
|
};
|
|
52
54
|
exports.removeDuplicateContactsByEmail = removeDuplicateContactsByEmail;
|
|
53
55
|
const removeInvalidContactsByEmail = (contacts, emailKey) => {
|
|
@@ -61,30 +63,43 @@ const removeDuplicateNonDottedGmailContacts = (contacts) => {
|
|
|
61
63
|
}
|
|
62
64
|
const uniqueContacts = [];
|
|
63
65
|
for (const contact of contacts) {
|
|
64
|
-
if (!contact.emailAddress
|
|
66
|
+
if (!contact.emailAddress) {
|
|
65
67
|
uniqueContacts.push(contact);
|
|
66
|
-
continue;
|
|
67
68
|
}
|
|
68
|
-
|
|
69
|
-
const normalizedEmail = (0, emails_js_1.normalizeGmailAddress)(contact.emailAddress);
|
|
70
|
-
const existingIndex = uniqueContacts.findIndex((existing) => existing.emailAddress &&
|
|
71
|
-
(0, emails_js_1.normalizeGmailAddress)(existing.emailAddress) === normalizedEmail &&
|
|
72
|
-
existing.emailAddress !== contact.emailAddress);
|
|
73
|
-
if (existingIndex === -1) {
|
|
69
|
+
else if (!contact?.emailAddress?.includes('@gmail.com')) {
|
|
74
70
|
uniqueContacts.push(contact);
|
|
75
|
-
continue;
|
|
76
|
-
}
|
|
77
|
-
const existingContact = uniqueContacts[existingIndex];
|
|
78
|
-
const existingIsDotted = existingContact.emailAddress?.split('@')[0]?.includes('.');
|
|
79
|
-
if (localPart.includes('.') && !existingIsDotted) {
|
|
80
|
-
helpers_1.Logger.info('Replacing non-dotted Gmail with dotted Gmail contact', { replacing: existingContact, with: contact });
|
|
81
|
-
uniqueContacts.splice(existingIndex, 1, contact);
|
|
82
71
|
}
|
|
83
72
|
else {
|
|
84
|
-
|
|
73
|
+
const parts = contact?.emailAddress?.split('@') ?? [];
|
|
74
|
+
const localPart = parts[0];
|
|
75
|
+
const normalizedEmail = (0, emails_js_1.normalizeGmailAddress)(contact.emailAddress);
|
|
76
|
+
const existingIndex = uniqueContacts.findIndex((x) => x.emailAddress &&
|
|
77
|
+
(0, emails_js_1.normalizeGmailAddress)(x.emailAddress) === normalizedEmail &&
|
|
78
|
+
x.emailAddress !== contact.emailAddress);
|
|
79
|
+
const isDotted = localPart.includes('.');
|
|
80
|
+
if (existingIndex !== -1) {
|
|
81
|
+
const existingContact = uniqueContacts[existingIndex];
|
|
82
|
+
const existingIsDotted = existingContact.emailAddress?.split('@')[0]?.includes('.');
|
|
83
|
+
if (isDotted && !existingIsDotted) {
|
|
84
|
+
helpers_1.Logger.info('contact acquisition - Replacing non-dotted Gmail with dotted Gmail contact', {
|
|
85
|
+
replacing: existingContact,
|
|
86
|
+
with: contact,
|
|
87
|
+
});
|
|
88
|
+
uniqueContacts.splice(existingIndex, 1, contact);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
helpers_1.Logger.info('contact acquisition - Duplicate Gmail contact found -- skipping', {
|
|
92
|
+
contact,
|
|
93
|
+
existingContact,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
uniqueContacts.push(contact);
|
|
99
|
+
}
|
|
85
100
|
}
|
|
86
101
|
}
|
|
87
|
-
helpers_1.Logger.info('Removed non-dotted duplicate gmail contacts', {
|
|
102
|
+
helpers_1.Logger.info('contact acquisition - Removed non-dotted duplicate gmail contacts', {
|
|
88
103
|
originalCount: contacts.length,
|
|
89
104
|
uniqueCount: uniqueContacts.length,
|
|
90
105
|
removedCount: contacts.length - uniqueContacts.length,
|
|
@@ -92,7 +107,7 @@ const removeDuplicateNonDottedGmailContacts = (contacts) => {
|
|
|
92
107
|
return uniqueContacts;
|
|
93
108
|
}
|
|
94
109
|
catch (error) {
|
|
95
|
-
helpers_1.Logger.error('Failed to remove non-dotted duplicate gmail contacts', { error });
|
|
110
|
+
helpers_1.Logger.error('contact acquisition - Failed to remove non-dotted duplicate gmail contacts', { error });
|
|
96
111
|
return contacts;
|
|
97
112
|
}
|
|
98
113
|
};
|
|
@@ -102,7 +117,7 @@ const removeDuplicateDottedEmailVariationContacts = (contacts) => {
|
|
|
102
117
|
if (!contacts || contacts.length === 0) {
|
|
103
118
|
return contacts;
|
|
104
119
|
}
|
|
105
|
-
const seenNormalizedEmails = new
|
|
120
|
+
const seenNormalizedEmails = new Map();
|
|
106
121
|
const uniqueContacts = [];
|
|
107
122
|
for (const contact of contacts) {
|
|
108
123
|
if (!contact.emailAddress) {
|
|
@@ -110,14 +125,19 @@ const removeDuplicateDottedEmailVariationContacts = (contacts) => {
|
|
|
110
125
|
continue;
|
|
111
126
|
}
|
|
112
127
|
const normalizedEmail = (0, emails_js_1.normalizeGmailAddress)(contact.emailAddress);
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
128
|
+
contact.emailAddress = normalizedEmail;
|
|
129
|
+
if (!seenNormalizedEmails.has(normalizedEmail)) {
|
|
130
|
+
seenNormalizedEmails.set(normalizedEmail, contact);
|
|
131
|
+
uniqueContacts.push(contact);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
helpers_1.Logger.info('contact acquisition - Duplicate dotted email gmail variation found -- skipping', {
|
|
135
|
+
contact,
|
|
136
|
+
normalizedEmail,
|
|
137
|
+
});
|
|
116
138
|
}
|
|
117
|
-
seenNormalizedEmails.add(normalizedEmail);
|
|
118
|
-
uniqueContacts.push({ ...contact, emailAddress: normalizedEmail });
|
|
119
139
|
}
|
|
120
|
-
helpers_1.Logger.info('Removed duplicate dotted email variations', {
|
|
140
|
+
helpers_1.Logger.info('contact acquisition - Removed duplicate dotted email variations', {
|
|
121
141
|
originalCount: contacts.length,
|
|
122
142
|
uniqueCount: uniqueContacts.length,
|
|
123
143
|
removedCount: contacts.length - uniqueContacts.length,
|
|
@@ -125,7 +145,7 @@ const removeDuplicateDottedEmailVariationContacts = (contacts) => {
|
|
|
125
145
|
return uniqueContacts;
|
|
126
146
|
}
|
|
127
147
|
catch (error) {
|
|
128
|
-
helpers_1.Logger.error('Failed to remove duplicate dotted email variations', { error });
|
|
148
|
+
helpers_1.Logger.error('contact acquisition - Failed to remove duplicate dotted email variations', { error });
|
|
129
149
|
return contacts;
|
|
130
150
|
}
|
|
131
151
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../../src/libs/contacts.ts"],"names":[],"mappings":";;;AACA,iEAA8D;AAE9D,wCAAoC;AACpC,2CAAiD;AACjD,2CAAmE;AACnE,6CAAkD;AAClD,2CAA6C;AAOtC,MAAM,qBAAqB,GAAG,
|
|
1
|
+
{"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../../src/libs/contacts.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/libs/emails.js
CHANGED
|
@@ -116,6 +116,7 @@ exports.blacklistedEmailDomains = [
|
|
|
116
116
|
'consolidated.net',
|
|
117
117
|
'consolidated.com',
|
|
118
118
|
'consolidated.org',
|
|
119
|
+
'consolidated.org',
|
|
119
120
|
'cicmed.org',
|
|
120
121
|
'netzero.net',
|
|
121
122
|
'netzero.com',
|
|
@@ -130,12 +131,14 @@ exports.blacklistedEmailDomains = [
|
|
|
130
131
|
'mailinator.com',
|
|
131
132
|
'yopmail.com',
|
|
132
133
|
'maildrop.cc',
|
|
134
|
+
'maildrop.cc',
|
|
133
135
|
'mailnesia.com',
|
|
134
136
|
'guerrillamail.com',
|
|
135
137
|
'guerrillamailblock.com',
|
|
136
138
|
'guerrillamail.org',
|
|
137
139
|
'guerrillamail.net',
|
|
138
140
|
'guerrillamail.biz',
|
|
141
|
+
'guerrillamail.com',
|
|
139
142
|
];
|
|
140
143
|
const isDisposableEmail = (email) => {
|
|
141
144
|
return exports.disposableEmailDomains.some((domain) => email.includes(domain));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emails.js","sourceRoot":"","sources":["../../../src/libs/emails.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"emails.js","sourceRoot":"","sources":["../../../src/libs/emails.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,52 +13,87 @@ class ContactEmailVerificationService {
|
|
|
13
13
|
verifyContactEmail = async (contact, email, forceVerify = false) => {
|
|
14
14
|
try {
|
|
15
15
|
if (!(0, emails_js_1.validateEmail)(email)) {
|
|
16
|
-
helpers_1.Logger.error('
|
|
16
|
+
helpers_1.Logger.error('contact acquisition - Email is invalid', { contact, email });
|
|
17
17
|
return null;
|
|
18
18
|
}
|
|
19
19
|
if ((0, emails_js_1.isBlacklistedEmail)(email)) {
|
|
20
|
-
helpers_1.Logger.error('
|
|
20
|
+
helpers_1.Logger.error('contact acquisition - Email is a blacklisted email', { contact, email });
|
|
21
21
|
return null;
|
|
22
22
|
}
|
|
23
23
|
if ((0, emails_js_1.isDisposableEmail)(email)) {
|
|
24
|
-
helpers_1.Logger.error('
|
|
24
|
+
helpers_1.Logger.error('contact acquisition - Email is a disposable email', { contact, email });
|
|
25
25
|
return null;
|
|
26
26
|
}
|
|
27
27
|
if ((0, emails_js_1.isYahooEmail)(email) && !forceVerify) {
|
|
28
|
-
helpers_1.Logger.info('
|
|
29
|
-
|
|
28
|
+
helpers_1.Logger.info('contact acquisition - Email is a yahoo email', { contact, email });
|
|
29
|
+
const emailVerification = {
|
|
30
|
+
state: at_tracking_event_types_1.EMAIL_STATUS.RISKY,
|
|
31
|
+
email: email,
|
|
32
|
+
reason: 'Yahoo email - riskier than other emails',
|
|
33
|
+
};
|
|
34
|
+
return emailVerification;
|
|
30
35
|
}
|
|
31
|
-
const
|
|
32
|
-
if (!
|
|
33
|
-
helpers_1.Logger.error('
|
|
36
|
+
const emailVerificationResponse = await this.emailVerificationService.getEmailVerificationWithCaching(email);
|
|
37
|
+
if (!emailVerificationResponse || !emailVerificationResponse.emailVerification) {
|
|
38
|
+
helpers_1.Logger.error('contact acquisition - No response from email verification service', {
|
|
39
|
+
contact,
|
|
40
|
+
email,
|
|
41
|
+
emailVerificationResponse,
|
|
42
|
+
});
|
|
34
43
|
return null;
|
|
35
44
|
}
|
|
36
|
-
helpers_1.Logger.info('
|
|
37
|
-
|
|
45
|
+
helpers_1.Logger.info('contact acquisition - Email verification response', { contact, email, emailVerificationResponse });
|
|
46
|
+
const emailVerification = emailVerificationResponse.emailVerification;
|
|
47
|
+
if (emailVerification.state === at_tracking_event_types_1.EMAIL_STATUS.DELIVERABLE) {
|
|
48
|
+
helpers_1.Logger.info('contact acquisition - Email verification is deliverable', { contact, email, emailVerification });
|
|
49
|
+
return emailVerification;
|
|
50
|
+
}
|
|
51
|
+
if (emailVerification.state === at_tracking_event_types_1.EMAIL_STATUS.RISKY) {
|
|
52
|
+
helpers_1.Logger.warn('contact acquisition - Email verification is risky', { contact, email, emailVerification });
|
|
53
|
+
return emailVerification;
|
|
54
|
+
}
|
|
55
|
+
if (emailVerification.state === at_tracking_event_types_1.EMAIL_STATUS.UNDELIVERABLE) {
|
|
56
|
+
helpers_1.Logger.warn('contact acquisition - Email verification is undeliverable', { contact, email, emailVerification });
|
|
57
|
+
return emailVerification;
|
|
58
|
+
}
|
|
59
|
+
if (emailVerification.state === at_tracking_event_types_1.EMAIL_STATUS.UNKNOWN) {
|
|
60
|
+
helpers_1.Logger.warn('contact acquisition - Email verification is unknown', { contact, email, emailVerification });
|
|
61
|
+
return emailVerification;
|
|
62
|
+
}
|
|
63
|
+
if (emailVerification.state === at_tracking_event_types_1.EMAIL_STATUS.NO_EMAIL) {
|
|
64
|
+
helpers_1.Logger.warn('contact acquisition - Email verification is no email', { contact, email, emailVerification });
|
|
65
|
+
return emailVerification;
|
|
66
|
+
}
|
|
67
|
+
helpers_1.Logger.info('contact acquisition - Email verification', { contact, email, emailVerification });
|
|
68
|
+
return emailVerification;
|
|
38
69
|
}
|
|
39
70
|
catch (error) {
|
|
40
|
-
helpers_1.Logger.error('
|
|
71
|
+
helpers_1.Logger.error('contact acquisition - Failed to verify contact email', { error });
|
|
41
72
|
return null;
|
|
42
73
|
}
|
|
43
74
|
};
|
|
44
75
|
verifyContactsEmail = async (contacts) => {
|
|
45
76
|
try {
|
|
46
77
|
const verifiedContacts = [];
|
|
47
|
-
for (
|
|
78
|
+
for (let i = 0; i < contacts.length; i++) {
|
|
79
|
+
const contact = contacts[i];
|
|
48
80
|
const email = contact.emailAddress;
|
|
49
|
-
if (
|
|
50
|
-
|
|
51
|
-
|
|
81
|
+
if (email) {
|
|
82
|
+
const emailVerification = await this.verifyContactEmail(contact, email);
|
|
83
|
+
if (emailVerification) {
|
|
84
|
+
contact.emailVerification = emailVerification;
|
|
85
|
+
verifiedContacts.push(contact);
|
|
86
|
+
}
|
|
52
87
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
88
|
+
else {
|
|
89
|
+
helpers_1.Logger.warn('contact acquisition - No email found for contact -- skipping', { contact });
|
|
90
|
+
continue;
|
|
56
91
|
}
|
|
57
92
|
}
|
|
58
93
|
return verifiedContacts;
|
|
59
94
|
}
|
|
60
95
|
catch (error) {
|
|
61
|
-
helpers_1.Logger.error('
|
|
96
|
+
helpers_1.Logger.error('contact acquisition - Failed to verify contact emails', { error });
|
|
62
97
|
return null;
|
|
63
98
|
}
|
|
64
99
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contact-email-verification-service.js","sourceRoot":"","sources":["../../../../src/services/email-verification/contact-email-verification-service.ts"],"names":[],"mappings":";;;AAAA,iFAAoH;AAEpH,2CAAuC;AACvC,oDAA0G;AAC1G,mFAA2E;AAM3E,MAAa,+BAA+B;IAClC,wBAAwB,CAA2B;IAE3D,YAAY,sBAA8B,EAAE,eAAuB;QACjE,IAAI,CAAC,wBAAwB,GAAG,IAAI,wDAAwB,CAAC,sBAAsB,EAAE,eAAe,CAAC,CAAC;IACxG,CAAC;
|
|
1
|
+
{"version":3,"file":"contact-email-verification-service.js","sourceRoot":"","sources":["../../../../src/services/email-verification/contact-email-verification-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,9 @@ export declare class EmailVerificationService {
|
|
|
11
11
|
private emailableClient;
|
|
12
12
|
constructor(cacheLambdaFunctionArn: string, emailableApiKey: string);
|
|
13
13
|
getEmailVerificationWithCaching: (email: string) => Promise<EmailVerificationCache | undefined>;
|
|
14
|
-
getEmailVerificationFromCache
|
|
15
|
-
|
|
14
|
+
getEmailVerificationFromCache(email: string): Promise<EmailVerificationCache | undefined>;
|
|
15
|
+
deleteEmailVerificationCache(email: string): Promise<void>;
|
|
16
|
+
setEmailVerificationCache(email: string, emailVerificationCache: EmailVerificationCache): Promise<void>;
|
|
17
|
+
private getEmailVerificationCache;
|
|
16
18
|
private verifyEmail;
|
|
17
19
|
}
|
|
@@ -15,29 +15,36 @@ class EmailVerificationService {
|
|
|
15
15
|
}
|
|
16
16
|
getEmailVerificationWithCaching = async (email) => {
|
|
17
17
|
try {
|
|
18
|
+
let shouldUpdateCache = false;
|
|
18
19
|
if (!email) {
|
|
19
|
-
helpers_1.Logger.error('getEmailVerificationWithCaching -
|
|
20
|
+
helpers_1.Logger.error('getEmailVerificationWithCaching -No email', { email });
|
|
20
21
|
return undefined;
|
|
21
22
|
}
|
|
22
|
-
|
|
23
|
-
if (
|
|
24
|
-
helpers_1.Logger.info('email verification cache hit', { email,
|
|
25
|
-
return
|
|
23
|
+
let cacheResponse = await this.getEmailVerificationFromCache(email);
|
|
24
|
+
if (cacheResponse && cacheResponse?.emailVerification) {
|
|
25
|
+
helpers_1.Logger.info('email verification cache hit', { email, cacheResponse });
|
|
26
|
+
return cacheResponse;
|
|
26
27
|
}
|
|
27
|
-
helpers_1.Logger.info('email verification cache miss - fetching from emailable api', { email });
|
|
28
|
+
helpers_1.Logger.info('email verification cache miss - fetching from emailable api service', { email });
|
|
28
29
|
const emailVerification = await this.verifyEmail(email);
|
|
29
|
-
if (
|
|
30
|
-
|
|
30
|
+
if (emailVerification) {
|
|
31
|
+
const emailVerificationCache = {
|
|
32
|
+
email,
|
|
33
|
+
emailVerification,
|
|
34
|
+
createdAt: (0, dates_js_1.getCurrentTimestamp)(),
|
|
35
|
+
updatedAt: (0, dates_js_1.getCurrentTimestamp)(),
|
|
36
|
+
expiresAt: Date.now() + EMAIL_VERIFICATION_CACHE_TTL_IN_SECONDS * 1000,
|
|
37
|
+
};
|
|
38
|
+
shouldUpdateCache = true;
|
|
39
|
+
cacheResponse = emailVerificationCache;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
helpers_1.Logger.error('Failed to getEmailVerification from emailable api service', { email, emailVerification });
|
|
31
43
|
return undefined;
|
|
32
44
|
}
|
|
33
|
-
|
|
34
|
-
email,
|
|
35
|
-
|
|
36
|
-
createdAt: (0, dates_js_1.getCurrentTimestamp)(),
|
|
37
|
-
updatedAt: (0, dates_js_1.getCurrentTimestamp)(),
|
|
38
|
-
expiresAt: Date.now() + EMAIL_VERIFICATION_CACHE_TTL_IN_SECONDS * 1000,
|
|
39
|
-
};
|
|
40
|
-
await this.setEmailVerificationCache(email, cacheResponse);
|
|
45
|
+
if (cacheResponse && shouldUpdateCache) {
|
|
46
|
+
await this.setEmailVerificationCache(email, cacheResponse);
|
|
47
|
+
}
|
|
41
48
|
return cacheResponse;
|
|
42
49
|
}
|
|
43
50
|
catch (error) {
|
|
@@ -45,46 +52,78 @@ class EmailVerificationService {
|
|
|
45
52
|
return undefined;
|
|
46
53
|
}
|
|
47
54
|
};
|
|
48
|
-
|
|
55
|
+
async getEmailVerificationFromCache(email) {
|
|
49
56
|
try {
|
|
50
57
|
if (!email) {
|
|
51
58
|
return undefined;
|
|
52
59
|
}
|
|
53
60
|
const cacheKey = `emailVerification_${email}`;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
61
|
+
helpers_1.Logger.info(' try email verification cache lookup with email', { cacheKey, email });
|
|
62
|
+
const cachedEmailVerificationResponse = await this.getEmailVerificationCache(cacheKey);
|
|
63
|
+
if (!cachedEmailVerificationResponse) {
|
|
64
|
+
return undefined;
|
|
57
65
|
}
|
|
58
|
-
|
|
66
|
+
helpers_1.Logger.info(' found cached email verification', { email, cacheKey, cachedEmailVerificationResponse });
|
|
67
|
+
return cachedEmailVerificationResponse;
|
|
59
68
|
}
|
|
60
|
-
catch (
|
|
61
|
-
helpers_1.Logger.error('Error while getting email verification from cache', {
|
|
69
|
+
catch (err) {
|
|
70
|
+
helpers_1.Logger.error('Error while getting email verification from cache', { err, email });
|
|
62
71
|
return undefined;
|
|
63
72
|
}
|
|
64
|
-
}
|
|
65
|
-
|
|
73
|
+
}
|
|
74
|
+
async deleteEmailVerificationCache(email) {
|
|
75
|
+
try {
|
|
76
|
+
if (!email) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const deleteCacheCommands = [];
|
|
80
|
+
deleteCacheCommands.push({
|
|
81
|
+
cacheKey: `emailVerification_${email}`,
|
|
82
|
+
commandType: 'delete',
|
|
83
|
+
});
|
|
84
|
+
await this.cacheLambdaClient.batchInvoke(deleteCacheCommands);
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
helpers_1.Logger.error('Error while deleting email verification cache', { err, email });
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async setEmailVerificationCache(email, emailVerificationCache) {
|
|
66
91
|
try {
|
|
67
92
|
if (!email || !emailVerificationCache) {
|
|
68
93
|
return;
|
|
69
94
|
}
|
|
70
95
|
const cacheKey = `emailVerification_${email}`;
|
|
96
|
+
helpers_1.Logger.info('setEmailVerificationCache', { email, emailVerificationCache });
|
|
71
97
|
await this.cacheLambdaClient.invokeSet(cacheKey, JSON.stringify(emailVerificationCache), EMAIL_VERIFICATION_CACHE_TTL_IN_SECONDS);
|
|
72
98
|
}
|
|
73
99
|
catch (error) {
|
|
74
|
-
helpers_1.Logger.error('Error while updating email verification cache', { error, email, emailVerificationCache });
|
|
100
|
+
helpers_1.Logger.error('Error while updating email verification cache redis', { error, email, emailVerificationCache });
|
|
75
101
|
}
|
|
102
|
+
}
|
|
103
|
+
getEmailVerificationCache = async (cacheKey) => {
|
|
104
|
+
const start = performance.now();
|
|
105
|
+
const cacheResponse = await this.cacheLambdaClient.invokeGet(cacheKey);
|
|
106
|
+
const end = performance.now();
|
|
107
|
+
helpers_1.Logger.info('getEmailVerificationCache', { cacheKey, cacheResponse, duration: end - start });
|
|
108
|
+
if (cacheResponse && cacheResponse.responseData) {
|
|
109
|
+
return cacheResponse.responseData;
|
|
110
|
+
}
|
|
111
|
+
return undefined;
|
|
76
112
|
};
|
|
77
113
|
verifyEmail = async (email) => {
|
|
78
114
|
try {
|
|
79
|
-
const
|
|
80
|
-
if (
|
|
81
|
-
|
|
115
|
+
const emailVerificationResponse = await this.emailableClient.verifyEmail(email);
|
|
116
|
+
if (emailVerificationResponse.status === 200) {
|
|
117
|
+
const emailVerification = emailVerificationResponse?.data;
|
|
118
|
+
return emailVerification;
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
helpers_1.Logger.error('EmailableApiService - returned failure status', { emailVerificationResponse });
|
|
122
|
+
return null;
|
|
82
123
|
}
|
|
83
|
-
helpers_1.Logger.error('Emailable verification returned a failure status', { email, status: response.status });
|
|
84
|
-
return null;
|
|
85
124
|
}
|
|
86
125
|
catch (error) {
|
|
87
|
-
helpers_1.Logger.error('
|
|
126
|
+
helpers_1.Logger.error('EmailableApiService - Failed to verify email', { error });
|
|
88
127
|
return null;
|
|
89
128
|
}
|
|
90
129
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-verification-service.js","sourceRoot":"","sources":["../../../../src/services/email-verification/email-verification-service.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"email-verification-service.js","sourceRoot":"","sources":["../../../../src/services/email-verification/email-verification-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,6 +45,16 @@ describe('BundledSQSClient', () => {
|
|
|
45
45
|
expect(result.messageCount).toBe(0);
|
|
46
46
|
expect(mockSqsClient.buildAndSendMessagesV2).not.toHaveBeenCalled();
|
|
47
47
|
});
|
|
48
|
+
it('passes delaySeconds through to the underlying send', async () => {
|
|
49
|
+
const items = [makeTestEvent('1'), makeTestEvent('2')];
|
|
50
|
+
await bundledClient.sendBundled('test-message', items, 480);
|
|
51
|
+
expect(mockSqsClient.buildAndSendMessagesV2).toHaveBeenCalledWith('test-message', expect.any(Array), 480);
|
|
52
|
+
});
|
|
53
|
+
it('defaults delaySeconds to 0 when omitted', async () => {
|
|
54
|
+
const items = [makeTestEvent('1')];
|
|
55
|
+
await bundledClient.sendBundled('test-message', items);
|
|
56
|
+
expect(mockSqsClient.buildAndSendMessagesV2).toHaveBeenCalledWith('test-message', expect.any(Array), 0);
|
|
57
|
+
});
|
|
48
58
|
it('bundles and sends small items', async () => {
|
|
49
59
|
const items = [makeTestEvent('1'), makeTestEvent('2'), makeTestEvent('3')];
|
|
50
60
|
const result = await bundledClient.sendBundled('test-message', items);
|