@konfeature/ap-email-guessr 0.1.1 → 0.1.2

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 (30) hide show
  1. package/package.json +25 -3
  2. package/src/lib/actions/find-email.js +31 -35
  3. package/src/lib/actions/find-email.js.map +1 -1
  4. package/src/lib/actions/generate-emails.js +9 -13
  5. package/src/lib/actions/generate-emails.js.map +1 -1
  6. package/src/lib/common/dns.js +23 -26
  7. package/src/lib/common/dns.js.map +1 -1
  8. package/src/lib/common/find-email.d.ts +4 -2
  9. package/src/lib/common/find-email.d.ts.map +1 -1
  10. package/src/lib/common/find-email.js +36 -36
  11. package/src/lib/common/find-email.js.map +1 -1
  12. package/src/lib/common/find-person.js +59 -55
  13. package/src/lib/common/find-person.js.map +1 -1
  14. package/src/lib/common/http.js +7 -5
  15. package/src/lib/common/http.js.map +1 -1
  16. package/src/lib/common/mx-fingerprint.js +3 -4
  17. package/src/lib/common/mx-fingerprint.js.map +1 -1
  18. package/src/lib/common/patterns.js +5 -6
  19. package/src/lib/common/patterns.js.map +1 -1
  20. package/src/lib/common/providers/o365.js +73 -81
  21. package/src/lib/common/providers/o365.js.map +1 -1
  22. package/src/lib/common/verifier.d.ts +2 -0
  23. package/src/lib/common/verifier.d.ts.map +1 -1
  24. package/src/lib/common/verifiers/no2bounce-verifier.d.ts +15 -6
  25. package/src/lib/common/verifiers/no2bounce-verifier.d.ts.map +1 -1
  26. package/src/lib/common/verifiers/no2bounce-verifier.js +232 -96
  27. package/src/lib/common/verifiers/no2bounce-verifier.js.map +1 -1
  28. package/src/lib/common/verifiers/o365-verifier.d.ts.map +1 -1
  29. package/src/lib/common/verifiers/o365-verifier.js +17 -18
  30. package/src/lib/common/verifiers/o365-verifier.js.map +1 -1
package/package.json CHANGED
@@ -1,11 +1,33 @@
1
1
  {
2
2
  "name": "@konfeature/ap-email-guessr",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
+ "description": "Activepieces piece that finds a person's email from their name and company domain — free Microsoft 365 account checks plus no2bounce verification, with early-stop to minimize credits.",
4
5
  "type": "commonjs",
5
6
  "main": "./src/index.js",
6
7
  "types": "./src/index.d.ts",
8
+ "license": "MIT",
9
+ "author": "KONFeature",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/KONFeature/ap-email-guessr.git"
13
+ },
14
+ "homepage": "https://github.com/KONFeature/ap-email-guessr#readme",
15
+ "bugs": {
16
+ "url": "https://github.com/KONFeature/ap-email-guessr/issues"
17
+ },
18
+ "keywords": [
19
+ "activepieces",
20
+ "activepieces-piece",
21
+ "email",
22
+ "email-finder",
23
+ "email-verification",
24
+ "no2bounce",
25
+ "office365"
26
+ ],
7
27
  "dependencies": {
8
- "@activepieces/pieces-framework": "0.30.0",
9
- "tslib": "2.6.2"
28
+ "@activepieces/pieces-framework": "0.30.0"
29
+ },
30
+ "publishConfig": {
31
+ "access": "public"
10
32
  }
11
33
  }
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.findEmailAction = void 0;
4
- const tslib_1 = require("tslib");
5
4
  const pieces_framework_1 = require("@activepieces/pieces-framework");
6
5
  const find_person_1 = require("../common/find-person");
7
6
  exports.findEmailAction = (0, pieces_framework_1.createAction)({
@@ -54,41 +53,38 @@ exports.findEmailAction = (0, pieces_framework_1.createAction)({
54
53
  defaultValue: 15,
55
54
  }),
56
55
  },
57
- run(context) {
58
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
59
- var _a, _b;
60
- const { firstName, lastName, domain, patternSet, maxChecks, useO365 } = context.propsValue;
61
- const timeoutSeconds = (_a = context.propsValue.timeout) !== null && _a !== void 0 ? _a : 15;
62
- const timeoutMs = Math.min(Math.max(Number(timeoutSeconds) || 15, 1), 120) * 1000;
63
- const token = context.auth || undefined;
64
- const result = yield (0, find_person_1.findPersonEmail)(firstName, lastName, domain, {
65
- patternSet: (_b = patternSet) !== null && _b !== void 0 ? _b : "common",
66
- maxChecks: maxChecks != null ? Math.max(1, Number(maxChecks)) : undefined,
67
- stopOnFirstHit: true,
68
- timeoutMs,
69
- useO365: useO365 !== null && useO365 !== void 0 ? useO365 : true,
70
- no2bounceToken: token,
71
- });
72
- return {
73
- found: result.found,
74
- email: result.email,
75
- status: result.verdict,
76
- confidence: result.confidence,
77
- catchAll: result.catchAll,
78
- domain: result.domain,
79
- mxProvider: result.mxProvider,
80
- verifier: result.verifierUsed,
81
- reason: result.reason,
82
- creditsUsed: result.creditsUsed,
83
- candidatesChecked: result.candidatesChecked,
84
- candidatesConsidered: result.candidatesConsidered,
85
- attempts: result.attempts.map((attempt) => ({
86
- email: attempt.email,
87
- verdict: attempt.verdict,
88
- reason: attempt.reason,
89
- })),
90
- };
56
+ async run(context) {
57
+ const { firstName, lastName, domain, patternSet, maxChecks, useO365 } = context.propsValue;
58
+ const timeoutSeconds = context.propsValue.timeout ?? 15;
59
+ const timeoutMs = Math.min(Math.max(Number(timeoutSeconds) || 15, 1), 120) * 1000;
60
+ const token = context.auth || undefined;
61
+ const result = await (0, find_person_1.findPersonEmail)(firstName, lastName, domain, {
62
+ patternSet: patternSet ?? "common",
63
+ maxChecks: maxChecks != null ? Math.max(1, Number(maxChecks)) : undefined,
64
+ stopOnFirstHit: true,
65
+ timeoutMs,
66
+ useO365: useO365 ?? true,
67
+ no2bounceToken: token,
91
68
  });
69
+ return {
70
+ found: result.found,
71
+ email: result.email,
72
+ status: result.verdict,
73
+ confidence: result.confidence,
74
+ catchAll: result.catchAll,
75
+ domain: result.domain,
76
+ mxProvider: result.mxProvider,
77
+ verifier: result.verifierUsed,
78
+ reason: result.reason,
79
+ creditsUsed: result.creditsUsed,
80
+ candidatesChecked: result.candidatesChecked,
81
+ candidatesConsidered: result.candidatesConsidered,
82
+ attempts: result.attempts.map((attempt) => ({
83
+ email: attempt.email,
84
+ verdict: attempt.verdict,
85
+ reason: attempt.reason,
86
+ })),
87
+ };
92
88
  },
93
89
  });
94
90
  //# sourceMappingURL=find-email.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"find-email.js","sourceRoot":"","sources":["../../../../src/lib/actions/find-email.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"find-email.js","sourceRoot":"","sources":["../../../../src/lib/actions/find-email.ts"],"names":[],"mappings":";;;AAAA,qEAAwE;AACxE,uDAAwD;AAG3C,QAAA,eAAe,GAAG,IAAA,+BAAY,EAAC;IACxC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,YAAY;IACzB,WAAW,EACP,ySAAyS;IAC7S,KAAK,EAAE;QACH,SAAS,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC1B,WAAW,EAAE,YAAY;YACzB,WAAW,EAAE,gDAAgD;YAC7D,QAAQ,EAAE,IAAI;SACjB,CAAC;QACF,QAAQ,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACzB,WAAW,EAAE,WAAW;YACxB,WAAW,EAAE,+CAA+C;YAC5D,QAAQ,EAAE,IAAI;SACjB,CAAC;QACF,MAAM,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACvB,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,mCAAmC;YAChD,QAAQ,EAAE,IAAI;SACjB,CAAC;QACF,UAAU,EAAE,2BAAQ,CAAC,cAAc,CAAC;YAChC,WAAW,EAAE,aAAa;YAC1B,WAAW,EACP,sGAAsG;YAC1G,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,QAAQ;YACtB,OAAO,EAAE;gBACL,OAAO,EAAE;oBACL,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,QAAQ,EAAE;oBAC/C,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE;iBAChD;aACJ;SACJ,CAAC;QACF,SAAS,EAAE,2BAAQ,CAAC,MAAM,CAAC;YACvB,WAAW,EAAE,gCAAgC;YAC7C,WAAW,EACP,6GAA6G;YACjH,QAAQ,EAAE,KAAK;SAClB,CAAC;QACF,OAAO,EAAE,2BAAQ,CAAC,QAAQ,CAAC;YACvB,WAAW,EAAE,gBAAgB;YAC7B,WAAW,EACP,4GAA4G;YAChH,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,IAAI;SACrB,CAAC;QACF,OAAO,EAAE,2BAAQ,CAAC,MAAM,CAAC;YACrB,WAAW,EAAE,mBAAmB;YAChC,WAAW,EAAE,qDAAqD;YAClE,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,EAAE;SACnB,CAAC;KACL;IACD,KAAK,CAAC,GAAG,CAAC,OAAO;QACb,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,GACjE,OAAO,CAAC,UAAU,CAAC;QACvB,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC;QACxD,MAAM,SAAS,GACX,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;QACpE,MAAM,KAAK,GACN,OAAO,CAAC,IAAsC,IAAI,SAAS,CAAC;QAEjE,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAe,EAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE;YAC9D,UAAU,EAAG,UAAqC,IAAI,QAAQ;YAC9D,SAAS,EACL,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAClE,cAAc,EAAE,IAAI;YACpB,SAAS;YACT,OAAO,EAAE,OAAO,IAAI,IAAI;YACxB,cAAc,EAAE,KAAK;SACxB,CAAC,CAAC;QAEH,OAAO;YACH,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,OAAO;YACtB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,QAAQ,EAAE,MAAM,CAAC,YAAY;YAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;YACjD,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACxC,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;aACzB,CAAC,CAAC;SACN,CAAC;IACN,CAAC;CACJ,CAAC,CAAC"}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateEmails = void 0;
4
- const tslib_1 = require("tslib");
5
4
  const pieces_framework_1 = require("@activepieces/pieces-framework");
6
5
  const patterns_1 = require("../common/patterns");
7
6
  exports.generateEmails = (0, pieces_framework_1.createAction)({
@@ -42,19 +41,16 @@ exports.generateEmails = (0, pieces_framework_1.createAction)({
42
41
  required: false,
43
42
  }),
44
43
  },
45
- run(context) {
46
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
47
- var _a;
48
- const { firstName, lastName, domain, patternSet, maxVariants } = context.propsValue;
49
- const emails = (0, patterns_1.generateEmailCandidates)({
50
- firstName,
51
- lastName,
52
- domain,
53
- patternSet: (_a = patternSet) !== null && _a !== void 0 ? _a : "all",
54
- maxVariants: maxVariants != null ? Number(maxVariants) : undefined,
55
- });
56
- return { emails, count: emails.length };
44
+ async run(context) {
45
+ const { firstName, lastName, domain, patternSet, maxVariants } = context.propsValue;
46
+ const emails = (0, patterns_1.generateEmailCandidates)({
47
+ firstName,
48
+ lastName,
49
+ domain,
50
+ patternSet: patternSet ?? "all",
51
+ maxVariants: maxVariants != null ? Number(maxVariants) : undefined,
57
52
  });
53
+ return { emails, count: emails.length };
58
54
  },
59
55
  });
60
56
  //# sourceMappingURL=generate-emails.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-emails.js","sourceRoot":"","sources":["../../../../src/lib/actions/generate-emails.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,iDAA8E;AAEjE,QAAA,cAAc,GAAG,IAAA,+BAAY,EAAC;IACvC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,qBAAqB;IAClC,WAAW,EACP,uJAAuJ;IAC3J,KAAK,EAAE;QACH,SAAS,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC1B,WAAW,EAAE,YAAY;YACzB,WAAW,EAAE,gDAAgD;YAC7D,QAAQ,EAAE,IAAI;SACjB,CAAC;QACF,QAAQ,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACzB,WAAW,EAAE,WAAW;YACxB,WAAW,EAAE,+CAA+C;YAC5D,QAAQ,EAAE,IAAI;SACjB,CAAC;QACF,MAAM,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACvB,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,mCAAmC;YAChD,QAAQ,EAAE,IAAI;SACjB,CAAC;QACF,UAAU,EAAE,2BAAQ,CAAC,cAAc,CAAC;YAChC,WAAW,EAAE,aAAa;YAC1B,WAAW,EACP,wHAAwH;YAC5H,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,KAAK;YACnB,OAAO,EAAE;gBACL,OAAO,EAAE;oBACL,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE;oBAC7C,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,QAAQ,EAAE;iBAClD;aACJ;SACJ,CAAC;QACF,WAAW,EAAE,2BAAQ,CAAC,MAAM,CAAC;YACzB,WAAW,EAAE,cAAc;YAC3B,WAAW,EACP,iFAAiF;YACrF,QAAQ,EAAE,KAAK;SAClB,CAAC;KACL;IACK,GAAG,CAAC,OAAO;;;YACb,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAC1D,OAAO,CAAC,UAAU,CAAC;YACvB,MAAM,MAAM,GAAG,IAAA,kCAAuB,EAAC;gBACnC,SAAS;gBACT,QAAQ;gBACR,MAAM;gBACN,UAAU,EAAE,MAAC,UAAqC,mCAAI,KAAK;gBAC3D,WAAW,EACP,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;aAC5D,CAAC,CAAC;YACH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QAC5C,CAAC;KAAA;CACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"generate-emails.js","sourceRoot":"","sources":["../../../../src/lib/actions/generate-emails.ts"],"names":[],"mappings":";;;AAAA,qEAAwE;AACxE,iDAA8E;AAEjE,QAAA,cAAc,GAAG,IAAA,+BAAY,EAAC;IACvC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,qBAAqB;IAClC,WAAW,EACP,uJAAuJ;IAC3J,KAAK,EAAE;QACH,SAAS,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC1B,WAAW,EAAE,YAAY;YACzB,WAAW,EAAE,gDAAgD;YAC7D,QAAQ,EAAE,IAAI;SACjB,CAAC;QACF,QAAQ,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACzB,WAAW,EAAE,WAAW;YACxB,WAAW,EAAE,+CAA+C;YAC5D,QAAQ,EAAE,IAAI;SACjB,CAAC;QACF,MAAM,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACvB,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,mCAAmC;YAChD,QAAQ,EAAE,IAAI;SACjB,CAAC;QACF,UAAU,EAAE,2BAAQ,CAAC,cAAc,CAAC;YAChC,WAAW,EAAE,aAAa;YAC1B,WAAW,EACP,wHAAwH;YAC5H,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,KAAK;YACnB,OAAO,EAAE;gBACL,OAAO,EAAE;oBACL,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,KAAK,EAAE;oBAC7C,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,QAAQ,EAAE;iBAClD;aACJ;SACJ,CAAC;QACF,WAAW,EAAE,2BAAQ,CAAC,MAAM,CAAC;YACzB,WAAW,EAAE,cAAc;YAC3B,WAAW,EACP,iFAAiF;YACrF,QAAQ,EAAE,KAAK;SAClB,CAAC;KACL;IACD,KAAK,CAAC,GAAG,CAAC,OAAO;QACb,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,GAC1D,OAAO,CAAC,UAAU,CAAC;QACvB,MAAM,MAAM,GAAG,IAAA,kCAAuB,EAAC;YACnC,SAAS;YACT,QAAQ;YACR,MAAM;YACN,UAAU,EAAG,UAAqC,IAAI,KAAK;YAC3D,WAAW,EACP,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS;SAC5D,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IAC5C,CAAC;CACJ,CAAC,CAAC"}
@@ -7,34 +7,31 @@
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.resolveMail = resolveMail;
10
- const tslib_1 = require("tslib");
11
10
  const node_dns_1 = require("node:dns");
12
- function resolveMail(domain) {
13
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
14
- try {
15
- const records = yield node_dns_1.promises.resolveMx(domain);
16
- const real = records.filter((record) => record.exchange && record.exchange !== ".");
17
- // Records exist but every exchange is empty/"." explicit null MX.
18
- if (records.length > 0 && real.length === 0) {
19
- return { hosts: [], nullMx: true };
20
- }
21
- if (real.length > 0) {
22
- const hosts = real
23
- .sort((a, b) => a.priority - b.priority)
24
- .map((record) => record.exchange);
25
- return { hosts, nullMx: false };
26
- }
11
+ async function resolveMail(domain) {
12
+ try {
13
+ const records = await node_dns_1.promises.resolveMx(domain);
14
+ const real = records.filter((record) => record.exchange && record.exchange !== ".");
15
+ // Records exist but every exchange is empty/"." explicit null MX.
16
+ if (records.length > 0 && real.length === 0) {
17
+ return { hosts: [], nullMx: true };
27
18
  }
28
- catch (_a) {
29
- // No MX records; fall back to the implicit-MX (A/AAAA) lookup below.
19
+ if (real.length > 0) {
20
+ const hosts = real
21
+ .sort((a, b) => a.priority - b.priority)
22
+ .map((record) => record.exchange);
23
+ return { hosts, nullMx: false };
30
24
  }
31
- try {
32
- yield node_dns_1.promises.lookup(domain);
33
- return { hosts: [domain], nullMx: false };
34
- }
35
- catch (_b) {
36
- return { hosts: [], nullMx: false };
37
- }
38
- });
25
+ }
26
+ catch {
27
+ // No MX records; fall back to the implicit-MX (A/AAAA) lookup below.
28
+ }
29
+ try {
30
+ await node_dns_1.promises.lookup(domain);
31
+ return { hosts: [domain], nullMx: false };
32
+ }
33
+ catch {
34
+ return { hosts: [], nullMx: false };
35
+ }
39
36
  }
40
37
  //# sourceMappingURL=dns.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dns.js","sourceRoot":"","sources":["../../../../src/lib/common/dns.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAWH,kCA0BC;;AAnCD,uCAA2C;AAS3C,SAAsB,WAAW,CAAC,MAAc;;QAC5C,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,mBAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CACvB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,GAAG,CACzD,CAAC;YACF,oEAAoE;YACpE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1C,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YACvC,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClB,MAAM,KAAK,GAAG,IAAI;qBACb,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;qBACvC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACtC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YACpC,CAAC;QACL,CAAC;QAAC,WAAM,CAAC;YACL,qEAAqE;QACzE,CAAC;QAED,IAAI,CAAC;YACD,MAAM,mBAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzB,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC9C,CAAC;QAAC,WAAM,CAAC;YACL,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QACxC,CAAC;IACL,CAAC;CAAA"}
1
+ {"version":3,"file":"dns.js","sourceRoot":"","sources":["../../../../src/lib/common/dns.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAWH,kCA0BC;AAnCD,uCAA2C;AASpC,KAAK,UAAU,WAAW,CAAC,MAAc;IAC5C,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,mBAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CACvB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,GAAG,CACzD,CAAC;QACF,oEAAoE;QACpE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1C,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACvC,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,IAAI;iBACb,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;iBACvC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACtC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QACpC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,qEAAqE;IACzE,CAAC;IAED,IAAI,CAAC;QACD,MAAM,mBAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;AACL,CAAC"}
@@ -2,8 +2,10 @@
2
2
  * Credit-minimizing email search (layers 1 + 2).
3
3
  *
4
4
  * Candidates arrive pre-ordered by likelihood and are verified top-down in
5
- * rounds of `batchSize` (1 = strictly sequential). Each completed round is read
6
- * back in candidate order, so the verdict is identical to checking one at a time:
5
+ * rounds of `batchSize` (1 = strictly sequential). A round is one bulk provider
6
+ * call when the verifier exposes `verifyBatch` (no2bounce), otherwise concurrent
7
+ * `verify` calls; either way the round is read back in candidate order, so the
8
+ * verdict is identical to checking one at a time:
7
9
  * - stop at the first `valid` hit (layer 2: early-stop), and
8
10
  * - stop immediately on a `catch_all` verdict, since a catch-all domain the
9
11
  * verifier can't score further can't disambiguate individual mailboxes —
@@ -1 +1 @@
1
- {"version":3,"file":"find-email.d.ts","sourceRoot":"","sources":["../../../../src/lib/common/find-email.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEzE,MAAM,WAAW,gBAAgB;IAC7B,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC7B;AAgCD,wBAAsB,SAAS,CAC3B,UAAU,EAAE,MAAM,EAAE,EACpB,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,gBAAqB,GAC/B,OAAO,CAAC,eAAe,CAAC,CAmE1B"}
1
+ {"version":3,"file":"find-email.d.ts","sourceRoot":"","sources":["../../../../src/lib/common/find-email.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEzE,MAAM,WAAW,gBAAgB;IAC7B,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC7B;AAgCD,wBAAsB,SAAS,CAC3B,UAAU,EAAE,MAAM,EAAE,EACpB,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,gBAAqB,GAC/B,OAAO,CAAC,eAAe,CAAC,CAmE1B"}
@@ -3,8 +3,10 @@
3
3
  * Credit-minimizing email search (layers 1 + 2).
4
4
  *
5
5
  * Candidates arrive pre-ordered by likelihood and are verified top-down in
6
- * rounds of `batchSize` (1 = strictly sequential). Each completed round is read
7
- * back in candidate order, so the verdict is identical to checking one at a time:
6
+ * rounds of `batchSize` (1 = strictly sequential). A round is one bulk provider
7
+ * call when the verifier exposes `verifyBatch` (no2bounce), otherwise concurrent
8
+ * `verify` calls; either way the round is read back in candidate order, so the
9
+ * verdict is identical to checking one at a time:
8
10
  * - stop at the first `valid` hit (layer 2: early-stop), and
9
11
  * - stop immediately on a `catch_all` verdict, since a catch-all domain the
10
12
  * verifier can't score further can't disambiguate individual mailboxes —
@@ -19,7 +21,6 @@
19
21
  */
20
22
  Object.defineProperty(exports, "__esModule", { value: true });
21
23
  exports.findEmail = findEmail;
22
- const tslib_1 = require("tslib");
23
24
  const CONFIDENCE = {
24
25
  valid: 0.9,
25
26
  catch_all: 0.5,
@@ -40,43 +41,42 @@ function result(found, email, verdict, catchAll, attempts, creditsUsed) {
40
41
  attempts,
41
42
  };
42
43
  }
43
- function findEmail(candidates_1, verifier_1) {
44
- return tslib_1.__awaiter(this, arguments, void 0, function* (candidates, verifier, options = {}) {
45
- var _a, _b, _c, _d, _e;
46
- const stopOnFirstHit = (_a = options.stopOnFirstHit) !== null && _a !== void 0 ? _a : true;
47
- const batchSize = Math.max(1, (_b = options.batchSize) !== null && _b !== void 0 ? _b : 1);
48
- const limit = Math.min((_c = options.maxChecks) !== null && _c !== void 0 ? _c : candidates.length, candidates.length);
49
- const attempts = [];
50
- let creditsUsed = 0;
51
- let firstValid = null;
52
- for (let start = 0; start < limit; start += batchSize) {
53
- const round = candidates.slice(start, Math.min(start + batchSize, limit));
54
- const outcomes = yield Promise.all(round.map((email) => verifier.verify(email)));
55
- // The whole round is billed on submit (no2bounce charges per email with
56
- // no refund), so count every result before deciding the verdict.
57
- for (const outcome of outcomes) {
58
- attempts.push(outcome);
59
- creditsUsed += outcome.creditsUsed;
44
+ async function findEmail(candidates, verifier, options = {}) {
45
+ const stopOnFirstHit = options.stopOnFirstHit ?? true;
46
+ const batchSize = Math.max(1, options.batchSize ?? 1);
47
+ const limit = Math.min(options.maxChecks ?? candidates.length, candidates.length);
48
+ const attempts = [];
49
+ let creditsUsed = 0;
50
+ let firstValid = null;
51
+ for (let start = 0; start < limit; start += batchSize) {
52
+ const round = candidates.slice(start, Math.min(start + batchSize, limit));
53
+ const outcomes = verifier.verifyBatch
54
+ ? await verifier.verifyBatch(round)
55
+ : await Promise.all(round.map((email) => verifier.verify(email)));
56
+ // The whole round is billed on submit (no2bounce charges per email with
57
+ // no refund), so count every result before deciding the verdict.
58
+ for (const outcome of outcomes) {
59
+ attempts.push(outcome);
60
+ creditsUsed += outcome.creditsUsed;
61
+ }
62
+ for (const outcome of outcomes) {
63
+ if (outcome.verdict === "catch_all") {
64
+ return result(false, null, "catch_all", true, attempts, creditsUsed);
60
65
  }
61
- for (const outcome of outcomes) {
62
- if (outcome.verdict === "catch_all") {
63
- return result(false, null, "catch_all", true, attempts, creditsUsed);
66
+ if (outcome.verdict === "valid") {
67
+ if (!firstValid) {
68
+ firstValid = outcome;
64
69
  }
65
- if (outcome.verdict === "valid") {
66
- if (!firstValid) {
67
- firstValid = outcome;
68
- }
69
- if (stopOnFirstHit) {
70
- return result(true, outcome.email, "valid", (_d = outcome.catchAll) !== null && _d !== void 0 ? _d : false, attempts, creditsUsed);
71
- }
70
+ if (stopOnFirstHit) {
71
+ return result(true, outcome.email, "valid", outcome.catchAll ?? false, attempts, creditsUsed);
72
72
  }
73
73
  }
74
74
  }
75
- if (firstValid) {
76
- return result(true, firstValid.email, "valid", (_e = firstValid.catchAll) !== null && _e !== void 0 ? _e : false, attempts, creditsUsed);
77
- }
78
- const sawUnknown = attempts.some((a) => a.verdict === "unknown");
79
- return result(false, null, sawUnknown ? "unknown" : "invalid", attempts.some((a) => a.catchAll === true), attempts, creditsUsed);
80
- });
75
+ }
76
+ if (firstValid) {
77
+ return result(true, firstValid.email, "valid", firstValid.catchAll ?? false, attempts, creditsUsed);
78
+ }
79
+ const sawUnknown = attempts.some((a) => a.verdict === "unknown");
80
+ return result(false, null, sawUnknown ? "unknown" : "invalid", attempts.some((a) => a.catchAll === true), attempts, creditsUsed);
81
81
  }
82
82
  //# sourceMappingURL=find-email.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"find-email.js","sourceRoot":"","sources":["../../../../src/lib/common/find-email.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"find-email.js","sourceRoot":"","sources":["../../../../src/lib/common/find-email.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,6 @@
11
11
  */
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.findPersonEmail = findPersonEmail;
14
- const tslib_1 = require("tslib");
15
14
  const dns_1 = require("./dns");
16
15
  const find_email_1 = require("./find-email");
17
16
  const mx_fingerprint_1 = require("./mx-fingerprint");
@@ -37,62 +36,67 @@ function earlyExit(candidatesConsidered, domain, mxProvider, verdict, confidence
37
36
  candidatesConsidered,
38
37
  };
39
38
  }
40
- function findPersonEmail(firstName, lastName, domain, options) {
41
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
42
- const candidates = (0, patterns_1.generateEmailCandidates)({
43
- firstName,
44
- lastName,
45
- domain,
46
- patternSet: options.patternSet,
47
- maxVariants: options.maxVariants,
48
- });
49
- const cleanDomain = (0, patterns_1.normalizeDomain)(domain);
50
- if (candidates.length === 0) {
51
- return earlyExit(0, cleanDomain, "none", "invalid", 0.03, "no_candidates");
52
- }
53
- const routing = yield (0, dns_1.resolveMail)(cleanDomain);
54
- const provider = (0, mx_fingerprint_1.fingerprintMx)(routing.hosts);
55
- if (routing.nullMx) {
56
- return earlyExit(candidates.length, cleanDomain, provider.id, "invalid", 0.02, "null_mx");
57
- }
58
- if (routing.hosts.length === 0) {
59
- return earlyExit(candidates.length, cleanDomain, provider.id, "invalid", 0.03, "no_mx_record");
60
- }
61
- const consumer = (0, o365_1.isMicrosoftConsumerDomain)(cleanDomain);
62
- let namespace = null;
63
- let microsoftBacked = consumer || provider.microsoftBacked;
64
- // Only spend a realm lookup on ambiguous MX (not obviously Microsoft, not a
65
- // known foreign mailbox host) — that's where O365-behind-a-gateway hides.
66
- if (options.useO365 &&
67
- !microsoftBacked &&
68
- !(0, mx_fingerprint_1.hostsNonMicrosoftMailboxes)(provider)) {
69
- namespace = yield (0, o365_1.getUserRealm)(cleanDomain, options.timeoutMs);
70
- if (namespace === "Managed") {
71
- microsoftBacked = true;
72
- }
73
- }
74
- let verifier;
75
- let verifierUsed;
76
- if (options.useO365 && microsoftBacked) {
77
- verifier = (0, o365_verifier_1.createO365Verifier)(namespace !== null && namespace !== void 0 ? namespace : "Managed", true, options.timeoutMs);
78
- verifierUsed = "o365";
79
- }
80
- else if (options.no2bounceToken) {
81
- verifier = (0, no2bounce_verifier_1.createNo2BounceVerifier)({
82
- apitoken: options.no2bounceToken,
83
- timeoutMs: options.timeoutMs,
84
- });
85
- verifierUsed = "no2bounce";
86
- }
87
- else {
88
- return earlyExit(candidates.length, cleanDomain, provider.id, "unknown", 0.5, "no2bounce_token_required");
39
+ async function findPersonEmail(firstName, lastName, domain, options) {
40
+ const candidates = (0, patterns_1.generateEmailCandidates)({
41
+ firstName,
42
+ lastName,
43
+ domain,
44
+ patternSet: options.patternSet,
45
+ maxVariants: options.maxVariants,
46
+ });
47
+ const cleanDomain = (0, patterns_1.normalizeDomain)(domain);
48
+ if (candidates.length === 0) {
49
+ return earlyExit(0, cleanDomain, "none", "invalid", 0.03, "no_candidates");
50
+ }
51
+ const routing = await (0, dns_1.resolveMail)(cleanDomain);
52
+ const provider = (0, mx_fingerprint_1.fingerprintMx)(routing.hosts);
53
+ if (routing.nullMx) {
54
+ return earlyExit(candidates.length, cleanDomain, provider.id, "invalid", 0.02, "null_mx");
55
+ }
56
+ if (routing.hosts.length === 0) {
57
+ return earlyExit(candidates.length, cleanDomain, provider.id, "invalid", 0.03, "no_mx_record");
58
+ }
59
+ const consumer = (0, o365_1.isMicrosoftConsumerDomain)(cleanDomain);
60
+ let namespace = null;
61
+ let microsoftBacked = consumer || provider.microsoftBacked;
62
+ // Only spend a realm lookup on ambiguous MX (not obviously Microsoft, not a
63
+ // known foreign mailbox host) that's where O365-behind-a-gateway hides.
64
+ if (options.useO365 &&
65
+ !microsoftBacked &&
66
+ !(0, mx_fingerprint_1.hostsNonMicrosoftMailboxes)(provider)) {
67
+ namespace = await (0, o365_1.getUserRealm)(cleanDomain, options.timeoutMs);
68
+ if (namespace === "Managed") {
69
+ microsoftBacked = true;
89
70
  }
90
- const result = yield (0, find_email_1.findEmail)(candidates, verifier, {
91
- maxChecks: options.maxChecks,
92
- stopOnFirstHit: options.stopOnFirstHit,
93
- batchSize: verifierUsed === "no2bounce" ? NO2BOUNCE_BATCH_SIZE : 1,
71
+ }
72
+ let verifier;
73
+ let verifierUsed;
74
+ if (options.useO365 && microsoftBacked) {
75
+ verifier = (0, o365_verifier_1.createO365Verifier)(namespace ?? "Managed", true, options.timeoutMs);
76
+ verifierUsed = "o365";
77
+ }
78
+ else if (options.no2bounceToken) {
79
+ verifier = (0, no2bounce_verifier_1.createNo2BounceVerifier)({
80
+ apitoken: options.no2bounceToken,
81
+ timeoutMs: options.timeoutMs,
94
82
  });
95
- return Object.assign(Object.assign({}, result), { reason: `${verifierUsed}_${result.verdict}`, domain: cleanDomain, mxProvider: provider.id, verifierUsed, candidatesConsidered: candidates.length });
83
+ verifierUsed = "no2bounce";
84
+ }
85
+ else {
86
+ return earlyExit(candidates.length, cleanDomain, provider.id, "unknown", 0.5, "no2bounce_token_required");
87
+ }
88
+ const result = await (0, find_email_1.findEmail)(candidates, verifier, {
89
+ maxChecks: options.maxChecks,
90
+ stopOnFirstHit: options.stopOnFirstHit,
91
+ batchSize: verifierUsed === "no2bounce" ? NO2BOUNCE_BATCH_SIZE : 1,
96
92
  });
93
+ return {
94
+ ...result,
95
+ reason: `${verifierUsed}_${result.verdict}`,
96
+ domain: cleanDomain,
97
+ mxProvider: provider.id,
98
+ verifierUsed,
99
+ candidatesConsidered: candidates.length,
100
+ };
97
101
  }
98
102
  //# sourceMappingURL=find-person.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"find-person.js","sourceRoot":"","sources":["../../../../src/lib/common/find-person.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"find-person.js","sourceRoot":"","sources":["../../../../src/lib/common/find-person.ts"],"names":[],"mappings":"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"}
@@ -15,8 +15,7 @@ const DEFAULT_USER_AGENT = "Mozilla/5.0 (compatible; ap-email-guessr/0.2; +https
15
15
  * timeout so callers can map those to a neutral signal.
16
16
  */
17
17
  function httpRequest(options) {
18
- var _a;
19
- const method = (_a = options.method) !== null && _a !== void 0 ? _a : "GET";
18
+ const method = options.method ?? "GET";
20
19
  const url = new URL(options.url);
21
20
  return new Promise((resolve, reject) => {
22
21
  const req = (0, node_https_1.request)({
@@ -25,10 +24,13 @@ function httpRequest(options) {
25
24
  port: url.port || 443,
26
25
  path: `${url.pathname}${url.search}`,
27
26
  method,
28
- headers: Object.assign({ "User-Agent": DEFAULT_USER_AGENT, Accept: "*/*" }, options.headers),
27
+ headers: {
28
+ "User-Agent": DEFAULT_USER_AGENT,
29
+ Accept: "*/*",
30
+ ...options.headers,
31
+ },
29
32
  }, (res) => {
30
- var _a;
31
- const status = (_a = res.statusCode) !== null && _a !== void 0 ? _a : 0;
33
+ const status = res.statusCode ?? 0;
32
34
  // HEAD has no body; drain and resolve immediately.
33
35
  if (method === "HEAD") {
34
36
  res.resume();
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../../src/lib/common/http.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAyBH,kCA4DC;AAnFD,2CAAqD;AAerD,MAAM,kBAAkB,GACpB,8EAA8E,CAAC;AAEnF;;;;GAIG;AACH,SAAgB,WAAW,CACvB,OAA2B;;IAE3B,MAAM,MAAM,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,KAAK,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEjC,OAAO,IAAI,OAAO,CAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACjD,MAAM,GAAG,GAAG,IAAA,oBAAY,EACpB;YACI,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,GAAG;YACrB,IAAI,EAAE,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;YACpC,MAAM;YACN,OAAO,kBACH,YAAY,EAAE,kBAAkB,EAChC,MAAM,EAAE,KAAK,IACV,OAAO,CAAC,OAAO,CACrB;SACJ,EACD,CAAC,GAAG,EAAE,EAAE;;YACJ,MAAM,MAAM,GAAG,MAAA,GAAG,CAAC,UAAU,mCAAI,CAAC,CAAC;YAEnC,mDAAmD;YACnD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACpB,GAAG,CAAC,MAAM,EAAE,CAAC;gBACb,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBACnD,OAAO;YACX,CAAC;YAED,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,gEAAgE;YAChE,8DAA8D;YAC9D,MAAM,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC;YAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC7B,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;gBACtB,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;oBACpB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACJ,GAAG,CAAC,OAAO,EAAE,CAAC;gBAClB,CAAC;YACL,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CACf,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CACpE,CAAC;YACF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC,CACJ,CAAC;QAEF,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE;YACnC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAExB,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAClD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,GAAG,CAAC,GAAG,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../../../src/lib/common/http.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAyBH,kCA4DC;AAnFD,2CAAqD;AAerD,MAAM,kBAAkB,GACpB,8EAA8E,CAAC;AAEnF;;;;GAIG;AACH,SAAgB,WAAW,CACvB,OAA2B;IAE3B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEjC,OAAO,IAAI,OAAO,CAAe,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACjD,MAAM,GAAG,GAAG,IAAA,oBAAY,EACpB;YACI,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,GAAG;YACrB,IAAI,EAAE,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;YACpC,MAAM;YACN,OAAO,EAAE;gBACL,YAAY,EAAE,kBAAkB;gBAChC,MAAM,EAAE,KAAK;gBACb,GAAG,OAAO,CAAC,OAAO;aACrB;SACJ,EACD,CAAC,GAAG,EAAE,EAAE;YACJ,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,IAAI,CAAC,CAAC;YAEnC,mDAAmD;YACnD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACpB,GAAG,CAAC,MAAM,EAAE,CAAC;gBACb,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBACnD,OAAO;YACX,CAAC;YAED,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,gEAAgE;YAChE,8DAA8D;YAC9D,MAAM,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC;YAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC7B,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;gBACtB,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;oBACpB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACJ,GAAG,CAAC,OAAO,EAAE,CAAC;gBAClB,CAAC;YACL,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CACf,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CACpE,CAAC;YACF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC,CACJ,CAAC;QAEF,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE;YACnC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAExB,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAClD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,GAAG,CAAC,GAAG,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -81,7 +81,6 @@ const OTHER = {
81
81
  };
82
82
  /** Classify a domain's mail provider from its ordered MX hostnames. */
83
83
  function fingerprintMx(mxHosts) {
84
- var _a, _b, _c;
85
84
  if (mxHosts.length === 0) {
86
85
  return NONE;
87
86
  }
@@ -92,9 +91,9 @@ function fingerprintMx(mxHosts) {
92
91
  return {
93
92
  id: rule.id,
94
93
  name: rule.name,
95
- isGateway: (_a = rule.isGateway) !== null && _a !== void 0 ? _a : false,
96
- microsoftBacked: (_b = rule.microsoftBacked) !== null && _b !== void 0 ? _b : false,
97
- googleBacked: (_c = rule.googleBacked) !== null && _c !== void 0 ? _c : false,
94
+ isGateway: rule.isGateway ?? false,
95
+ microsoftBacked: rule.microsoftBacked ?? false,
96
+ googleBacked: rule.googleBacked ?? false,
98
97
  };
99
98
  }
100
99
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mx-fingerprint.js","sourceRoot":"","sources":["../../../../src/lib/common/mx-fingerprint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mx-fingerprint.js","sourceRoot":"","sources":["../../../../src/lib/common/mx-fingerprint.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AA2GH,sCAuBC;AAOD,gEAQC;AA7GD,+EAA+E;AAC/E,kEAAkE;AAClE,MAAM,KAAK,GAAgB;IACvB;QACI,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,CAAC,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,CAAC;QAC7D,SAAS,EAAE,IAAI;KAClB;IACD;QACI,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,CAAC,cAAc,EAAE,gBAAgB,EAAE,uBAAuB,CAAC;QACpE,SAAS,EAAE,IAAI;KAClB;IACD;QACI,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,CAAC,uBAAuB,EAAE,aAAa,EAAE,cAAc,CAAC;QACjE,SAAS,EAAE,IAAI;KAClB;IACD;QACI,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC;QACtC,SAAS,EAAE,IAAI;KAClB;IACD;QACI,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,CAAC,6BAA6B,EAAE,4BAA4B,CAAC;QACtE,eAAe,EAAE,IAAI;KACxB;IACD;QACI,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE;YACL,oBAAoB;YACpB,gBAAgB;YAChB,kBAAkB;YAClB,WAAW;SACd;QACD,YAAY,EAAE,IAAI;KACrB;IACD,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE;IAC/E,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,cAAc,CAAC,EAAE;IACzD,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC,EAAE;IACtE;QACI,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,CAAC,qBAAqB,EAAE,cAAc,CAAC;KACnD;CACJ,CAAC;AAEF,MAAM,IAAI,GAAe;IACrB,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,KAAK;IAChB,eAAe,EAAE,KAAK;IACtB,YAAY,EAAE,KAAK;CACtB,CAAC;AAEF,MAAM,KAAK,GAAe;IACtB,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,iBAAiB;IACvB,SAAS,EAAE,KAAK;IAChB,eAAe,EAAE,KAAK;IACtB,YAAY,EAAE,KAAK;CACtB,CAAC;AAEF,uEAAuE;AACvE,SAAgB,aAAa,CAAC,OAAiB;IAC3C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IAE3E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CACvD,CAAC;QACF,IAAI,GAAG,EAAE,CAAC;YACN,OAAO;gBACH,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK;gBAClC,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,KAAK;gBAC9C,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,KAAK;aAC3C,CAAC;QACN,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAgB,0BAA0B,CAAC,QAAoB;IAC3D,OAAO,CACH,QAAQ,CAAC,YAAY;QACrB,QAAQ,CAAC,EAAE,KAAK,MAAM;QACtB,QAAQ,CAAC,EAAE,KAAK,OAAO;QACvB,QAAQ,CAAC,EAAE,KAAK,QAAQ;QACxB,QAAQ,CAAC,EAAE,KAAK,UAAU,CAC7B,CAAC;AACN,CAAC"}