@adtrackify/at-service-common 3.18.15 → 3.18.17

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.
Files changed (58) hide show
  1. package/dist/cjs/__tests__/helpers/acuity-helper.spec.js +4 -1
  2. package/dist/cjs/__tests__/helpers/acuity-helper.spec.js.map +1 -1
  3. package/dist/cjs/__tests__/libs/contacts.spec.js +7 -3
  4. package/dist/cjs/__tests__/libs/contacts.spec.js.map +1 -1
  5. package/dist/cjs/__tests__/services/email-verification/contact-email-verification-service.spec.js +94 -0
  6. package/dist/cjs/__tests__/services/email-verification/contact-email-verification-service.spec.js.map +1 -0
  7. package/dist/cjs/__tests__/services/email-verification/email-verification-service.spec.js +7 -2
  8. package/dist/cjs/__tests__/services/email-verification/email-verification-service.spec.js.map +1 -1
  9. package/dist/cjs/helpers/acuity-helper.js.map +1 -1
  10. package/dist/cjs/libs/contacts.js +53 -33
  11. package/dist/cjs/libs/contacts.js.map +1 -1
  12. package/dist/cjs/libs/emails.js +3 -0
  13. package/dist/cjs/libs/emails.js.map +1 -1
  14. package/dist/cjs/services/email-verification/contact-email-verification-service.d.ts +7 -0
  15. package/dist/cjs/services/email-verification/contact-email-verification-service.js +102 -0
  16. package/dist/cjs/services/email-verification/contact-email-verification-service.js.map +1 -0
  17. package/dist/cjs/services/email-verification/email-verification-service.d.ts +4 -2
  18. package/dist/cjs/services/email-verification/email-verification-service.js +71 -32
  19. package/dist/cjs/services/email-verification/email-verification-service.js.map +1 -1
  20. package/dist/cjs/services/email-verification/index.d.ts +1 -1
  21. package/dist/cjs/services/email-verification/index.js +1 -1
  22. package/dist/cjs/services/email-verification/index.js.map +1 -1
  23. package/dist/esm/__tests__/helpers/acuity-helper.spec.js +5 -2
  24. package/dist/esm/__tests__/helpers/acuity-helper.spec.js.map +1 -1
  25. package/dist/esm/__tests__/libs/contacts.spec.js +8 -4
  26. package/dist/esm/__tests__/libs/contacts.spec.js.map +1 -1
  27. package/dist/esm/__tests__/services/email-verification/contact-email-verification-service.spec.js +92 -0
  28. package/dist/esm/__tests__/services/email-verification/contact-email-verification-service.spec.js.map +1 -0
  29. package/dist/esm/__tests__/services/email-verification/email-verification-service.spec.js +7 -2
  30. package/dist/esm/__tests__/services/email-verification/email-verification-service.spec.js.map +1 -1
  31. package/dist/esm/helpers/acuity-helper.js +1 -1
  32. package/dist/esm/helpers/acuity-helper.js.map +1 -1
  33. package/dist/esm/libs/contacts.js +53 -33
  34. package/dist/esm/libs/contacts.js.map +1 -1
  35. package/dist/esm/libs/emails.js +3 -0
  36. package/dist/esm/libs/emails.js.map +1 -1
  37. package/dist/esm/services/email-verification/contact-email-verification-service.d.ts +7 -0
  38. package/dist/esm/services/email-verification/contact-email-verification-service.js +98 -0
  39. package/dist/esm/services/email-verification/contact-email-verification-service.js.map +1 -0
  40. package/dist/esm/services/email-verification/email-verification-service.d.ts +4 -2
  41. package/dist/esm/services/email-verification/email-verification-service.js +71 -32
  42. package/dist/esm/services/email-verification/email-verification-service.js.map +1 -1
  43. package/dist/esm/services/email-verification/index.d.ts +1 -1
  44. package/dist/esm/services/email-verification/index.js +1 -1
  45. package/dist/esm/services/email-verification/index.js.map +1 -1
  46. package/package.json +1 -1
  47. package/dist/cjs/__tests__/services/email-verification/contact-email-verifier.spec.js +0 -77
  48. package/dist/cjs/__tests__/services/email-verification/contact-email-verifier.spec.js.map +0 -1
  49. package/dist/cjs/services/email-verification/contact-email-verifier.d.ts +0 -4
  50. package/dist/cjs/services/email-verification/contact-email-verifier.js +0 -61
  51. package/dist/cjs/services/email-verification/contact-email-verifier.js.map +0 -1
  52. package/dist/esm/__tests__/services/email-verification/contact-email-verifier.spec.js +0 -75
  53. package/dist/esm/__tests__/services/email-verification/contact-email-verifier.spec.js.map +0 -1
  54. package/dist/esm/services/email-verification/contact-email-verifier.d.ts +0 -4
  55. package/dist/esm/services/email-verification/contact-email-verifier.js +0 -56
  56. package/dist/esm/services/email-verification/contact-email-verifier.js.map +0 -1
  57. /package/dist/cjs/__tests__/services/email-verification/{contact-email-verifier.spec.d.ts → contact-email-verification-service.spec.d.ts} +0 -0
  58. /package/dist/esm/__tests__/services/email-verification/{contact-email-verifier.spec.d.ts → contact-email-verification-service.spec.d.ts} +0 -0
@@ -29,12 +29,14 @@ export const buildThirdPartyTraits = (contacts, sourceId, contactGroupId) => {
29
29
  };
30
30
  export const normalizeThirdPartyContacts = (contacts) => {
31
31
  try {
32
- return contacts.map((contact) => ({
33
- ...contact,
34
- emailAddress: contact.emailAddress?.trim()?.toLowerCase(),
35
- firstName: contact?.firstName ? capitalizeEachWord(contact.firstName.trim()) : undefined,
36
- lastName: contact?.lastName ? capitalizeEachWord(contact.lastName.trim()) : undefined,
37
- }));
32
+ return contacts.map((contact) => {
33
+ return {
34
+ ...contact,
35
+ emailAddress: contact.emailAddress?.trim()?.toLowerCase(),
36
+ firstName: contact?.firstName ? capitalizeEachWord(contact?.firstName?.trim()) : undefined,
37
+ lastName: contact?.lastName ? capitalizeEachWord(contact?.lastName?.trim()) : undefined,
38
+ };
39
+ });
38
40
  }
39
41
  catch (error) {
40
42
  Logger.error('Failed to normalize third party contacts', { error });
@@ -42,7 +44,7 @@ export const normalizeThirdPartyContacts = (contacts) => {
42
44
  }
43
45
  };
44
46
  export const removeDuplicateContactsByEmail = (contacts, emailKey) => {
45
- return contacts.filter((contact, index, self) => index === self.findIndex((other) => other[emailKey] === contact[emailKey]));
47
+ return contacts.filter((contact, index, self) => index === self.findIndex((t) => t[emailKey] === contact[emailKey]));
46
48
  };
47
49
  export const removeInvalidContactsByEmail = (contacts, emailKey) => {
48
50
  return contacts.filter((contact) => contact[emailKey] && contact?.[emailKey]?.trim() !== '' && validateEmail(contact[emailKey]));
@@ -54,30 +56,43 @@ export const removeDuplicateNonDottedGmailContacts = (contacts) => {
54
56
  }
55
57
  const uniqueContacts = [];
56
58
  for (const contact of contacts) {
57
- if (!contact.emailAddress || !contact.emailAddress.includes('@gmail.com')) {
59
+ if (!contact.emailAddress) {
58
60
  uniqueContacts.push(contact);
59
- continue;
60
61
  }
61
- const localPart = contact.emailAddress.split('@')[0] ?? '';
62
- const normalizedEmail = normalizeGmailAddress(contact.emailAddress);
63
- const existingIndex = uniqueContacts.findIndex((existing) => existing.emailAddress &&
64
- normalizeGmailAddress(existing.emailAddress) === normalizedEmail &&
65
- existing.emailAddress !== contact.emailAddress);
66
- if (existingIndex === -1) {
62
+ else if (!contact?.emailAddress?.includes('@gmail.com')) {
67
63
  uniqueContacts.push(contact);
68
- continue;
69
- }
70
- const existingContact = uniqueContacts[existingIndex];
71
- const existingIsDotted = existingContact.emailAddress?.split('@')[0]?.includes('.');
72
- if (localPart.includes('.') && !existingIsDotted) {
73
- Logger.info('Replacing non-dotted Gmail with dotted Gmail contact', { replacing: existingContact, with: contact });
74
- uniqueContacts.splice(existingIndex, 1, contact);
75
64
  }
76
65
  else {
77
- Logger.info('Duplicate Gmail contact found -- skipping', { contact, existingContact });
66
+ const parts = contact?.emailAddress?.split('@') ?? [];
67
+ const localPart = parts[0];
68
+ const normalizedEmail = normalizeGmailAddress(contact.emailAddress);
69
+ const existingIndex = uniqueContacts.findIndex((x) => x.emailAddress &&
70
+ normalizeGmailAddress(x.emailAddress) === normalizedEmail &&
71
+ x.emailAddress !== contact.emailAddress);
72
+ const isDotted = localPart.includes('.');
73
+ if (existingIndex !== -1) {
74
+ const existingContact = uniqueContacts[existingIndex];
75
+ const existingIsDotted = existingContact.emailAddress?.split('@')[0]?.includes('.');
76
+ if (isDotted && !existingIsDotted) {
77
+ Logger.info('contact acquisition - Replacing non-dotted Gmail with dotted Gmail contact', {
78
+ replacing: existingContact,
79
+ with: contact,
80
+ });
81
+ uniqueContacts.splice(existingIndex, 1, contact);
82
+ }
83
+ else {
84
+ Logger.info('contact acquisition - Duplicate Gmail contact found -- skipping', {
85
+ contact,
86
+ existingContact,
87
+ });
88
+ }
89
+ }
90
+ else {
91
+ uniqueContacts.push(contact);
92
+ }
78
93
  }
79
94
  }
80
- Logger.info('Removed non-dotted duplicate gmail contacts', {
95
+ Logger.info('contact acquisition - Removed non-dotted duplicate gmail contacts', {
81
96
  originalCount: contacts.length,
82
97
  uniqueCount: uniqueContacts.length,
83
98
  removedCount: contacts.length - uniqueContacts.length,
@@ -85,7 +100,7 @@ export const removeDuplicateNonDottedGmailContacts = (contacts) => {
85
100
  return uniqueContacts;
86
101
  }
87
102
  catch (error) {
88
- Logger.error('Failed to remove non-dotted duplicate gmail contacts', { error });
103
+ Logger.error('contact acquisition - Failed to remove non-dotted duplicate gmail contacts', { error });
89
104
  return contacts;
90
105
  }
91
106
  };
@@ -94,7 +109,7 @@ export const removeDuplicateDottedEmailVariationContacts = (contacts) => {
94
109
  if (!contacts || contacts.length === 0) {
95
110
  return contacts;
96
111
  }
97
- const seenNormalizedEmails = new Set();
112
+ const seenNormalizedEmails = new Map();
98
113
  const uniqueContacts = [];
99
114
  for (const contact of contacts) {
100
115
  if (!contact.emailAddress) {
@@ -102,14 +117,19 @@ export const removeDuplicateDottedEmailVariationContacts = (contacts) => {
102
117
  continue;
103
118
  }
104
119
  const normalizedEmail = normalizeGmailAddress(contact.emailAddress);
105
- if (seenNormalizedEmails.has(normalizedEmail)) {
106
- Logger.info('Duplicate dotted email gmail variation found -- skipping', { contact, normalizedEmail });
107
- continue;
120
+ contact.emailAddress = normalizedEmail;
121
+ if (!seenNormalizedEmails.has(normalizedEmail)) {
122
+ seenNormalizedEmails.set(normalizedEmail, contact);
123
+ uniqueContacts.push(contact);
124
+ }
125
+ else {
126
+ Logger.info('contact acquisition - Duplicate dotted email gmail variation found -- skipping', {
127
+ contact,
128
+ normalizedEmail,
129
+ });
108
130
  }
109
- seenNormalizedEmails.add(normalizedEmail);
110
- uniqueContacts.push({ ...contact, emailAddress: normalizedEmail });
111
131
  }
112
- Logger.info('Removed duplicate dotted email variations', {
132
+ Logger.info('contact acquisition - Removed duplicate dotted email variations', {
113
133
  originalCount: contacts.length,
114
134
  uniqueCount: uniqueContacts.length,
115
135
  removedCount: contacts.length - uniqueContacts.length,
@@ -117,7 +137,7 @@ export const removeDuplicateDottedEmailVariationContacts = (contacts) => {
117
137
  return uniqueContacts;
118
138
  }
119
139
  catch (error) {
120
- Logger.error('Failed to remove duplicate dotted email variations', { error });
140
+ Logger.error('contact acquisition - Failed to remove duplicate dotted email variations', { error });
121
141
  return contacts;
122
142
  }
123
143
  };
@@ -1 +1 @@
1
- {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../../src/libs/contacts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../../src/libs/contacts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAO7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,QAA6B,EAC7B,QAA2B,EAC3B,cAAuB,EACE,EAAE;IAC3B,IAAI;QACF,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC3G,MAAM,MAAM,GAAG,QAAQ;aACpB,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;aAChE,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;aAC3C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aACrC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,OAAO;YACL,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,EAAE,EAAE,QAAQ;YACZ,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACxE,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACxE,GAAG,EAAE,GAAG;YACR,GAAG,EAAE,GAAG;SACT,CAAC;KACH;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC;KACb;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,QAA6B,EAAuB,EAAE;IAChG,IAAI;QACF,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9B,OAAO;gBACL,GAAG,OAAO;gBACV,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE;gBACzD,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC1F,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;aACxF,CAAC;QACJ,CAAC,CAAC,CAAC;KACJ;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,CAAC,KAAK,CAAC,0CAA0C,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACpE,OAAO,QAAQ,CAAC;KACjB;AACH,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAA8B,QAAa,EAAE,QAAiB,EAAO,EAAE;IACnH,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACvH,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,QAA6B,EAC7B,QAAiC,EACZ,EAAE;IACvB,OAAO,QAAQ,CAAC,MAAM,CACpB,CAAC,OAAO,EAAE,EAAE,CACV,OAAO,CAAC,QAAQ,CAAC,IAAK,OAAO,EAAE,CAAC,QAAQ,CAAY,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAW,CAAC,CACpH,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,QAA6B,EAAuB,EAAE;IAC1G,IAAI;QACF,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACtC,OAAO,QAAQ,CAAC;SACjB;QACD,MAAM,cAAc,GAAwB,EAAE,CAAC;QAC/C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;gBACzB,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC9B;iBAAM,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE;gBACzD,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC9B;iBAAM;gBAEL,MAAM,KAAK,GAAG,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBACtD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAQ3B,MAAM,eAAe,GAAG,qBAAqB,CAAC,OAAO,CAAC,YAAsB,CAAC,CAAC;gBAC9E,MAAM,aAAa,GAAG,cAAc,CAAC,SAAS,CAC5C,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,YAAY;oBACd,qBAAqB,CAAC,CAAC,CAAC,YAAsB,CAAC,KAAK,eAAe;oBACnE,CAAC,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY,CAC1C,CAAC;gBAEF,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACzC,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE;oBACxB,MAAM,eAAe,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;oBACtD,MAAM,gBAAgB,GAAG,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAEpF,IAAI,QAAQ,IAAI,CAAC,gBAAgB,EAAE;wBAEjC,MAAM,CAAC,IAAI,CAAC,4EAA4E,EAAE;4BACxF,SAAS,EAAE,eAAe;4BAC1B,IAAI,EAAE,OAAO;yBACd,CAAC,CAAC;wBACH,cAAc,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;qBAClD;yBAAM;wBAEL,MAAM,CAAC,IAAI,CAAC,iEAAiE,EAAE;4BAC7E,OAAO;4BACP,eAAe;yBAChB,CAAC,CAAC;qBACJ;iBACF;qBAAM;oBACL,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAC9B;aACF;SACF;QACD,MAAM,CAAC,IAAI,CAAC,mEAAmE,EAAE;YAC/E,aAAa,EAAE,QAAQ,CAAC,MAAM;YAC9B,WAAW,EAAE,cAAc,CAAC,MAAM;YAClC,YAAY,EAAE,QAAQ,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM;SACtD,CAAC,CAAC;QACH,OAAO,cAAc,CAAC;KACvB;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,CAAC,KAAK,CAAC,4EAA4E,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACtG,OAAO,QAAQ,CAAC;KACjB;AACH,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,2CAA2C,GAAG,CAAC,QAA6B,EAAuB,EAAE;IAChH,IAAI;QACF,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACtC,OAAO,QAAQ,CAAC;SACjB;QAGD,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAA6B,CAAC;QAClE,MAAM,cAAc,GAAwB,EAAE,CAAC;QAE/C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;gBAEzB,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC7B,SAAS;aACV;YAED,MAAM,eAAe,GAAG,qBAAqB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACpE,OAAO,CAAC,YAAY,GAAG,eAAe,CAAC;YAEvC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;gBAE9C,oBAAoB,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;gBACnD,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC9B;iBAAM;gBACL,MAAM,CAAC,IAAI,CAAC,gFAAgF,EAAE;oBAC5F,OAAO;oBACP,eAAe;iBAChB,CAAC,CAAC;aACJ;SAEF;QAED,MAAM,CAAC,IAAI,CAAC,iEAAiE,EAAE;YAC7E,aAAa,EAAE,QAAQ,CAAC,MAAM;YAC9B,WAAW,EAAE,cAAc,CAAC,MAAM;YAClC,YAAY,EAAE,QAAQ,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM;SACtD,CAAC,CAAC;QAEH,OAAO,cAAc,CAAC;KACvB;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,CAAC,KAAK,CAAC,0EAA0E,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACpG,OAAO,QAAQ,CAAC;KACjB;AACH,CAAC,CAAC"}
@@ -111,6 +111,7 @@ export const blacklistedEmailDomains = [
111
111
  'consolidated.net',
112
112
  'consolidated.com',
113
113
  'consolidated.org',
114
+ 'consolidated.org',
114
115
  'cicmed.org',
115
116
  'netzero.net',
116
117
  'netzero.com',
@@ -125,12 +126,14 @@ export const blacklistedEmailDomains = [
125
126
  'mailinator.com',
126
127
  'yopmail.com',
127
128
  'maildrop.cc',
129
+ 'maildrop.cc',
128
130
  'mailnesia.com',
129
131
  'guerrillamail.com',
130
132
  'guerrillamailblock.com',
131
133
  'guerrillamail.org',
132
134
  'guerrillamail.net',
133
135
  'guerrillamail.biz',
136
+ 'guerrillamail.com',
134
137
  ];
135
138
  export const isDisposableEmail = (email) => {
136
139
  return 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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"}
@@ -0,0 +1,7 @@
1
+ import { EmailableVerifyEmailResponse, ThirdPartyContact } from '@adtrackify/at-tracking-event-types';
2
+ export declare class ContactEmailVerificationService {
3
+ private emailVerificationService;
4
+ constructor(cacheLambdaFunctionArn: string, emailableApiKey: string);
5
+ verifyContactEmail: (contact: ThirdPartyContact, email: string, forceVerify?: boolean) => Promise<EmailableVerifyEmailResponse | null>;
6
+ verifyContactsEmail: (contacts: ThirdPartyContact[]) => Promise<ThirdPartyContact[] | null>;
7
+ }
@@ -0,0 +1,98 @@
1
+ import { EMAIL_STATUS } from '@adtrackify/at-tracking-event-types';
2
+ import { Logger } from '../../helpers';
3
+ import { isBlacklistedEmail, isDisposableEmail, isYahooEmail, validateEmail } from '../../libs/emails.js';
4
+ import { EmailVerificationService } from './email-verification-service.js';
5
+ export class ContactEmailVerificationService {
6
+ emailVerificationService;
7
+ constructor(cacheLambdaFunctionArn, emailableApiKey) {
8
+ this.emailVerificationService = new EmailVerificationService(cacheLambdaFunctionArn, emailableApiKey);
9
+ }
10
+ verifyContactEmail = async (contact, email, forceVerify = false) => {
11
+ try {
12
+ if (!validateEmail(email)) {
13
+ Logger.error('contact acquisition - Email is invalid', { contact, email });
14
+ return null;
15
+ }
16
+ if (isBlacklistedEmail(email)) {
17
+ Logger.error('contact acquisition - Email is a blacklisted email', { contact, email });
18
+ return null;
19
+ }
20
+ if (isDisposableEmail(email)) {
21
+ Logger.error('contact acquisition - Email is a disposable email', { contact, email });
22
+ return null;
23
+ }
24
+ if (isYahooEmail(email) && !forceVerify) {
25
+ Logger.info('contact acquisition - Email is a yahoo email', { contact, email });
26
+ const emailVerification = {
27
+ state: EMAIL_STATUS.RISKY,
28
+ email: email,
29
+ reason: 'Yahoo email - riskier than other emails',
30
+ };
31
+ return emailVerification;
32
+ }
33
+ const emailVerificationResponse = await this.emailVerificationService.getEmailVerificationWithCaching(email);
34
+ if (!emailVerificationResponse || !emailVerificationResponse.emailVerification) {
35
+ Logger.error('contact acquisition - No response from email verification service', {
36
+ contact,
37
+ email,
38
+ emailVerificationResponse,
39
+ });
40
+ return null;
41
+ }
42
+ Logger.info('contact acquisition - Email verification response', { contact, email, emailVerificationResponse });
43
+ const emailVerification = emailVerificationResponse.emailVerification;
44
+ if (emailVerification.state === EMAIL_STATUS.DELIVERABLE) {
45
+ Logger.info('contact acquisition - Email verification is deliverable', { contact, email, emailVerification });
46
+ return emailVerification;
47
+ }
48
+ if (emailVerification.state === EMAIL_STATUS.RISKY) {
49
+ Logger.warn('contact acquisition - Email verification is risky', { contact, email, emailVerification });
50
+ return emailVerification;
51
+ }
52
+ if (emailVerification.state === EMAIL_STATUS.UNDELIVERABLE) {
53
+ Logger.warn('contact acquisition - Email verification is undeliverable', { contact, email, emailVerification });
54
+ return emailVerification;
55
+ }
56
+ if (emailVerification.state === EMAIL_STATUS.UNKNOWN) {
57
+ Logger.warn('contact acquisition - Email verification is unknown', { contact, email, emailVerification });
58
+ return emailVerification;
59
+ }
60
+ if (emailVerification.state === EMAIL_STATUS.NO_EMAIL) {
61
+ Logger.warn('contact acquisition - Email verification is no email', { contact, email, emailVerification });
62
+ return emailVerification;
63
+ }
64
+ Logger.info('contact acquisition - Email verification', { contact, email, emailVerification });
65
+ return emailVerification;
66
+ }
67
+ catch (error) {
68
+ Logger.error('contact acquisition - Failed to verify contact email', { error });
69
+ return null;
70
+ }
71
+ };
72
+ verifyContactsEmail = async (contacts) => {
73
+ try {
74
+ const verifiedContacts = [];
75
+ for (let i = 0; i < contacts.length; i++) {
76
+ const contact = contacts[i];
77
+ const email = contact.emailAddress;
78
+ if (email) {
79
+ const emailVerification = await this.verifyContactEmail(contact, email);
80
+ if (emailVerification) {
81
+ contact.emailVerification = emailVerification;
82
+ verifiedContacts.push(contact);
83
+ }
84
+ }
85
+ else {
86
+ Logger.warn('contact acquisition - No email found for contact -- skipping', { contact });
87
+ continue;
88
+ }
89
+ }
90
+ return verifiedContacts;
91
+ }
92
+ catch (error) {
93
+ Logger.error('contact acquisition - Failed to verify contact emails', { error });
94
+ return null;
95
+ }
96
+ };
97
+ }
98
+ //# sourceMappingURL=contact-email-verification-service.js.map
@@ -0,0 +1 @@
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: (email: string) => Promise<EmailVerificationCache | undefined>;
15
- setEmailVerificationCache: (email: string, emailVerificationCache: EmailVerificationCache) => Promise<void>;
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
  }
@@ -12,29 +12,36 @@ export class EmailVerificationService {
12
12
  }
13
13
  getEmailVerificationWithCaching = async (email) => {
14
14
  try {
15
+ let shouldUpdateCache = false;
15
16
  if (!email) {
16
- Logger.error('getEmailVerificationWithCaching - No email', { email });
17
+ Logger.error('getEmailVerificationWithCaching -No email', { email });
17
18
  return undefined;
18
19
  }
19
- const cached = await this.getEmailVerificationFromCache(email);
20
- if (cached?.emailVerification) {
21
- Logger.info('email verification cache hit', { email, cached });
22
- return cached;
20
+ let cacheResponse = await this.getEmailVerificationFromCache(email);
21
+ if (cacheResponse && cacheResponse?.emailVerification) {
22
+ Logger.info('email verification cache hit', { email, cacheResponse });
23
+ return cacheResponse;
23
24
  }
24
- Logger.info('email verification cache miss - fetching from emailable api', { email });
25
+ Logger.info('email verification cache miss - fetching from emailable api service', { email });
25
26
  const emailVerification = await this.verifyEmail(email);
26
- if (!emailVerification) {
27
- Logger.error('Failed to get email verification from emailable api', { email });
27
+ if (emailVerification) {
28
+ const emailVerificationCache = {
29
+ email,
30
+ emailVerification,
31
+ createdAt: getCurrentTimestamp(),
32
+ updatedAt: getCurrentTimestamp(),
33
+ expiresAt: Date.now() + EMAIL_VERIFICATION_CACHE_TTL_IN_SECONDS * 1000,
34
+ };
35
+ shouldUpdateCache = true;
36
+ cacheResponse = emailVerificationCache;
37
+ }
38
+ else {
39
+ Logger.error('Failed to getEmailVerification from emailable api service', { email, emailVerification });
28
40
  return undefined;
29
41
  }
30
- const cacheResponse = {
31
- email,
32
- emailVerification,
33
- createdAt: getCurrentTimestamp(),
34
- updatedAt: getCurrentTimestamp(),
35
- expiresAt: Date.now() + EMAIL_VERIFICATION_CACHE_TTL_IN_SECONDS * 1000,
36
- };
37
- await this.setEmailVerificationCache(email, cacheResponse);
42
+ if (cacheResponse && shouldUpdateCache) {
43
+ await this.setEmailVerificationCache(email, cacheResponse);
44
+ }
38
45
  return cacheResponse;
39
46
  }
40
47
  catch (error) {
@@ -42,46 +49,78 @@ export class EmailVerificationService {
42
49
  return undefined;
43
50
  }
44
51
  };
45
- getEmailVerificationFromCache = async (email) => {
52
+ async getEmailVerificationFromCache(email) {
46
53
  try {
47
54
  if (!email) {
48
55
  return undefined;
49
56
  }
50
57
  const cacheKey = `emailVerification_${email}`;
51
- const cacheResponse = await this.cacheLambdaClient.invokeGet(cacheKey);
52
- if (cacheResponse?.responseData) {
53
- return cacheResponse.responseData;
58
+ Logger.info(' try email verification cache lookup with email', { cacheKey, email });
59
+ const cachedEmailVerificationResponse = await this.getEmailVerificationCache(cacheKey);
60
+ if (!cachedEmailVerificationResponse) {
61
+ return undefined;
54
62
  }
55
- return undefined;
63
+ Logger.info(' found cached email verification', { email, cacheKey, cachedEmailVerificationResponse });
64
+ return cachedEmailVerificationResponse;
56
65
  }
57
- catch (error) {
58
- Logger.error('Error while getting email verification from cache', { error, email });
66
+ catch (err) {
67
+ Logger.error('Error while getting email verification from cache', { err, email });
59
68
  return undefined;
60
69
  }
61
- };
62
- setEmailVerificationCache = async (email, emailVerificationCache) => {
70
+ }
71
+ async deleteEmailVerificationCache(email) {
72
+ try {
73
+ if (!email) {
74
+ return;
75
+ }
76
+ const deleteCacheCommands = [];
77
+ deleteCacheCommands.push({
78
+ cacheKey: `emailVerification_${email}`,
79
+ commandType: 'delete',
80
+ });
81
+ await this.cacheLambdaClient.batchInvoke(deleteCacheCommands);
82
+ }
83
+ catch (err) {
84
+ Logger.error('Error while deleting email verification cache', { err, email });
85
+ }
86
+ }
87
+ async setEmailVerificationCache(email, emailVerificationCache) {
63
88
  try {
64
89
  if (!email || !emailVerificationCache) {
65
90
  return;
66
91
  }
67
92
  const cacheKey = `emailVerification_${email}`;
93
+ Logger.info('setEmailVerificationCache', { email, emailVerificationCache });
68
94
  await this.cacheLambdaClient.invokeSet(cacheKey, JSON.stringify(emailVerificationCache), EMAIL_VERIFICATION_CACHE_TTL_IN_SECONDS);
69
95
  }
70
96
  catch (error) {
71
- Logger.error('Error while updating email verification cache', { error, email, emailVerificationCache });
97
+ Logger.error('Error while updating email verification cache redis', { error, email, emailVerificationCache });
72
98
  }
99
+ }
100
+ getEmailVerificationCache = async (cacheKey) => {
101
+ const start = performance.now();
102
+ const cacheResponse = await this.cacheLambdaClient.invokeGet(cacheKey);
103
+ const end = performance.now();
104
+ Logger.info('getEmailVerificationCache', { cacheKey, cacheResponse, duration: end - start });
105
+ if (cacheResponse && cacheResponse.responseData) {
106
+ return cacheResponse.responseData;
107
+ }
108
+ return undefined;
73
109
  };
74
110
  verifyEmail = async (email) => {
75
111
  try {
76
- const response = await this.emailableClient.verifyEmail(email);
77
- if (response.status === 200) {
78
- return response.data;
112
+ const emailVerificationResponse = await this.emailableClient.verifyEmail(email);
113
+ if (emailVerificationResponse.status === 200) {
114
+ const emailVerification = emailVerificationResponse?.data;
115
+ return emailVerification;
116
+ }
117
+ else {
118
+ Logger.error('EmailableApiService - returned failure status', { emailVerificationResponse });
119
+ return null;
79
120
  }
80
- Logger.error('Emailable verification returned a failure status', { email, status: response.status });
81
- return null;
82
121
  }
83
122
  catch (error) {
84
- Logger.error('Emailable verification failed', { error, email });
123
+ Logger.error('EmailableApiService - Failed to verify email', { error });
85
124
  return null;
86
125
  }
87
126
  };
@@ -1 +1 @@
1
- {"version":3,"file":"email-verification-service.js","sourceRoot":"","sources":["../../../../src/services/email-verification/email-verification-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"email-verification-service.js","sourceRoot":"","sources":["../../../../src/services/email-verification/email-verification-service.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  export * from './email-verification-service.js';
2
- export * from './contact-email-verifier.js';
2
+ export * from './contact-email-verification-service.js';
@@ -1,3 +1,3 @@
1
1
  export * from './email-verification-service.js';
2
- export * from './contact-email-verifier.js';
2
+ export * from './contact-email-verification-service.js';
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/email-verification/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/email-verification/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC;AAChD,cAAc,yCAAyC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adtrackify/at-service-common",
3
- "version": "3.18.15",
3
+ "version": "3.18.17",
4
4
  "description": "",
5
5
  "files": [
6
6
  "dist/*"
@@ -1,77 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const at_tracking_event_types_1 = require("@adtrackify/at-tracking-event-types");
4
- const emails_1 = require("../../../libs/emails");
5
- const contact_email_verifier_1 = require("../../../services/email-verification/contact-email-verifier");
6
- const createTestContact = (emailAddress, id = 'c1') => ({
7
- id,
8
- source: at_tracking_event_types_1.CONTACT_ACQUISITION_SOURCE.BDEX,
9
- sourceId: at_tracking_event_types_1.CONTACT_SOURCE_ID.BDEX,
10
- firstName: 'John',
11
- lastName: 'Doe',
12
- emailAddress,
13
- emailStatus: at_tracking_event_types_1.EMAIL_STATUS.DELIVERABLE,
14
- pixelId: 'px',
15
- identityId: 'id',
16
- sessionId: 'sess',
17
- createdAt: '1',
18
- updatedAt: '1',
19
- });
20
- const buildService = (impl) => ({ getEmailVerificationWithCaching: impl ?? jest.fn() });
21
- describe('isBlacklistedEmail', () => {
22
- it('flags blacklisted domains and passes clean ones', () => {
23
- expect((0, emails_1.isBlacklistedEmail)('a@consolidated.net')).toBe(true);
24
- expect((0, emails_1.isBlacklistedEmail)('a@mailinator.com')).toBe(true);
25
- expect((0, emails_1.isBlacklistedEmail)('a@example.com')).toBe(false);
26
- });
27
- });
28
- describe('verifyContactEmail', () => {
29
- it('returns null for an invalid email and never calls the service', async () => {
30
- const verify = jest.fn();
31
- const result = await (0, contact_email_verifier_1.verifyContactEmail)(createTestContact('not-an-email'), 'not-an-email', buildService(verify));
32
- expect(result).toBeNull();
33
- expect(verify).not.toHaveBeenCalled();
34
- });
35
- it('returns null for a blacklisted email and never calls the service', async () => {
36
- const verify = jest.fn();
37
- const result = await (0, contact_email_verifier_1.verifyContactEmail)(createTestContact('a@consolidated.net'), 'a@consolidated.net', buildService(verify));
38
- expect(result).toBeNull();
39
- expect(verify).not.toHaveBeenCalled();
40
- });
41
- it('short-circuits a risky Yahoo email to RISKY without calling the service', async () => {
42
- const verify = jest.fn();
43
- const result = await (0, contact_email_verifier_1.verifyContactEmail)(createTestContact('a@yahoo.com'), 'a@yahoo.com', buildService(verify));
44
- expect(result?.state).toBe(at_tracking_event_types_1.EMAIL_STATUS.RISKY);
45
- expect(verify).not.toHaveBeenCalled();
46
- });
47
- it('verifies a Yahoo email via the service when forceVerify is true', async () => {
48
- const verify = jest.fn().mockResolvedValue({ emailVerification: { state: at_tracking_event_types_1.EMAIL_STATUS.DELIVERABLE, email: 'a@yahoo.com' } });
49
- const result = await (0, contact_email_verifier_1.verifyContactEmail)(createTestContact('a@yahoo.com'), 'a@yahoo.com', buildService(verify), true);
50
- expect(verify).toHaveBeenCalledWith('a@yahoo.com');
51
- expect(result?.state).toBe(at_tracking_event_types_1.EMAIL_STATUS.DELIVERABLE);
52
- });
53
- it('returns the verification result for a clean email', async () => {
54
- const verify = jest.fn().mockResolvedValue({ emailVerification: { state: at_tracking_event_types_1.EMAIL_STATUS.DELIVERABLE, email: 'good@example.com' } });
55
- const result = await (0, contact_email_verifier_1.verifyContactEmail)(createTestContact('good@example.com'), 'good@example.com', buildService(verify));
56
- expect(verify).toHaveBeenCalledWith('good@example.com');
57
- expect(result?.state).toBe(at_tracking_event_types_1.EMAIL_STATUS.DELIVERABLE);
58
- });
59
- it('returns null when the service yields no verification', async () => {
60
- const verify = jest.fn().mockResolvedValue(undefined);
61
- const result = await (0, contact_email_verifier_1.verifyContactEmail)(createTestContact('good@example.com'), 'good@example.com', buildService(verify));
62
- expect(result).toBeNull();
63
- });
64
- });
65
- describe('verifyContactsEmail', () => {
66
- it('keeps verified contacts, drops failures + no-email, and does not mutate the input', async () => {
67
- const verify = jest.fn(async (email) => email === 'good@example.com' ? { emailVerification: { state: at_tracking_event_types_1.EMAIL_STATUS.DELIVERABLE, email } } : undefined);
68
- const good = createTestContact('good@example.com', 'good');
69
- const contacts = [good, createTestContact('not-an-email', 'bad'), createTestContact(undefined, 'noemail')];
70
- const result = await (0, contact_email_verifier_1.verifyContactsEmail)(contacts, buildService(verify));
71
- expect(result).toHaveLength(1);
72
- expect(result?.[0].id).toBe('good');
73
- expect(result?.[0].emailVerification?.state).toBe(at_tracking_event_types_1.EMAIL_STATUS.DELIVERABLE);
74
- expect(good.emailVerification).toBeUndefined();
75
- });
76
- });
77
- //# sourceMappingURL=contact-email-verifier.spec.js.map