@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.
- package/package.json +31 -40
- package/src/i18n/translation.json +17 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js.map +1 -0
- package/src/lib/actions/find-email.d.ts.map +1 -0
- package/src/lib/actions/find-email.js.map +1 -0
- package/src/lib/actions/generate-emails.d.ts.map +1 -0
- package/src/lib/actions/generate-emails.js.map +1 -0
- package/src/lib/common/dns.d.ts.map +1 -0
- package/src/lib/common/dns.js.map +1 -0
- package/{dist/src → src}/lib/common/find-email.d.ts +4 -2
- package/src/lib/common/find-email.d.ts.map +1 -0
- package/{dist/src → src}/lib/common/find-email.js +7 -3
- package/src/lib/common/find-email.js.map +1 -0
- package/src/lib/common/find-person.d.ts.map +1 -0
- package/src/lib/common/find-person.js.map +1 -0
- package/src/lib/common/http.d.ts.map +1 -0
- package/src/lib/common/http.js.map +1 -0
- package/src/lib/common/mx-fingerprint.d.ts.map +1 -0
- package/src/lib/common/mx-fingerprint.js.map +1 -0
- package/src/lib/common/patterns.d.ts.map +1 -0
- package/src/lib/common/patterns.js.map +1 -0
- package/src/lib/common/providers/o365.d.ts.map +1 -0
- package/src/lib/common/providers/o365.js.map +1 -0
- package/{dist/src → src}/lib/common/verifier.d.ts +2 -0
- package/src/lib/common/verifier.d.ts.map +1 -0
- package/src/lib/common/verifier.js.map +1 -0
- package/src/lib/common/verifiers/no2bounce-verifier.d.ts +43 -0
- package/src/lib/common/verifiers/no2bounce-verifier.d.ts.map +1 -0
- package/src/lib/common/verifiers/no2bounce-verifier.js +271 -0
- package/src/lib/common/verifiers/no2bounce-verifier.js.map +1 -0
- package/src/lib/common/verifiers/o365-verifier.d.ts.map +1 -0
- package/src/lib/common/verifiers/o365-verifier.js +32 -0
- package/src/lib/common/verifiers/o365-verifier.js.map +1 -0
- package/README.md +0 -128
- package/dist/src/lib/common/verifiers/no2bounce-verifier.d.ts +0 -34
- package/dist/src/lib/common/verifiers/no2bounce-verifier.js +0 -123
- package/dist/src/lib/common/verifiers/o365-verifier.js +0 -30
- /package/{dist/src → src}/index.d.ts +0 -0
- /package/{dist/src → src}/index.js +0 -0
- /package/{dist/src → src}/lib/actions/find-email.d.ts +0 -0
- /package/{dist/src → src}/lib/actions/find-email.js +0 -0
- /package/{dist/src → src}/lib/actions/generate-emails.d.ts +0 -0
- /package/{dist/src → src}/lib/actions/generate-emails.js +0 -0
- /package/{dist/src → src}/lib/common/dns.d.ts +0 -0
- /package/{dist/src → src}/lib/common/dns.js +0 -0
- /package/{dist/src → src}/lib/common/find-person.d.ts +0 -0
- /package/{dist/src → src}/lib/common/find-person.js +0 -0
- /package/{dist/src → src}/lib/common/http.d.ts +0 -0
- /package/{dist/src → src}/lib/common/http.js +0 -0
- /package/{dist/src → src}/lib/common/mx-fingerprint.d.ts +0 -0
- /package/{dist/src → src}/lib/common/mx-fingerprint.js +0 -0
- /package/{dist/src → src}/lib/common/patterns.d.ts +0 -0
- /package/{dist/src → src}/lib/common/patterns.js +0 -0
- /package/{dist/src → src}/lib/common/providers/o365.d.ts +0 -0
- /package/{dist/src → src}/lib/common/providers/o365.js +0 -0
- /package/{dist/src → src}/lib/common/verifier.js +0 -0
- /package/{dist/src → src}/lib/common/verifiers/o365-verifier.d.ts +0 -0
package/package.json
CHANGED
|
@@ -1,42 +1,33 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
"
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
"
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
"
|
|
32
|
-
|
|
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"}
|
package/src/index.js.map
ADDED
|
@@ -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).
|
|
6
|
-
*
|
|
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).
|
|
7
|
-
*
|
|
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 =
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|