@adtrackify/at-service-common 3.18.14 → 3.18.16
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__/helpers/acuity-helper.spec.js +41 -0
- package/dist/cjs/__tests__/helpers/acuity-helper.spec.js.map +1 -1
- package/dist/cjs/__tests__/libs/contacts.spec.js +19 -0
- package/dist/cjs/__tests__/libs/contacts.spec.js.map +1 -1
- package/dist/cjs/__tests__/services/email-verification/contact-email-verification-service.spec.js +89 -0
- package/dist/cjs/__tests__/services/email-verification/contact-email-verification-service.spec.js.map +1 -0
- package/dist/cjs/helpers/acuity-helper.d.ts +2 -0
- package/dist/cjs/helpers/acuity-helper.js +35 -1
- package/dist/cjs/helpers/acuity-helper.js.map +1 -1
- package/dist/cjs/libs/contacts.d.ts +2 -1
- package/dist/cjs/libs/contacts.js +28 -1
- package/dist/cjs/libs/contacts.js.map +1 -1
- package/dist/cjs/services/email-verification/contact-email-verification-service.d.ts +7 -0
- package/dist/cjs/services/email-verification/contact-email-verification-service.js +67 -0
- package/dist/cjs/services/email-verification/contact-email-verification-service.js.map +1 -0
- package/dist/cjs/services/email-verification/index.d.ts +1 -1
- package/dist/cjs/services/email-verification/index.js +1 -1
- package/dist/cjs/services/email-verification/index.js.map +1 -1
- package/dist/esm/__tests__/helpers/acuity-helper.spec.js +42 -1
- package/dist/esm/__tests__/helpers/acuity-helper.spec.js.map +1 -1
- package/dist/esm/__tests__/libs/contacts.spec.js +20 -1
- package/dist/esm/__tests__/libs/contacts.spec.js.map +1 -1
- package/dist/esm/__tests__/services/email-verification/contact-email-verification-service.spec.js +87 -0
- package/dist/esm/__tests__/services/email-verification/contact-email-verification-service.spec.js.map +1 -0
- package/dist/esm/helpers/acuity-helper.d.ts +2 -0
- package/dist/esm/helpers/acuity-helper.js +33 -0
- package/dist/esm/helpers/acuity-helper.js.map +1 -1
- package/dist/esm/libs/contacts.d.ts +2 -1
- package/dist/esm/libs/contacts.js +26 -0
- package/dist/esm/libs/contacts.js.map +1 -1
- package/dist/esm/services/email-verification/contact-email-verification-service.d.ts +7 -0
- package/dist/esm/services/email-verification/contact-email-verification-service.js +63 -0
- package/dist/esm/services/email-verification/contact-email-verification-service.js.map +1 -0
- package/dist/esm/services/email-verification/index.d.ts +1 -1
- package/dist/esm/services/email-verification/index.js +1 -1
- package/dist/esm/services/email-verification/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/cjs/__tests__/services/email-verification/contact-email-verifier.spec.js +0 -77
- package/dist/cjs/__tests__/services/email-verification/contact-email-verifier.spec.js.map +0 -1
- package/dist/cjs/services/email-verification/contact-email-verifier.d.ts +0 -4
- package/dist/cjs/services/email-verification/contact-email-verifier.js +0 -61
- package/dist/cjs/services/email-verification/contact-email-verifier.js.map +0 -1
- package/dist/esm/__tests__/services/email-verification/contact-email-verifier.spec.js +0 -75
- package/dist/esm/__tests__/services/email-verification/contact-email-verifier.spec.js.map +0 -1
- package/dist/esm/services/email-verification/contact-email-verifier.d.ts +0 -4
- package/dist/esm/services/email-verification/contact-email-verifier.js +0 -56
- package/dist/esm/services/email-verification/contact-email-verifier.js.map +0 -1
- /package/dist/cjs/__tests__/services/email-verification/{contact-email-verifier.spec.d.ts → contact-email-verification-service.spec.d.ts} +0 -0
- /package/dist/esm/__tests__/services/email-verification/{contact-email-verifier.spec.d.ts → contact-email-verification-service.spec.d.ts} +0 -0
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { CONTACT_ACQUISITION_SOURCE, CONTACT_SOURCE_ID, EMAIL_STATUS } from '@adtrackify/at-tracking-event-types';
|
|
2
|
-
import { isBlacklistedEmail } from '../../../libs/emails';
|
|
3
|
-
import { verifyContactEmail, verifyContactsEmail } from '../../../services/email-verification/contact-email-verifier';
|
|
4
|
-
const createTestContact = (emailAddress, id = 'c1') => ({
|
|
5
|
-
id,
|
|
6
|
-
source: CONTACT_ACQUISITION_SOURCE.BDEX,
|
|
7
|
-
sourceId: CONTACT_SOURCE_ID.BDEX,
|
|
8
|
-
firstName: 'John',
|
|
9
|
-
lastName: 'Doe',
|
|
10
|
-
emailAddress,
|
|
11
|
-
emailStatus: EMAIL_STATUS.DELIVERABLE,
|
|
12
|
-
pixelId: 'px',
|
|
13
|
-
identityId: 'id',
|
|
14
|
-
sessionId: 'sess',
|
|
15
|
-
createdAt: '1',
|
|
16
|
-
updatedAt: '1',
|
|
17
|
-
});
|
|
18
|
-
const buildService = (impl) => ({ getEmailVerificationWithCaching: impl ?? jest.fn() });
|
|
19
|
-
describe('isBlacklistedEmail', () => {
|
|
20
|
-
it('flags blacklisted domains and passes clean ones', () => {
|
|
21
|
-
expect(isBlacklistedEmail('a@consolidated.net')).toBe(true);
|
|
22
|
-
expect(isBlacklistedEmail('a@mailinator.com')).toBe(true);
|
|
23
|
-
expect(isBlacklistedEmail('a@example.com')).toBe(false);
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
describe('verifyContactEmail', () => {
|
|
27
|
-
it('returns null for an invalid email and never calls the service', async () => {
|
|
28
|
-
const verify = jest.fn();
|
|
29
|
-
const result = await verifyContactEmail(createTestContact('not-an-email'), 'not-an-email', buildService(verify));
|
|
30
|
-
expect(result).toBeNull();
|
|
31
|
-
expect(verify).not.toHaveBeenCalled();
|
|
32
|
-
});
|
|
33
|
-
it('returns null for a blacklisted email and never calls the service', async () => {
|
|
34
|
-
const verify = jest.fn();
|
|
35
|
-
const result = await verifyContactEmail(createTestContact('a@consolidated.net'), 'a@consolidated.net', buildService(verify));
|
|
36
|
-
expect(result).toBeNull();
|
|
37
|
-
expect(verify).not.toHaveBeenCalled();
|
|
38
|
-
});
|
|
39
|
-
it('short-circuits a risky Yahoo email to RISKY without calling the service', async () => {
|
|
40
|
-
const verify = jest.fn();
|
|
41
|
-
const result = await verifyContactEmail(createTestContact('a@yahoo.com'), 'a@yahoo.com', buildService(verify));
|
|
42
|
-
expect(result?.state).toBe(EMAIL_STATUS.RISKY);
|
|
43
|
-
expect(verify).not.toHaveBeenCalled();
|
|
44
|
-
});
|
|
45
|
-
it('verifies a Yahoo email via the service when forceVerify is true', async () => {
|
|
46
|
-
const verify = jest.fn().mockResolvedValue({ emailVerification: { state: EMAIL_STATUS.DELIVERABLE, email: 'a@yahoo.com' } });
|
|
47
|
-
const result = await verifyContactEmail(createTestContact('a@yahoo.com'), 'a@yahoo.com', buildService(verify), true);
|
|
48
|
-
expect(verify).toHaveBeenCalledWith('a@yahoo.com');
|
|
49
|
-
expect(result?.state).toBe(EMAIL_STATUS.DELIVERABLE);
|
|
50
|
-
});
|
|
51
|
-
it('returns the verification result for a clean email', async () => {
|
|
52
|
-
const verify = jest.fn().mockResolvedValue({ emailVerification: { state: EMAIL_STATUS.DELIVERABLE, email: 'good@example.com' } });
|
|
53
|
-
const result = await verifyContactEmail(createTestContact('good@example.com'), 'good@example.com', buildService(verify));
|
|
54
|
-
expect(verify).toHaveBeenCalledWith('good@example.com');
|
|
55
|
-
expect(result?.state).toBe(EMAIL_STATUS.DELIVERABLE);
|
|
56
|
-
});
|
|
57
|
-
it('returns null when the service yields no verification', async () => {
|
|
58
|
-
const verify = jest.fn().mockResolvedValue(undefined);
|
|
59
|
-
const result = await verifyContactEmail(createTestContact('good@example.com'), 'good@example.com', buildService(verify));
|
|
60
|
-
expect(result).toBeNull();
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
describe('verifyContactsEmail', () => {
|
|
64
|
-
it('keeps verified contacts, drops failures + no-email, and does not mutate the input', async () => {
|
|
65
|
-
const verify = jest.fn(async (email) => email === 'good@example.com' ? { emailVerification: { state: EMAIL_STATUS.DELIVERABLE, email } } : undefined);
|
|
66
|
-
const good = createTestContact('good@example.com', 'good');
|
|
67
|
-
const contacts = [good, createTestContact('not-an-email', 'bad'), createTestContact(undefined, 'noemail')];
|
|
68
|
-
const result = await verifyContactsEmail(contacts, buildService(verify));
|
|
69
|
-
expect(result).toHaveLength(1);
|
|
70
|
-
expect(result?.[0].id).toBe('good');
|
|
71
|
-
expect(result?.[0].emailVerification?.state).toBe(EMAIL_STATUS.DELIVERABLE);
|
|
72
|
-
expect(good.emailVerification).toBeUndefined();
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
//# sourceMappingURL=contact-email-verifier.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contact-email-verifier.spec.js","sourceRoot":"","sources":["../../../../../src/__tests__/services/email-verification/contact-email-verifier.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { EmailableVerifyEmailResponse, ThirdPartyContact } from '@adtrackify/at-tracking-event-types';
|
|
2
|
-
import type { EmailVerificationService } from './email-verification-service.js';
|
|
3
|
-
export declare const verifyContactEmail: (contact: ThirdPartyContact, email: string, emailVerificationService: EmailVerificationService, forceVerify?: boolean) => Promise<EmailableVerifyEmailResponse | null>;
|
|
4
|
-
export declare const verifyContactsEmail: (contacts: ThirdPartyContact[], emailVerificationService: EmailVerificationService) => Promise<ThirdPartyContact[] | null>;
|
|
@@ -1,56 +0,0 @@
|
|
|
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
|
-
export const verifyContactEmail = async (contact, email, emailVerificationService, forceVerify = false) => {
|
|
5
|
-
try {
|
|
6
|
-
if (!validateEmail(email)) {
|
|
7
|
-
Logger.error('Email verification: invalid email', { contact, email });
|
|
8
|
-
return null;
|
|
9
|
-
}
|
|
10
|
-
if (isBlacklistedEmail(email)) {
|
|
11
|
-
Logger.error('Email verification: blacklisted email', { contact, email });
|
|
12
|
-
return null;
|
|
13
|
-
}
|
|
14
|
-
if (isDisposableEmail(email)) {
|
|
15
|
-
Logger.error('Email verification: disposable email', { contact, email });
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
if (isYahooEmail(email) && !forceVerify) {
|
|
19
|
-
Logger.info('Email verification: risky Yahoo email — skipping Emailable', { contact, email });
|
|
20
|
-
return { state: EMAIL_STATUS.RISKY, email, reason: 'Yahoo email - riskier than other emails' };
|
|
21
|
-
}
|
|
22
|
-
const response = await emailVerificationService.getEmailVerificationWithCaching(email);
|
|
23
|
-
if (!response?.emailVerification) {
|
|
24
|
-
Logger.error('Email verification: no response from verification service', { contact, email, response });
|
|
25
|
-
return null;
|
|
26
|
-
}
|
|
27
|
-
Logger.info('Email verification: result', { contact, email, emailVerification: response.emailVerification });
|
|
28
|
-
return response.emailVerification;
|
|
29
|
-
}
|
|
30
|
-
catch (error) {
|
|
31
|
-
Logger.error('Email verification: failed to verify contact email', { error, email });
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
export const verifyContactsEmail = async (contacts, emailVerificationService) => {
|
|
36
|
-
try {
|
|
37
|
-
const verifiedContacts = [];
|
|
38
|
-
for (const contact of contacts) {
|
|
39
|
-
const email = contact.emailAddress;
|
|
40
|
-
if (!email) {
|
|
41
|
-
Logger.warn('Email verification: no email on contact — skipping', { contact });
|
|
42
|
-
continue;
|
|
43
|
-
}
|
|
44
|
-
const emailVerification = await verifyContactEmail(contact, email, emailVerificationService);
|
|
45
|
-
if (emailVerification) {
|
|
46
|
-
verifiedContacts.push({ ...contact, emailVerification });
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return verifiedContacts;
|
|
50
|
-
}
|
|
51
|
-
catch (error) {
|
|
52
|
-
Logger.error('Email verification: failed to verify contact emails', { error });
|
|
53
|
-
return null;
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
//# sourceMappingURL=contact-email-verifier.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contact-email-verifier.js","sourceRoot":"","sources":["../../../../src/services/email-verification/contact-email-verifier.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|