@konfeature/ap-email-guessr 0.1.0 → 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 (58) hide show
  1. package/package.json +31 -40
  2. package/src/i18n/translation.json +17 -0
  3. package/src/index.d.ts.map +1 -0
  4. package/src/index.js.map +1 -0
  5. package/src/lib/actions/find-email.d.ts.map +1 -0
  6. package/src/lib/actions/find-email.js.map +1 -0
  7. package/src/lib/actions/generate-emails.d.ts.map +1 -0
  8. package/src/lib/actions/generate-emails.js.map +1 -0
  9. package/src/lib/common/dns.d.ts.map +1 -0
  10. package/src/lib/common/dns.js.map +1 -0
  11. package/{dist/src → src}/lib/common/find-email.d.ts +4 -2
  12. package/src/lib/common/find-email.d.ts.map +1 -0
  13. package/{dist/src → src}/lib/common/find-email.js +7 -3
  14. package/src/lib/common/find-email.js.map +1 -0
  15. package/src/lib/common/find-person.d.ts.map +1 -0
  16. package/src/lib/common/find-person.js.map +1 -0
  17. package/src/lib/common/http.d.ts.map +1 -0
  18. package/src/lib/common/http.js.map +1 -0
  19. package/src/lib/common/mx-fingerprint.d.ts.map +1 -0
  20. package/src/lib/common/mx-fingerprint.js.map +1 -0
  21. package/src/lib/common/patterns.d.ts.map +1 -0
  22. package/src/lib/common/patterns.js.map +1 -0
  23. package/src/lib/common/providers/o365.d.ts.map +1 -0
  24. package/src/lib/common/providers/o365.js.map +1 -0
  25. package/{dist/src → src}/lib/common/verifier.d.ts +2 -0
  26. package/src/lib/common/verifier.d.ts.map +1 -0
  27. package/src/lib/common/verifier.js.map +1 -0
  28. package/src/lib/common/verifiers/no2bounce-verifier.d.ts +43 -0
  29. package/src/lib/common/verifiers/no2bounce-verifier.d.ts.map +1 -0
  30. package/src/lib/common/verifiers/no2bounce-verifier.js +271 -0
  31. package/src/lib/common/verifiers/no2bounce-verifier.js.map +1 -0
  32. package/src/lib/common/verifiers/o365-verifier.d.ts.map +1 -0
  33. package/src/lib/common/verifiers/o365-verifier.js +32 -0
  34. package/src/lib/common/verifiers/o365-verifier.js.map +1 -0
  35. package/README.md +0 -128
  36. package/dist/src/lib/common/verifiers/no2bounce-verifier.d.ts +0 -34
  37. package/dist/src/lib/common/verifiers/no2bounce-verifier.js +0 -123
  38. package/dist/src/lib/common/verifiers/o365-verifier.js +0 -30
  39. /package/{dist/src → src}/index.d.ts +0 -0
  40. /package/{dist/src → src}/index.js +0 -0
  41. /package/{dist/src → src}/lib/actions/find-email.d.ts +0 -0
  42. /package/{dist/src → src}/lib/actions/find-email.js +0 -0
  43. /package/{dist/src → src}/lib/actions/generate-emails.d.ts +0 -0
  44. /package/{dist/src → src}/lib/actions/generate-emails.js +0 -0
  45. /package/{dist/src → src}/lib/common/dns.d.ts +0 -0
  46. /package/{dist/src → src}/lib/common/dns.js +0 -0
  47. /package/{dist/src → src}/lib/common/find-person.d.ts +0 -0
  48. /package/{dist/src → src}/lib/common/find-person.js +0 -0
  49. /package/{dist/src → src}/lib/common/http.d.ts +0 -0
  50. /package/{dist/src → src}/lib/common/http.js +0 -0
  51. /package/{dist/src → src}/lib/common/mx-fingerprint.d.ts +0 -0
  52. /package/{dist/src → src}/lib/common/mx-fingerprint.js +0 -0
  53. /package/{dist/src → src}/lib/common/patterns.d.ts +0 -0
  54. /package/{dist/src → src}/lib/common/patterns.js +0 -0
  55. /package/{dist/src → src}/lib/common/providers/o365.d.ts +0 -0
  56. /package/{dist/src → src}/lib/common/providers/o365.js +0 -0
  57. /package/{dist/src → src}/lib/common/verifier.js +0 -0
  58. /package/{dist/src → src}/lib/common/verifiers/o365-verifier.d.ts +0 -0
package/package.json CHANGED
@@ -1,42 +1,33 @@
1
1
  {
2
- "name": "@konfeature/ap-email-guessr",
3
- "version": "0.1.0",
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.",
5
- "type": "commonjs",
6
- "main": "./dist/src/index.js",
7
- "types": "./dist/src/index.d.ts",
8
- "files": ["dist/src/**/*.js", "dist/src/**/*.d.ts", "README.md"],
9
- "license": "MIT",
10
- "author": "KONFeature",
11
- "repository": {
12
- "type": "git",
13
- "url": "git+https://github.com/KONFeature/ap-email-guessr.git"
14
- },
15
- "homepage": "https://github.com/KONFeature/ap-email-guessr#readme",
16
- "bugs": {
17
- "url": "https://github.com/KONFeature/ap-email-guessr/issues"
18
- },
19
- "keywords": [
20
- "activepieces",
21
- "activepieces-piece",
22
- "email",
23
- "email-finder",
24
- "email-verification",
25
- "no2bounce",
26
- "office365"
27
- ],
28
- "publishConfig": {
29
- "access": "public"
30
- },
31
- "scripts": {
32
- "build": "tsc -p tsconfig.json",
33
- "prepublishOnly": "npm run build"
34
- },
35
- "dependencies": {
36
- "@activepieces/pieces-framework": "0.30.0"
37
- },
38
- "devDependencies": {
39
- "@types/node": "^20.19.0",
40
- "typescript": "^5.7.3"
41
- }
2
+ "name": "@konfeature/ap-email-guessr",
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.",
5
+ "type": "commonjs",
6
+ "main": "./src/index.js",
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
+ ],
27
+ "dependencies": {
28
+ "@activepieces/pieces-framework": "0.30.0"
29
+ },
30
+ "publishConfig": {
31
+ "access": "public"
32
+ }
42
33
  }
@@ -0,0 +1,17 @@
1
+ {
2
+ "Generate likely email addresses from a name and domain, then find the real one — free Microsoft 365 checks plus no2bounce verification, with early-stop to minimize credits.": "Generate likely email addresses from a name and domain, then find the real one — free Microsoft 365 checks plus no2bounce verification, with early-stop to minimize credits.",
3
+ "no2bounce API Token": "no2bounce API Token",
4
+ "API token from no2bounce, used to verify non-Microsoft domains. Optional: Microsoft-backed domains are verified for free via the O365 account check.": "API token from no2bounce, used to verify non-Microsoft domains. Optional: Microsoft-backed domains are verified for free via the O365 account check.",
5
+ "Find Email": "Find Email",
6
+ "Find a person's email from their name and company domain. Generates likely addresses (ordered by real-world frequency), then verifies them top-down — stopping at the first hit or on a catch-all domain — routing Microsoft domains through the free O365 check and everything else through no2bounce.": "Find a person's email from their name and company domain. Generates likely addresses (ordered by real-world frequency), then verifies them top-down — stopping at the first hit or on a catch-all domain — routing Microsoft domains through the free O365 check and everything else through no2bounce.",
7
+ "Generate Email List": "Generate Email List",
8
+ "Build a list of likely email addresses from a first name, last name and domain, ordered by real-world corporate naming frequency (most likely first).": "Build a list of likely email addresses from a first name, last name and domain, ordered by real-world corporate naming frequency (most likely first).",
9
+ "First Name": "First Name",
10
+ "Last Name": "Last Name",
11
+ "Domain": "Domain",
12
+ "Pattern Set": "Pattern Set",
13
+ "Max Verifications (credit cap)": "Max Verifications (credit cap)",
14
+ "Use O365 Check": "Use O365 Check",
15
+ "Timeout (seconds)": "Timeout (seconds)",
16
+ "Max Variants": "Max Variants"
17
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,WAAW,oHAgBtB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,qEAAwE;AACxE,yDAA2D;AAC3D,mEAA+D;AAElD,QAAA,WAAW,GAAG,IAAA,8BAAW,EAAC;IACnC,WAAW,EAAE,cAAc;IAC3B,WAAW,EACP,8KAA8K;IAClL,IAAI,EAAE,4BAAS,CAAC,UAAU,CAAC;QACvB,WAAW,EAAE,qBAAqB;QAClC,WAAW,EACP,sJAAsJ;QAC1J,QAAQ,EAAE,KAAK;KAClB,CAAC;IACF,uBAAuB,EAAE,QAAQ;IACjC,OAAO,EACH,0EAA0E;IAC9E,OAAO,EAAE,CAAC,MAAM,CAAC;IACjB,OAAO,EAAE,CAAC,gCAAc,EAAE,4BAAe,CAAC;IAC1C,QAAQ,EAAE,EAAE;CACf,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-email.d.ts","sourceRoot":"","sources":["../../../../src/lib/actions/find-email.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe;;;;;;;;EA6F1B,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-email.js","sourceRoot":"","sources":["../../../../src/lib/actions/find-email.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-emails.d.ts","sourceRoot":"","sources":["../../../../src/lib/actions/generate-emails.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc;;;;;;EAsDzB,CAAC"}
@@ -0,0 +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;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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dns.d.ts","sourceRoot":"","sources":["../../../../src/lib/common/dns.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,WAAW;IACxB,2EAA2E;IAC3E,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,+DAA+D;IAC/D,MAAM,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA0BtE"}
@@ -0,0 +1 @@
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 —
@@ -0,0 +1 @@
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 —
@@ -48,7 +50,9 @@ async function findEmail(candidates, verifier, options = {}) {
48
50
  let firstValid = null;
49
51
  for (let start = 0; start < limit; start += batchSize) {
50
52
  const round = candidates.slice(start, Math.min(start + batchSize, limit));
51
- const outcomes = await Promise.all(round.map((email) => verifier.verify(email)));
53
+ const outcomes = verifier.verifyBatch
54
+ ? await verifier.verifyBatch(round)
55
+ : await Promise.all(round.map((email) => verifier.verify(email)));
52
56
  // The whole round is billed on submit (no2bounce charges per email with
53
57
  // no refund), so count every result before deciding the verdict.
54
58
  for (const outcome of outcomes) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-email.js","sourceRoot":"","sources":["../../../../src/lib/common/find-email.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-person.d.ts","sourceRoot":"","sources":["../../../../src/lib/common/find-person.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAO/D,OAAO,EAAE,KAAK,UAAU,EAA4C,MAAM,YAAY,CAAC;AAOvF,MAAM,WAAW,iBAAiB;IAC9B,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;CAChC;AA2BD,wBAAsB,eAAe,CACjC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CA6E3B"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-person.js","sourceRoot":"","sources":["../../../../src/lib/common/find-person.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../../src/lib/common/http.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACrB;AAKD;;;;GAIG;AACH,wBAAgB,WAAW,CACvB,OAAO,EAAE,kBAAkB,GAC5B,OAAO,CAAC,YAAY,CAAC,CA0DvB"}
@@ -0,0 +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,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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mx-fingerprint.d.ts","sourceRoot":"","sources":["../../../../src/lib/common/mx-fingerprint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,YAAY,GAClB,QAAQ,GACR,WAAW,GACX,MAAM,GACN,OAAO,GACP,QAAQ,GACR,UAAU,GACV,YAAY,GACZ,UAAU,GACV,WAAW,GACX,gBAAgB,GAChB,OAAO,GACP,MAAM,CAAC;AAEb,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,YAAY,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,SAAS,EAAE,OAAO,CAAC;IACnB,+EAA+E;IAC/E,eAAe,EAAE,OAAO,CAAC;IACzB,wEAAwE;IACxE,YAAY,EAAE,OAAO,CAAC;CACzB;AAiFD,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,UAAU,CAuB3D;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAQxE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mx-fingerprint.js","sourceRoot":"","sources":["../../../../src/lib/common/mx-fingerprint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../../../src/lib/common/patterns.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH,uDAAuD;AACvD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIvD;AAED,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQrD;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE1C,MAAM,WAAW,oBAAoB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AA4CD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAkC9E"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../../../src/lib/common/patterns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o365.d.ts","sourceRoot":"","sources":["../../../../../src/lib/common/providers/o365.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;AAEvE,MAAM,WAAW,UAAU;IACvB,mEAAmE;IACnE,OAAO,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,aAAa,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,cAAc,EAAE,UAM5B,CAAC;AAyBF,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,CAQrE;AAED,4EAA4E;AAC5E,wBAAsB,YAAY,CAC9B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,aAAa,CAAC,CAoBxB;AA0CD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAClC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,UAAU,CAAC,CAwCrB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o365.js","sourceRoot":"","sources":["../../../../../src/lib/common/providers/o365.ts"],"names":[],"mappings":"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"}
@@ -18,5 +18,7 @@ export interface VerifyOutcome {
18
18
  export interface Verifier {
19
19
  readonly name: string;
20
20
  verify(email: string): Promise<VerifyOutcome>;
21
+ /** Optional bulk path: returns one outcome per input email, in input order. */
22
+ verifyBatch?(emails: string[]): Promise<VerifyOutcome[]>;
21
23
  }
22
24
  //# sourceMappingURL=verifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifier.d.ts","sourceRoot":"","sources":["../../../../src/lib/common/verifier.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAE1E,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,aAAa,CAAC;IACvB,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9C,+EAA+E;IAC/E,WAAW,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CAC5D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../../../src/lib/common/verifier.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Verifier adapter for the no2bounce API (wire format confirmed against the live
3
+ * API; the published docs were out of date).
4
+ *
5
+ * Async flow: POST an `emailList` to get a `trackingId` (under `data`), then
6
+ * GET-poll `?trackingId=`. A single address completes with top-level aggregate
7
+ * counts that are that address's verdict. A multi-address batch completes with
8
+ * those same counts (now sums, which can't identify individual addresses) plus
9
+ * `result.downloadFile` — a signed CSV whose rows
10
+ * (`email,finalScore,finalScoreValue,catchall`) carry the per-address verdicts.
11
+ * Billing is 1 credit per email with no refund, charged on submit.
12
+ */
13
+ import type { Verifier, VerifyVerdict } from "../verifier";
14
+ export interface No2BounceOptions {
15
+ apitoken: string;
16
+ timeoutMs: number;
17
+ pollIntervalMs?: number;
18
+ maxWaitMs?: number;
19
+ }
20
+ interface PollResult {
21
+ overallStatus?: string;
22
+ percent?: number;
23
+ creditDebited?: number;
24
+ Deliverable?: number;
25
+ Undeliverable?: number;
26
+ "Deliverable/AcceptAll"?: number;
27
+ "UnDeliverable/AcceptAll"?: number;
28
+ "Risky/AcceptAll"?: number;
29
+ }
30
+ export interface DecodedResult {
31
+ verdict: VerifyVerdict;
32
+ catchAll: boolean;
33
+ }
34
+ interface ReportRow {
35
+ value: string;
36
+ catchall: boolean;
37
+ }
38
+ export declare function decodeSingle(r: PollResult): DecodedResult;
39
+ export declare function decodeReportRow(row: ReportRow): DecodedResult;
40
+ export declare function parseReport(csv: string): Map<string, ReportRow>;
41
+ export declare function createNo2BounceVerifier(options: No2BounceOptions): Verifier;
42
+ export {};
43
+ //# sourceMappingURL=no2bounce-verifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no2bounce-verifier.d.ts","sourceRoot":"","sources":["../../../../../src/lib/common/verifiers/no2bounce-verifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAiB,aAAa,EAAE,MAAM,aAAa,CAAC;AAK1E,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,UAAU,UAAU;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAMD,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,SAAS;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACrB;AAKD,wBAAgB,YAAY,CAAC,CAAC,EAAE,UAAU,GAAG,aAAa,CAiBzD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,GAAG,aAAa,CAY7D;AAgCD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAyB/D;AAKD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,GAAG,QAAQ,CA0K3E"}
@@ -0,0 +1,271 @@
1
+ "use strict";
2
+ /**
3
+ * Verifier adapter for the no2bounce API (wire format confirmed against the live
4
+ * API; the published docs were out of date).
5
+ *
6
+ * Async flow: POST an `emailList` to get a `trackingId` (under `data`), then
7
+ * GET-poll `?trackingId=`. A single address completes with top-level aggregate
8
+ * counts that are that address's verdict. A multi-address batch completes with
9
+ * those same counts (now sums, which can't identify individual addresses) plus
10
+ * `result.downloadFile` — a signed CSV whose rows
11
+ * (`email,finalScore,finalScoreValue,catchall`) carry the per-address verdicts.
12
+ * Billing is 1 credit per email with no refund, charged on submit.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.decodeSingle = decodeSingle;
16
+ exports.decodeReportRow = decodeReportRow;
17
+ exports.parseReport = parseReport;
18
+ exports.createNo2BounceVerifier = createNo2BounceVerifier;
19
+ const http_1 = require("../http");
20
+ const ENDPOINT = "https://connect.no2bounce.com/v2/n2b_validate_bulk";
21
+ const BATCH_WAIT_PER_EMAIL_MS = 8000;
22
+ // no2bounce risk-scores accept-all domains per address: "Deliverable/AcceptAll"
23
+ // is a predicted hit, "UnDeliverable/AcceptAll" a predicted miss, and
24
+ // "Risky/AcceptAll" genuinely uncertain (so we stop on it).
25
+ function decodeSingle(r) {
26
+ if ((r.Deliverable ?? 0) >= 1) {
27
+ return { verdict: "valid", catchAll: false };
28
+ }
29
+ if ((r["Deliverable/AcceptAll"] ?? 0) >= 1) {
30
+ return { verdict: "valid", catchAll: true };
31
+ }
32
+ if ((r["Risky/AcceptAll"] ?? 0) >= 1) {
33
+ return { verdict: "catch_all", catchAll: true };
34
+ }
35
+ if ((r.Undeliverable ?? 0) >= 1) {
36
+ return { verdict: "invalid", catchAll: false };
37
+ }
38
+ if ((r["UnDeliverable/AcceptAll"] ?? 0) >= 1) {
39
+ return { verdict: "invalid", catchAll: true };
40
+ }
41
+ return { verdict: "unknown", catchAll: false };
42
+ }
43
+ function decodeReportRow(row) {
44
+ const v = row.value.toLowerCase().replace(/[^a-z]/g, "");
45
+ if (v.startsWith("undeliver")) {
46
+ return { verdict: "invalid", catchAll: row.catchall };
47
+ }
48
+ if (v.startsWith("deliver")) {
49
+ return { verdict: "valid", catchAll: row.catchall };
50
+ }
51
+ if (v.includes("risk") || v.includes("catch") || v.includes("accept")) {
52
+ return { verdict: "catch_all", catchAll: true };
53
+ }
54
+ return { verdict: "unknown", catchAll: row.catchall };
55
+ }
56
+ function splitCsvLine(line) {
57
+ const out = [];
58
+ let cur = "";
59
+ let quoted = false;
60
+ for (let i = 0; i < line.length; i++) {
61
+ const c = line[i];
62
+ if (quoted) {
63
+ if (c === '"') {
64
+ if (line[i + 1] === '"') {
65
+ cur += '"';
66
+ i++;
67
+ }
68
+ else {
69
+ quoted = false;
70
+ }
71
+ }
72
+ else {
73
+ cur += c;
74
+ }
75
+ }
76
+ else if (c === '"') {
77
+ quoted = true;
78
+ }
79
+ else if (c === ",") {
80
+ out.push(cur);
81
+ cur = "";
82
+ }
83
+ else {
84
+ cur += c;
85
+ }
86
+ }
87
+ out.push(cur);
88
+ return out.map((s) => s.trim());
89
+ }
90
+ function parseReport(csv) {
91
+ const map = new Map();
92
+ const lines = csv.split(/\r?\n/).filter((l) => l.trim().length > 0);
93
+ if (lines.length < 2) {
94
+ return map;
95
+ }
96
+ const header = splitCsvLine(lines[0]).map((h) => h.toLowerCase());
97
+ const iEmail = header.indexOf("email");
98
+ const iValue = header.indexOf("finalscorevalue");
99
+ const iCatch = header.indexOf("catchall");
100
+ if (iEmail < 0 || iValue < 0) {
101
+ return map;
102
+ }
103
+ for (let i = 1; i < lines.length; i++) {
104
+ const cells = splitCsvLine(lines[i]);
105
+ const email = (cells[iEmail] ?? "").toLowerCase();
106
+ if (email.length === 0) {
107
+ continue;
108
+ }
109
+ map.set(email, {
110
+ value: cells[iValue] ?? "",
111
+ catchall: iCatch >= 0 && (cells[iCatch] ?? "").toLowerCase() === "true",
112
+ });
113
+ }
114
+ return map;
115
+ }
116
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
117
+ function createNo2BounceVerifier(options) {
118
+ const pollIntervalMs = options.pollIntervalMs ?? 2000;
119
+ const maxWaitMs = options.maxWaitMs ?? 30000;
120
+ const authHeader = { apitoken: options.apitoken };
121
+ async function submitBatch(emails) {
122
+ const res = await (0, http_1.httpRequest)({
123
+ url: ENDPOINT,
124
+ method: "POST",
125
+ headers: { ...authHeader, "Content-Type": "application/json" },
126
+ body: JSON.stringify({ emailList: emails }),
127
+ timeoutMs: options.timeoutMs,
128
+ });
129
+ if (res.status !== 200) {
130
+ throw new Error(`submit_${res.status}`);
131
+ }
132
+ const json = JSON.parse(res.body);
133
+ const id = json.data?.trackingId ?? json.data?.taskId;
134
+ return id === undefined ? undefined : String(id);
135
+ }
136
+ async function poll(trackingId, waitMs, done) {
137
+ const url = `${ENDPOINT}?trackingId=${encodeURIComponent(trackingId)}`;
138
+ const deadline = Date.now() + waitMs;
139
+ while (Date.now() < deadline) {
140
+ await sleep(pollIntervalMs);
141
+ try {
142
+ const res = await (0, http_1.httpRequest)({
143
+ url,
144
+ method: "GET",
145
+ headers: authHeader,
146
+ timeoutMs: options.timeoutMs,
147
+ });
148
+ if (res.status !== 200) {
149
+ continue;
150
+ }
151
+ const parsed = JSON.parse(res.body);
152
+ if (done(parsed)) {
153
+ return parsed;
154
+ }
155
+ }
156
+ catch {
157
+ // Transient poll error; keep trying until the deadline.
158
+ }
159
+ }
160
+ return null;
161
+ }
162
+ function aggregatesDone(r) {
163
+ return (String(r.overallStatus ?? "")
164
+ .toLowerCase()
165
+ .startsWith("complet") || (r.percent ?? 0) >= 100);
166
+ }
167
+ function reportDone(r) {
168
+ const file = r.result?.downloadFile;
169
+ return typeof file === "string" && file.length > 0;
170
+ }
171
+ async function fetchReport(url) {
172
+ try {
173
+ const res = await (0, http_1.httpRequest)({
174
+ url,
175
+ method: "GET",
176
+ timeoutMs: options.timeoutMs,
177
+ });
178
+ if (res.status !== 200) {
179
+ return null;
180
+ }
181
+ return parseReport(res.body);
182
+ }
183
+ catch {
184
+ return null;
185
+ }
186
+ }
187
+ async function verifySingle(email) {
188
+ let trackingId;
189
+ try {
190
+ trackingId = await submitBatch([email]);
191
+ }
192
+ catch (error) {
193
+ return {
194
+ email,
195
+ verdict: "unknown",
196
+ creditsUsed: 0,
197
+ reason: error instanceof Error ? error.message : "submit_failed",
198
+ };
199
+ }
200
+ if (!trackingId) {
201
+ return { email, verdict: "unknown", creditsUsed: 0, reason: "no_tracking_id" };
202
+ }
203
+ const parsed = await poll(trackingId, maxWaitMs, aggregatesDone);
204
+ if (!parsed) {
205
+ return { email, verdict: "unknown", creditsUsed: 1, reason: "poll_timeout" };
206
+ }
207
+ const { verdict, catchAll } = decodeSingle(parsed);
208
+ return {
209
+ email,
210
+ verdict,
211
+ catchAll,
212
+ creditsUsed: parsed.creditDebited ?? 1,
213
+ reason: `n2b_${verdict}${catchAll ? "_acceptall" : ""}`,
214
+ raw: parsed,
215
+ };
216
+ }
217
+ async function verifyMany(emails) {
218
+ const unknownAll = (creditsUsed, reason) => emails.map((email) => ({
219
+ email,
220
+ verdict: "unknown",
221
+ creditsUsed,
222
+ reason,
223
+ }));
224
+ let trackingId;
225
+ try {
226
+ trackingId = await submitBatch(emails);
227
+ }
228
+ catch (error) {
229
+ return unknownAll(0, error instanceof Error ? error.message : "submit_failed");
230
+ }
231
+ if (!trackingId) {
232
+ return unknownAll(0, "no_tracking_id");
233
+ }
234
+ const waitMs = Math.max(maxWaitMs, emails.length * BATCH_WAIT_PER_EMAIL_MS);
235
+ const parsed = await poll(trackingId, waitMs, reportDone);
236
+ if (!parsed) {
237
+ return unknownAll(1, "poll_timeout");
238
+ }
239
+ const url = parsed.result?.downloadFile;
240
+ const report = typeof url === "string" ? await fetchReport(url) : null;
241
+ if (!report) {
242
+ return unknownAll(1, "n2b_report_unavailable");
243
+ }
244
+ return emails.map((email) => {
245
+ const row = report.get(email.toLowerCase());
246
+ if (!row) {
247
+ return { email, verdict: "unknown", creditsUsed: 1, reason: "n2b_no_report_row" };
248
+ }
249
+ const { verdict, catchAll } = decodeReportRow(row);
250
+ return {
251
+ email,
252
+ verdict,
253
+ catchAll,
254
+ creditsUsed: 1,
255
+ reason: `n2b_${verdict}${catchAll ? "_acceptall" : ""}`,
256
+ raw: row,
257
+ };
258
+ });
259
+ }
260
+ async function verifyBatch(emails) {
261
+ if (emails.length === 0) {
262
+ return [];
263
+ }
264
+ if (emails.length === 1) {
265
+ return [await verifySingle(emails[0])];
266
+ }
267
+ return verifyMany(emails);
268
+ }
269
+ return { name: "no2bounce", verify: verifySingle, verifyBatch };
270
+ }
271
+ //# sourceMappingURL=no2bounce-verifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no2bounce-verifier.js","sourceRoot":"","sources":["../../../../../src/lib/common/verifiers/no2bounce-verifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o365-verifier.d.ts","sourceRoot":"","sources":["../../../../../src/lib/common/verifiers/o365-verifier.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAiB,MAAM,aAAa,CAAC;AAE3D,wBAAgB,kBAAkB,CAC9B,SAAS,EAAE,aAAa,EACxB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,MAAM,GAClB,QAAQ,CA4BV"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ /**
3
+ * Verifier adapter for the direct Microsoft 365 account check. Free (no
4
+ * credits): it asks Azure AD whether the account exists over HTTPS, so it never
5
+ * touches port 25 and never spends a no2bounce credit.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.createO365Verifier = createO365Verifier;
9
+ const o365_1 = require("../providers/o365");
10
+ function createO365Verifier(namespace, applicable, timeoutMs) {
11
+ async function verify(email) {
12
+ const result = await (0, o365_1.checkO365Account)(email, namespace, applicable, timeoutMs);
13
+ const verdict = result.exists === true
14
+ ? "valid"
15
+ : result.exists === false
16
+ ? "invalid"
17
+ : "unknown";
18
+ return {
19
+ email,
20
+ verdict,
21
+ creditsUsed: 0,
22
+ reason: result.reason,
23
+ raw: result,
24
+ };
25
+ }
26
+ return {
27
+ name: "o365",
28
+ verify,
29
+ verifyBatch: (emails) => Promise.all(emails.map(verify)),
30
+ };
31
+ }
32
+ //# sourceMappingURL=o365-verifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"o365-verifier.js","sourceRoot":"","sources":["../../../../../src/lib/common/verifiers/o365-verifier.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAKH,gDAgCC;AAnCD,4CAAyE;AAGzE,SAAgB,kBAAkB,CAC9B,SAAwB,EACxB,UAAmB,EACnB,SAAiB;IAEjB,KAAK,UAAU,MAAM,CAAC,KAAa;QAC/B,MAAM,MAAM,GAAG,MAAM,IAAA,uBAAgB,EACjC,KAAK,EACL,SAAS,EACT,UAAU,EACV,SAAS,CACZ,CAAC;QACF,MAAM,OAAO,GACT,MAAM,CAAC,MAAM,KAAK,IAAI;YAClB,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK;gBACvB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,SAAS,CAAC;QACtB,OAAO;YACH,KAAK;YACL,OAAO;YACP,WAAW,EAAE,CAAC;YACd,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,GAAG,EAAE,MAAM;SACd,CAAC;IACN,CAAC;IAED,OAAO;QACH,IAAI,EAAE,MAAM;QACZ,MAAM;QACN,WAAW,EAAE,CAAC,MAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KACrE,CAAC;AACN,CAAC"}
package/README.md DELETED
@@ -1,128 +0,0 @@
1
- # ap-email-guessr
2
-
3
- An [Activepieces](https://www.activepieces.com) community piece that finds a person's email
4
- address from their name and company domain. It ships two actions:
5
-
6
- | Action | What it does |
7
- | --- | --- |
8
- | **Generate Email List** | Builds likely addresses from a first name, last name and domain, ordered by real-world corporate naming frequency (`john.doe@`, `jdoe@`, `john@`, ...). |
9
- | **Find Email** | Generates the candidates, then verifies them top-down — stopping at the first hit or on a catch-all domain — routing Microsoft domains through a free O365 check and everything else through [no2bounce](https://www.no2bounce.com). Returns the found address, a verdict and the credits spent. |
10
-
11
- ## Setup
12
-
13
- The piece auth is an optional **no2bounce API Token** (Settings → API in no2bounce). It is only
14
- needed to verify **non-Microsoft** domains; Microsoft-backed domains are verified for free via the
15
- O365 account check, so the token can be left empty if you only target those.
16
-
17
- ## Actions
18
-
19
- ### Generate Email List
20
-
21
- Inputs: `firstName`, `lastName`, `domain`, plus optional `patternSet` (`common` ≈ 10 patterns /
22
- `all` ≈ 20, default `all`) and `maxVariants` (hard cap).
23
-
24
- Output — candidates ordered most-likely first:
25
-
26
- ```json
27
- { "emails": ["john.doe@example.com", "jdoe@example.com", "john@example.com"], "count": 3 }
28
- ```
29
-
30
- Names are normalized (accents stripped, lowercased, non-alphanumerics removed) and the domain is
31
- cleaned of protocol/path/leading `@`.
32
-
33
- ### Find Email
34
-
35
- Inputs:
36
-
37
- - `firstName`, `lastName`, `domain` (required).
38
- - `patternSet` (optional, default `common`) — `common` checks only the ~10 highest-probability
39
- patterns; `all` considers the full ~20.
40
- - `maxChecks` (optional) — hard ceiling on how many candidates are verified before giving up. This
41
- is the per-person credit cap.
42
- - `useO365` (optional, default `true`) — verify Microsoft-backed domains with the free Azure AD
43
- account check instead of spending no2bounce credits.
44
- - `timeout` (optional, default `15`) — per-request timeout in seconds.
45
-
46
- Output:
47
-
48
- ```json
49
- {
50
- "found": true,
51
- "email": "jessie.han@cupshe.com",
52
- "status": "valid",
53
- "confidence": 0.9,
54
- "catchAll": false,
55
- "domain": "cupshe.com",
56
- "mxProvider": "microsoft",
57
- "verifier": "o365",
58
- "reason": "o365_valid",
59
- "creditsUsed": 0,
60
- "candidatesChecked": 1,
61
- "candidatesConsidered": 10,
62
- "attempts": [{ "email": "jessie.han@cupshe.com", "verdict": "valid", "reason": "account_exists" }]
63
- }
64
- ```
65
-
66
- ## How verification works
67
-
68
- **Routing.** Per domain the piece resolves MX and fingerprints the provider:
69
-
70
- - **Microsoft-backed** (Microsoft/consumer MX, or a `Managed` Azure AD realm on a domain that is
71
- *not* a known non-Microsoft mailbox host) → the **free O365 check** (`GetCredentialType`). No port
72
- 25, no credits. The "Managed realm on a Google/Zoho domain" case is deliberately excluded — that
73
- is a leftover tenant, not Microsoft mail, and trusting it produces false negatives.
74
- - **Everything else** → **no2bounce**. no2bounce is async: submit a 1-email batch to get a
75
- `trackingId` (under `data`), then poll `?trackingId=` until the top-level `overallStatus` is
76
- `Completed`. For a single email the top-level counts — `Deliverable`, `Undeliverable`,
77
- `Deliverable/AcceptAll`, `UnDeliverable/AcceptAll`, `Risky/AcceptAll` — are that email's verdict.
78
-
79
- **Credit minimization.** Candidates are verified in likelihood order and the search:
80
-
81
- 1. **uses no2bounce's per-address catch-all scoring** — on an accept-all domain a predicted-deliverable
82
- address counts as a hit (with reduced confidence), a predicted-undeliverable one is skipped, and a
83
- genuinely `Risky/AcceptAll` result stops the search;
84
- 2. **verifies non-Microsoft candidates in concurrent rounds of 5 and stops at the first round with a
85
- hit** (early-stop) — checking 5 at a time is faster than one-by-one, but since no2bounce bills per
86
- email with no refund a round is paid for in full once submitted (a hit at candidate #3 still costs
87
- the first round of 5), so the search stops as soon as a round yields a valid address or a catch-all
88
- rather than walking the whole list;
89
- 3. uses the **`common` pattern set** by default, capping the not-found tail at ~10 instead of ~20.
90
-
91
- no2bounce bills **1 credit per verified email**; the O365 path is **0 credits**. The actual spend is
92
- returned as `creditsUsed`.
93
-
94
- ## Verdicts
95
-
96
- | `status` | Meaning |
97
- | --- | --- |
98
- | `valid` | The mailbox exists (`found: true`, with `email`). |
99
- | `invalid` | No candidate verified, or null MX / no MX. |
100
- | `catch_all` | Domain accepts everything — the specific address can't be confirmed. |
101
- | `unknown` | Verification was inconclusive (e.g. no2bounce token missing, poll timeout, O365 throttled). |
102
-
103
- > **Note.** The no2bounce wire format above is confirmed against the live API (the published docs were
104
- > out of date). The O365 (`login.microsoftonline.com`) check and DNS use only Node built-ins; the only
105
- > external dependency is the no2bounce HTTP API.
106
-
107
- ## Build
108
-
109
- ```sh
110
- npm install # or: bun install
111
- npm run build # tsc -> dist/
112
- ```
113
-
114
- The compiled entry point is `dist/src/index.js` (referenced by `main` in `package.json`).
115
-
116
- ## Publish & install in self-hosted Activepieces
117
-
118
- 1. Set a unique package name in `package.json` if `ap-email-guessr` is taken on npm, then publish:
119
-
120
- ```sh
121
- npm publish --access public
122
- ```
123
-
124
- 2. In your self-hosted Activepieces instance, add the piece from npm
125
- (**Platform Admin → Pieces → Install**, or set `AP_DEV_PIECES` when developing) using the
126
- published package name and version.
127
-
128
- See the Activepieces docs for details: <https://www.activepieces.com/docs/build-pieces/building-pieces/piece-definition>
@@ -1,34 +0,0 @@
1
- /**
2
- * Verifier adapter for the no2bounce API (wire format confirmed against the
3
- * live API).
4
- *
5
- * Async flow: POST a 1-email batch to get a `trackingId` (under `data`), then
6
- * GET-poll `?trackingId=` until the *top-level* `overallStatus` is "Completed".
7
- * For a single email the top-level count fields are that email's verdict.
8
- * Billing is 1 credit per email (`creditDebited`), with no refund on undeliverable.
9
- */
10
- import type { Verifier, VerifyVerdict } from "../verifier";
11
- export interface No2BounceOptions {
12
- apitoken: string;
13
- timeoutMs: number;
14
- pollIntervalMs?: number;
15
- maxWaitMs?: number;
16
- }
17
- interface PollResult {
18
- overallStatus?: string;
19
- percent?: number;
20
- creditDebited?: number;
21
- Deliverable?: number;
22
- Undeliverable?: number;
23
- "Deliverable/AcceptAll"?: number;
24
- "UnDeliverable/AcceptAll"?: number;
25
- "Risky/AcceptAll"?: number;
26
- }
27
- export interface DecodedResult {
28
- verdict: VerifyVerdict;
29
- catchAll: boolean;
30
- }
31
- export declare function decodeSingle(r: PollResult): DecodedResult;
32
- export declare function createNo2BounceVerifier(options: No2BounceOptions): Verifier;
33
- export {};
34
- //# sourceMappingURL=no2bounce-verifier.d.ts.map
@@ -1,123 +0,0 @@
1
- "use strict";
2
- /**
3
- * Verifier adapter for the no2bounce API (wire format confirmed against the
4
- * live API).
5
- *
6
- * Async flow: POST a 1-email batch to get a `trackingId` (under `data`), then
7
- * GET-poll `?trackingId=` until the *top-level* `overallStatus` is "Completed".
8
- * For a single email the top-level count fields are that email's verdict.
9
- * Billing is 1 credit per email (`creditDebited`), with no refund on undeliverable.
10
- */
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.decodeSingle = decodeSingle;
13
- exports.createNo2BounceVerifier = createNo2BounceVerifier;
14
- const http_1 = require("../http");
15
- const ENDPOINT = "https://connect.no2bounce.com/v2/n2b_validate_bulk";
16
- // no2bounce risk-scores accept-all domains per address: "Deliverable/AcceptAll"
17
- // is a predicted hit, "UnDeliverable/AcceptAll" a predicted miss, and
18
- // "Risky/AcceptAll" genuinely uncertain (so we stop on it).
19
- function decodeSingle(r) {
20
- if ((r.Deliverable ?? 0) >= 1) {
21
- return { verdict: "valid", catchAll: false };
22
- }
23
- if ((r["Deliverable/AcceptAll"] ?? 0) >= 1) {
24
- return { verdict: "valid", catchAll: true };
25
- }
26
- if ((r["Risky/AcceptAll"] ?? 0) >= 1) {
27
- return { verdict: "catch_all", catchAll: true };
28
- }
29
- if ((r.Undeliverable ?? 0) >= 1) {
30
- return { verdict: "invalid", catchAll: false };
31
- }
32
- if ((r["UnDeliverable/AcceptAll"] ?? 0) >= 1) {
33
- return { verdict: "invalid", catchAll: true };
34
- }
35
- return { verdict: "unknown", catchAll: false };
36
- }
37
- function isComplete(r) {
38
- return (String(r.overallStatus ?? "")
39
- .toLowerCase()
40
- .startsWith("complet") || (r.percent ?? 0) >= 100);
41
- }
42
- const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
43
- function createNo2BounceVerifier(options) {
44
- const pollIntervalMs = options.pollIntervalMs ?? 2000;
45
- const maxWaitMs = options.maxWaitMs ?? 30000;
46
- const authHeader = { apitoken: options.apitoken };
47
- async function submit(email) {
48
- const res = await (0, http_1.httpRequest)({
49
- url: ENDPOINT,
50
- method: "POST",
51
- headers: { ...authHeader, "Content-Type": "application/json" },
52
- body: JSON.stringify({ emailList: [email] }),
53
- timeoutMs: options.timeoutMs,
54
- });
55
- if (res.status !== 200) {
56
- throw new Error(`submit_${res.status}`);
57
- }
58
- const json = JSON.parse(res.body);
59
- const id = json.data?.trackingId ?? json.data?.taskId;
60
- return id === undefined ? undefined : String(id);
61
- }
62
- async function poll(trackingId) {
63
- const url = `${ENDPOINT}?trackingId=${encodeURIComponent(trackingId)}`;
64
- const deadline = Date.now() + maxWaitMs;
65
- while (Date.now() < deadline) {
66
- await sleep(pollIntervalMs);
67
- try {
68
- const res = await (0, http_1.httpRequest)({
69
- url,
70
- method: "GET",
71
- headers: authHeader,
72
- timeoutMs: options.timeoutMs,
73
- });
74
- if (res.status !== 200) {
75
- continue;
76
- }
77
- const parsed = JSON.parse(res.body);
78
- if (isComplete(parsed)) {
79
- return parsed;
80
- }
81
- }
82
- catch {
83
- // Transient poll error; keep trying until the deadline.
84
- }
85
- }
86
- return null;
87
- }
88
- return {
89
- name: "no2bounce",
90
- async verify(email) {
91
- let trackingId;
92
- try {
93
- trackingId = await submit(email);
94
- }
95
- catch (error) {
96
- // Submission rejected → no credit charged.
97
- return {
98
- email,
99
- verdict: "unknown",
100
- creditsUsed: 0,
101
- reason: error instanceof Error ? error.message : "submit_failed",
102
- };
103
- }
104
- if (!trackingId) {
105
- return { email, verdict: "unknown", creditsUsed: 0, reason: "no_tracking_id" };
106
- }
107
- const parsed = await poll(trackingId);
108
- if (!parsed) {
109
- return { email, verdict: "unknown", creditsUsed: 1, reason: "poll_timeout" };
110
- }
111
- const { verdict, catchAll } = decodeSingle(parsed);
112
- return {
113
- email,
114
- verdict,
115
- catchAll,
116
- creditsUsed: parsed.creditDebited ?? 1,
117
- reason: `n2b_${verdict}${catchAll ? "_acceptall" : ""}`,
118
- raw: parsed,
119
- };
120
- },
121
- };
122
- }
123
- //# sourceMappingURL=no2bounce-verifier.js.map
@@ -1,30 +0,0 @@
1
- "use strict";
2
- /**
3
- * Verifier adapter for the direct Microsoft 365 account check. Free (no
4
- * credits): it asks Azure AD whether the account exists over HTTPS, so it never
5
- * touches port 25 and never spends a no2bounce credit.
6
- */
7
- Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.createO365Verifier = createO365Verifier;
9
- const o365_1 = require("../providers/o365");
10
- function createO365Verifier(namespace, applicable, timeoutMs) {
11
- return {
12
- name: "o365",
13
- async verify(email) {
14
- const result = await (0, o365_1.checkO365Account)(email, namespace, applicable, timeoutMs);
15
- const verdict = result.exists === true
16
- ? "valid"
17
- : result.exists === false
18
- ? "invalid"
19
- : "unknown";
20
- return {
21
- email,
22
- verdict,
23
- creditsUsed: 0,
24
- reason: result.reason,
25
- raw: result,
26
- };
27
- },
28
- };
29
- }
30
- //# sourceMappingURL=o365-verifier.js.map
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes