@gravity-platform/ingest 1.1.7 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Abyssale/node/index.d.ts.map +1 -1
- package/dist/Abyssale/node/index.js +0 -8
- package/dist/Abyssale/node/index.js.map +1 -1
- package/dist/ApifyResults/node/index.d.ts.map +1 -1
- package/dist/ApifyResults/node/index.js +0 -3
- package/dist/ApifyResults/node/index.js.map +1 -1
- package/dist/ApifyStarter/node/index.d.ts.map +1 -1
- package/dist/ApifyStarter/node/index.js +0 -5
- package/dist/ApifyStarter/node/index.js.map +1 -1
- package/dist/ApolloCompany/node/index.d.ts.map +1 -1
- package/dist/ApolloCompany/node/index.js +0 -6
- package/dist/ApolloCompany/node/index.js.map +1 -1
- package/dist/ApolloCompanyEnrich/node/index.d.ts.map +1 -1
- package/dist/ApolloCompanyEnrich/node/index.js +0 -3
- package/dist/ApolloCompanyEnrich/node/index.js.map +1 -1
- package/dist/ApolloPeople/node/index.d.ts.map +1 -1
- package/dist/ApolloPeople/node/index.js +0 -6
- package/dist/ApolloPeople/node/index.js.map +1 -1
- package/dist/ApolloPeopleEnrich/node/index.d.ts.map +1 -1
- package/dist/ApolloPeopleEnrich/node/index.js +0 -4
- package/dist/ApolloPeopleEnrich/node/index.js.map +1 -1
- package/dist/Document/node/index.d.ts.map +1 -1
- package/dist/Document/node/index.js +0 -4
- package/dist/Document/node/index.js.map +1 -1
- package/dist/DocumentParser/node/index.d.ts.map +1 -1
- package/dist/DocumentParser/node/index.js +0 -5
- package/dist/DocumentParser/node/index.js.map +1 -1
- package/dist/ElevenLabs/node/index.d.ts.map +1 -1
- package/dist/ElevenLabs/node/index.js +0 -5
- package/dist/ElevenLabs/node/index.js.map +1 -1
- package/dist/GoogleSheet/node/index.d.ts.map +1 -1
- package/dist/GoogleSheet/node/index.js +0 -5
- package/dist/GoogleSheet/node/index.js.map +1 -1
- package/dist/HunterDomainSearch/node/executor.d.ts +8 -0
- package/dist/HunterDomainSearch/node/executor.d.ts.map +1 -0
- package/dist/HunterDomainSearch/node/executor.js +42 -0
- package/dist/HunterDomainSearch/node/executor.js.map +1 -0
- package/dist/HunterDomainSearch/node/index.d.ts +10 -0
- package/dist/HunterDomainSearch/node/index.d.ts.map +1 -0
- package/dist/HunterDomainSearch/node/index.js +140 -0
- package/dist/HunterDomainSearch/node/index.js.map +1 -0
- package/dist/HunterDomainSearch/service/domainSearchService.d.ts +7 -0
- package/dist/HunterDomainSearch/service/domainSearchService.d.ts.map +1 -0
- package/dist/HunterDomainSearch/service/domainSearchService.js +107 -0
- package/dist/HunterDomainSearch/service/domainSearchService.js.map +1 -0
- package/dist/HunterDomainSearch/util/types.d.ts +57 -0
- package/dist/HunterDomainSearch/util/types.d.ts.map +1 -0
- package/dist/HunterDomainSearch/util/types.js +6 -0
- package/dist/HunterDomainSearch/util/types.js.map +1 -0
- package/dist/HunterEmailFinder/node/executor.d.ts +8 -0
- package/dist/HunterEmailFinder/node/executor.d.ts.map +1 -0
- package/dist/HunterEmailFinder/node/executor.js +48 -0
- package/dist/HunterEmailFinder/node/executor.js.map +1 -0
- package/dist/HunterEmailFinder/node/index.d.ts +10 -0
- package/dist/HunterEmailFinder/node/index.d.ts.map +1 -0
- package/dist/HunterEmailFinder/node/index.js +116 -0
- package/dist/HunterEmailFinder/node/index.js.map +1 -0
- package/dist/HunterEmailFinder/service/emailFinderService.d.ts +7 -0
- package/dist/HunterEmailFinder/service/emailFinderService.d.ts.map +1 -0
- package/dist/HunterEmailFinder/service/emailFinderService.js +77 -0
- package/dist/HunterEmailFinder/service/emailFinderService.js.map +1 -0
- package/dist/HunterEmailFinder/util/types.d.ts +29 -0
- package/dist/HunterEmailFinder/util/types.d.ts.map +1 -0
- package/dist/HunterEmailFinder/util/types.js +6 -0
- package/dist/HunterEmailFinder/util/types.js.map +1 -0
- package/dist/HunterEmailVerifier/node/executor.d.ts +8 -0
- package/dist/HunterEmailVerifier/node/executor.d.ts.map +1 -0
- package/dist/HunterEmailVerifier/node/executor.js +46 -0
- package/dist/HunterEmailVerifier/node/executor.js.map +1 -0
- package/dist/HunterEmailVerifier/node/index.d.ts +10 -0
- package/dist/HunterEmailVerifier/node/index.d.ts.map +1 -0
- package/dist/HunterEmailVerifier/node/index.js +88 -0
- package/dist/HunterEmailVerifier/node/index.js.map +1 -0
- package/dist/HunterEmailVerifier/service/emailVerifierService.d.ts +7 -0
- package/dist/HunterEmailVerifier/service/emailVerifierService.d.ts.map +1 -0
- package/dist/HunterEmailVerifier/service/emailVerifierService.js +63 -0
- package/dist/HunterEmailVerifier/service/emailVerifierService.js.map +1 -0
- package/dist/HunterEmailVerifier/util/types.d.ts +25 -0
- package/dist/HunterEmailVerifier/util/types.d.ts.map +1 -0
- package/dist/HunterEmailVerifier/util/types.js +6 -0
- package/dist/HunterEmailVerifier/util/types.js.map +1 -0
- package/dist/HunterEnrich/node/executor.d.ts +8 -0
- package/dist/HunterEnrich/node/executor.d.ts.map +1 -0
- package/dist/HunterEnrich/node/executor.js +38 -0
- package/dist/HunterEnrich/node/executor.js.map +1 -0
- package/dist/HunterEnrich/node/index.d.ts +10 -0
- package/dist/HunterEnrich/node/index.d.ts.map +1 -0
- package/dist/HunterEnrich/node/index.js +85 -0
- package/dist/HunterEnrich/node/index.js.map +1 -0
- package/dist/HunterEnrich/service/enrichService.d.ts +10 -0
- package/dist/HunterEnrich/service/enrichService.d.ts.map +1 -0
- package/dist/HunterEnrich/service/enrichService.js +79 -0
- package/dist/HunterEnrich/service/enrichService.js.map +1 -0
- package/dist/HunterEnrich/util/types.d.ts +16 -0
- package/dist/HunterEnrich/util/types.d.ts.map +1 -0
- package/dist/HunterEnrich/util/types.js +6 -0
- package/dist/HunterEnrich/util/types.js.map +1 -0
- package/dist/Hyperbrowser/node/index.d.ts.map +1 -1
- package/dist/Hyperbrowser/node/index.js +0 -5
- package/dist/Hyperbrowser/node/index.js.map +1 -1
- package/dist/PlaidTransactions/node/index.d.ts.map +1 -1
- package/dist/PlaidTransactions/node/index.js +0 -5
- package/dist/PlaidTransactions/node/index.js.map +1 -1
- package/dist/SearchWeb/node/index.d.ts.map +1 -1
- package/dist/SearchWeb/node/index.js +0 -6
- package/dist/SearchWeb/node/index.js.map +1 -1
- package/dist/SpatialIngest/node/index.d.ts.map +1 -1
- package/dist/SpatialIngest/node/index.js +0 -5
- package/dist/SpatialIngest/node/index.js.map +1 -1
- package/dist/credentials/index.d.ts +14 -0
- package/dist/credentials/index.d.ts.map +1 -1
- package/dist/credentials/index.js +18 -1
- package/dist/credentials/index.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -1
- package/dist/index.js.map +1 -1
- package/package.json +36 -1
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hunterDomainSearch = hunterDomainSearch;
|
|
4
|
+
const platform_1 = require("../../shared/platform");
|
|
5
|
+
const HUNTER_API_BASE = "https://api.hunter.io/v2";
|
|
6
|
+
/**
|
|
7
|
+
* Hunter Domain Search — return every email address Hunter has found for a domain.
|
|
8
|
+
* https://hunter.io/api-documentation/v2#domain-search
|
|
9
|
+
*/
|
|
10
|
+
async function hunterDomainSearch(config, context) {
|
|
11
|
+
const logger = (0, platform_1.createLogger)("HunterDomainSearch");
|
|
12
|
+
const available = context.credentials || {};
|
|
13
|
+
let creds;
|
|
14
|
+
for (const val of Object.values(available)) {
|
|
15
|
+
if (val?.apiKey) {
|
|
16
|
+
creds = val;
|
|
17
|
+
break;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const apiKey = creds?.apiKey;
|
|
21
|
+
if (!apiKey) {
|
|
22
|
+
throw new Error("Hunter API key not found in credentials");
|
|
23
|
+
}
|
|
24
|
+
const params = {
|
|
25
|
+
api_key: apiKey,
|
|
26
|
+
limit: Math.round(config.limit ?? 10),
|
|
27
|
+
offset: Math.round(config.offset ?? 0),
|
|
28
|
+
};
|
|
29
|
+
if (config.domain?.trim())
|
|
30
|
+
params.domain = config.domain.trim();
|
|
31
|
+
if (config.company?.trim())
|
|
32
|
+
params.company = config.company.trim();
|
|
33
|
+
if (config.type?.trim())
|
|
34
|
+
params.type = config.type.trim();
|
|
35
|
+
if (config.department?.trim())
|
|
36
|
+
params.department = config.department.trim();
|
|
37
|
+
if (config.seniority?.trim())
|
|
38
|
+
params.seniority = config.seniority.trim();
|
|
39
|
+
if (config.requiredField?.trim())
|
|
40
|
+
params.required_field = config.requiredField.trim();
|
|
41
|
+
const url = new URL(`${HUNTER_API_BASE}/domain-search`);
|
|
42
|
+
for (const [key, value] of Object.entries(params)) {
|
|
43
|
+
url.searchParams.set(key, String(value));
|
|
44
|
+
}
|
|
45
|
+
logger.info("Calling Hunter Domain Search", {
|
|
46
|
+
domain: params.domain,
|
|
47
|
+
company: params.company,
|
|
48
|
+
limit: params.limit,
|
|
49
|
+
});
|
|
50
|
+
const response = await fetch(url.toString(), {
|
|
51
|
+
method: "GET",
|
|
52
|
+
headers: { "Content-Type": "application/json" },
|
|
53
|
+
});
|
|
54
|
+
if (!response.ok) {
|
|
55
|
+
const errorText = await response.text().catch(() => response.statusText);
|
|
56
|
+
throw new Error(`Hunter API error ${response.status}: ${errorText}`);
|
|
57
|
+
}
|
|
58
|
+
const data = await response.json();
|
|
59
|
+
const d = data.data || {};
|
|
60
|
+
const emails = (d.emails || []).map((e) => ({
|
|
61
|
+
value: e.value || "",
|
|
62
|
+
type: e.type,
|
|
63
|
+
confidence: e.confidence,
|
|
64
|
+
first_name: e.first_name,
|
|
65
|
+
last_name: e.last_name,
|
|
66
|
+
position: e.position,
|
|
67
|
+
seniority: e.seniority,
|
|
68
|
+
department: e.department,
|
|
69
|
+
linkedin: e.linkedin,
|
|
70
|
+
twitter: e.twitter,
|
|
71
|
+
phone_number: e.phone_number,
|
|
72
|
+
verification_status: e.verification?.status,
|
|
73
|
+
}));
|
|
74
|
+
const organization = {
|
|
75
|
+
domain: d.domain,
|
|
76
|
+
organization: d.organization,
|
|
77
|
+
pattern: d.pattern,
|
|
78
|
+
industry: d.industry,
|
|
79
|
+
description: d.description,
|
|
80
|
+
twitter: d.twitter,
|
|
81
|
+
facebook: d.facebook,
|
|
82
|
+
linkedin: d.linkedin,
|
|
83
|
+
country: d.country,
|
|
84
|
+
state: d.state,
|
|
85
|
+
city: d.city,
|
|
86
|
+
headcount: d.headcount,
|
|
87
|
+
company_type: d.company_type,
|
|
88
|
+
disposable: d.disposable,
|
|
89
|
+
webmail: d.webmail,
|
|
90
|
+
accept_all: d.accept_all,
|
|
91
|
+
};
|
|
92
|
+
const totalResults = data.meta?.results ?? emails.length;
|
|
93
|
+
logger.info("Hunter Domain Search complete", {
|
|
94
|
+
domain: d.domain,
|
|
95
|
+
emails: emails.length,
|
|
96
|
+
totalResults,
|
|
97
|
+
});
|
|
98
|
+
return {
|
|
99
|
+
emails,
|
|
100
|
+
organization,
|
|
101
|
+
pattern: d.pattern,
|
|
102
|
+
totalResults,
|
|
103
|
+
limit: data.meta?.limit ?? config.limit ?? 10,
|
|
104
|
+
offset: data.meta?.offset ?? config.offset ?? 0,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=domainSearchService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domainSearchService.js","sourceRoot":"","sources":["../../../src/HunterDomainSearch/service/domainSearchService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for the HunterDomainSearch node
|
|
3
|
+
*/
|
|
4
|
+
export interface HunterDomainSearchConfig {
|
|
5
|
+
domain: string;
|
|
6
|
+
company: string;
|
|
7
|
+
type: string;
|
|
8
|
+
department: string;
|
|
9
|
+
seniority: string;
|
|
10
|
+
requiredField: string;
|
|
11
|
+
limit: number;
|
|
12
|
+
offset: number;
|
|
13
|
+
}
|
|
14
|
+
export interface HunterEmail {
|
|
15
|
+
value: string;
|
|
16
|
+
type?: string;
|
|
17
|
+
confidence?: number;
|
|
18
|
+
first_name?: string;
|
|
19
|
+
last_name?: string;
|
|
20
|
+
position?: string;
|
|
21
|
+
seniority?: string;
|
|
22
|
+
department?: string;
|
|
23
|
+
linkedin?: string;
|
|
24
|
+
twitter?: string;
|
|
25
|
+
phone_number?: string;
|
|
26
|
+
verification_status?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface HunterDomainInfo {
|
|
29
|
+
domain?: string;
|
|
30
|
+
organization?: string;
|
|
31
|
+
pattern?: string;
|
|
32
|
+
industry?: string;
|
|
33
|
+
description?: string;
|
|
34
|
+
twitter?: string;
|
|
35
|
+
facebook?: string;
|
|
36
|
+
linkedin?: string;
|
|
37
|
+
country?: string;
|
|
38
|
+
state?: string;
|
|
39
|
+
city?: string;
|
|
40
|
+
headcount?: string;
|
|
41
|
+
company_type?: string;
|
|
42
|
+
disposable?: boolean;
|
|
43
|
+
webmail?: boolean;
|
|
44
|
+
accept_all?: boolean;
|
|
45
|
+
}
|
|
46
|
+
export interface HunterDomainSearchOutput {
|
|
47
|
+
emails: HunterEmail[];
|
|
48
|
+
organization: HunterDomainInfo;
|
|
49
|
+
pattern?: string;
|
|
50
|
+
totalResults: number;
|
|
51
|
+
limit: number;
|
|
52
|
+
offset: number;
|
|
53
|
+
}
|
|
54
|
+
export interface HunterDomainSearchExecutorOutput {
|
|
55
|
+
__outputs: HunterDomainSearchOutput;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/HunterDomainSearch/util/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,YAAY,EAAE,gBAAgB,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,wBAAwB,CAAC;CACrC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/HunterDomainSearch/util/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type NodeExecutionContext } from "@gravity-platform/plugin-base";
|
|
2
|
+
import { HunterEmailFinderConfig, HunterEmailFinderExecutorOutput } from "../util/types";
|
|
3
|
+
import { PromiseNode } from "../../shared/platform";
|
|
4
|
+
export declare class HunterEmailFinderExecutor extends PromiseNode<HunterEmailFinderConfig> {
|
|
5
|
+
constructor();
|
|
6
|
+
protected executeNode(inputs: Record<string, any>, config: HunterEmailFinderConfig, context: NodeExecutionContext): Promise<HunterEmailFinderExecutorOutput>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/HunterEmailFinder/node/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,+BAA+B,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,WAAW,EAAgB,MAAM,uBAAuB,CAAC;AAKlE,qBAAa,yBAA0B,SAAQ,WAAW,CAAC,uBAAuB,CAAC;;cAKjE,WAAW,CACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,+BAA+B,CAAC;CAsC5C"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HunterEmailFinderExecutor = void 0;
|
|
4
|
+
const platform_1 = require("../../shared/platform");
|
|
5
|
+
const emailFinderService_1 = require("../service/emailFinderService");
|
|
6
|
+
const NODE_TYPE = "HunterEmailFinder";
|
|
7
|
+
class HunterEmailFinderExecutor extends platform_1.PromiseNode {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(NODE_TYPE);
|
|
10
|
+
}
|
|
11
|
+
async executeNode(inputs, config, context) {
|
|
12
|
+
const logger = (0, platform_1.createLogger)("HunterEmailFinder");
|
|
13
|
+
logger.info("Starting Hunter Email Finder", {
|
|
14
|
+
domain: config.domain,
|
|
15
|
+
company: config.company,
|
|
16
|
+
});
|
|
17
|
+
try {
|
|
18
|
+
const result = await (0, emailFinderService_1.hunterEmailFinder)(config, context);
|
|
19
|
+
logger.info("Hunter Email Finder completed", {
|
|
20
|
+
email: result.email,
|
|
21
|
+
score: result.score,
|
|
22
|
+
});
|
|
23
|
+
return {
|
|
24
|
+
__outputs: {
|
|
25
|
+
email: result.email,
|
|
26
|
+
score: result.score,
|
|
27
|
+
first_name: result.first_name,
|
|
28
|
+
last_name: result.last_name,
|
|
29
|
+
position: result.position,
|
|
30
|
+
domain: result.domain,
|
|
31
|
+
company: result.company,
|
|
32
|
+
twitter: result.twitter,
|
|
33
|
+
linkedin_url: result.linkedin_url,
|
|
34
|
+
phone_number: result.phone_number,
|
|
35
|
+
accept_all: result.accept_all,
|
|
36
|
+
verification_status: result.verification_status,
|
|
37
|
+
sources_count: result.sources_count,
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
logger.error("Hunter Email Finder failed", { error });
|
|
43
|
+
throw error;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.HunterEmailFinderExecutor = HunterEmailFinderExecutor;
|
|
48
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/HunterEmailFinder/node/executor.ts"],"names":[],"mappings":";;;AAEA,oDAAkE;AAClE,sEAAkE;AAElE,MAAM,SAAS,GAAG,mBAAmB,CAAC;AAEtC,MAAa,yBAA0B,SAAQ,sBAAoC;IACjF;QACE,KAAK,CAAC,SAAS,CAAC,CAAC;IACnB,CAAC;IAES,KAAK,CAAC,WAAW,CACzB,MAA2B,EAC3B,MAA+B,EAC/B,OAA6B;QAE7B,MAAM,MAAM,GAAG,IAAA,uBAAY,EAAC,mBAAmB,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;YAC1C,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAA,sCAAiB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAExD,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE;gBAC3C,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC,CAAC;YAEH,OAAO;gBACL,SAAS,EAAE;oBACT,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;oBAC/C,aAAa,EAAE,MAAM,CAAC,aAAa;iBACpC;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACtD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AA/CD,8DA+CC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type EnhancedNodeDefinition } from "@gravity-platform/plugin-base";
|
|
2
|
+
import { HunterEmailFinderExecutor } from "./executor";
|
|
3
|
+
export declare const NODE_TYPE = "HunterEmailFinder";
|
|
4
|
+
declare function createNodeDefinition(): EnhancedNodeDefinition;
|
|
5
|
+
export declare const HunterEmailFinderNode: {
|
|
6
|
+
definition: any;
|
|
7
|
+
executor: typeof HunterEmailFinderExecutor;
|
|
8
|
+
};
|
|
9
|
+
export { createNodeDefinition };
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/HunterEmailFinder/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC3F,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvD,eAAO,MAAM,SAAS,sBAAsB,CAAC;AAE7C,iBAAS,oBAAoB,IAAI,sBAAsB,CA6GtD;AAID,eAAO,MAAM,qBAAqB;;;CAGjC,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HunterEmailFinderNode = exports.NODE_TYPE = void 0;
|
|
4
|
+
exports.createNodeDefinition = createNodeDefinition;
|
|
5
|
+
const plugin_base_1 = require("@gravity-platform/plugin-base");
|
|
6
|
+
const executor_1 = require("./executor");
|
|
7
|
+
exports.NODE_TYPE = "HunterEmailFinder";
|
|
8
|
+
function createNodeDefinition() {
|
|
9
|
+
return {
|
|
10
|
+
packageVersion: "1.0.0",
|
|
11
|
+
type: exports.NODE_TYPE,
|
|
12
|
+
name: "Hunter Email Finder",
|
|
13
|
+
description: "Find the most likely email address for a specific person given their name and company domain, with a confidence score",
|
|
14
|
+
whenToUse: "Pick when you already know a person's name and their company/domain and need their email address. To list every email at a domain use HunterDomainSearch; to check an address is deliverable use HunterEmailVerifier.",
|
|
15
|
+
category: "Ingest",
|
|
16
|
+
logoUrl: "https://res.cloudinary.com/sonik/image/upload/v1781366295/gravity/icons/hunter.png",
|
|
17
|
+
color: "#FF5500",
|
|
18
|
+
inputs: [
|
|
19
|
+
{
|
|
20
|
+
name: "signal",
|
|
21
|
+
type: plugin_base_1.NodeInputType.OBJECT,
|
|
22
|
+
description: "Data from previous nodes that can be referenced in templates",
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
outputs: [
|
|
26
|
+
{
|
|
27
|
+
name: "email",
|
|
28
|
+
type: plugin_base_1.NodeInputType.STRING,
|
|
29
|
+
description: "The most likely email address for the person (empty if none found)",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: "score",
|
|
33
|
+
type: plugin_base_1.NodeInputType.NUMBER,
|
|
34
|
+
description: "Confidence score 0-100 for the returned email",
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: "position",
|
|
38
|
+
type: plugin_base_1.NodeInputType.STRING,
|
|
39
|
+
description: "Job position of the person, when known",
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: "linkedin_url",
|
|
43
|
+
type: plugin_base_1.NodeInputType.STRING,
|
|
44
|
+
description: "LinkedIn profile URL, when known",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: "verification_status",
|
|
48
|
+
type: plugin_base_1.NodeInputType.STRING,
|
|
49
|
+
description: "Hunter's verification status for the email, when available",
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: "sources_count",
|
|
53
|
+
type: plugin_base_1.NodeInputType.NUMBER,
|
|
54
|
+
description: "Number of public sources backing the email",
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
configSchema: {
|
|
58
|
+
type: "object",
|
|
59
|
+
properties: {
|
|
60
|
+
domain: {
|
|
61
|
+
type: "string",
|
|
62
|
+
title: "Domain",
|
|
63
|
+
description: "Company domain (e.g. 'stripe.com'). Use this OR Company.",
|
|
64
|
+
default: "",
|
|
65
|
+
"ui:field": "template",
|
|
66
|
+
},
|
|
67
|
+
company: {
|
|
68
|
+
type: "string",
|
|
69
|
+
title: "Company",
|
|
70
|
+
description: "Company name (e.g. 'Stripe'). Used when Domain is not provided.",
|
|
71
|
+
default: "",
|
|
72
|
+
"ui:field": "template",
|
|
73
|
+
},
|
|
74
|
+
firstName: {
|
|
75
|
+
type: "string",
|
|
76
|
+
title: "First Name",
|
|
77
|
+
description: "Person's first name (used with Last Name)",
|
|
78
|
+
default: "",
|
|
79
|
+
"ui:field": "template",
|
|
80
|
+
},
|
|
81
|
+
lastName: {
|
|
82
|
+
type: "string",
|
|
83
|
+
title: "Last Name",
|
|
84
|
+
description: "Person's last name (used with First Name)",
|
|
85
|
+
default: "",
|
|
86
|
+
"ui:field": "template",
|
|
87
|
+
},
|
|
88
|
+
fullName: {
|
|
89
|
+
type: "string",
|
|
90
|
+
title: "Full Name",
|
|
91
|
+
description: "Person's full name. Overrides First/Last Name when provided.",
|
|
92
|
+
default: "",
|
|
93
|
+
"ui:field": "template",
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
required: [],
|
|
97
|
+
},
|
|
98
|
+
credentials: [
|
|
99
|
+
{
|
|
100
|
+
name: "hunterCredential",
|
|
101
|
+
required: true,
|
|
102
|
+
displayName: "Hunter.io API",
|
|
103
|
+
description: "Hunter.io API key for email discovery, verification and enrichment",
|
|
104
|
+
},
|
|
105
|
+
],
|
|
106
|
+
capabilities: {
|
|
107
|
+
isTrigger: false,
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
const definition = createNodeDefinition();
|
|
112
|
+
exports.HunterEmailFinderNode = {
|
|
113
|
+
definition,
|
|
114
|
+
executor: executor_1.HunterEmailFinderExecutor,
|
|
115
|
+
};
|
|
116
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/HunterEmailFinder/node/index.ts"],"names":[],"mappings":";;;AA2HS,oDAAoB;AA3H7B,+DAA2F;AAC3F,yCAAuD;AAE1C,QAAA,SAAS,GAAG,mBAAmB,CAAC;AAE7C,SAAS,oBAAoB;IAC3B,OAAO;QACL,cAAc,EAAE,OAAO;QACvB,IAAI,EAAE,iBAAS;QACf,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACT,uHAAuH;QACzH,SAAS,EACP,uNAAuN;QACzN,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,oFAAoF;QAC7F,KAAK,EAAE,SAAS;QAEhB,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,2BAAa,CAAC,MAAM;gBAC1B,WAAW,EAAE,8DAA8D;aAC5E;SACF;QAED,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,2BAAa,CAAC,MAAM;gBAC1B,WAAW,EAAE,oEAAoE;aAClF;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,2BAAa,CAAC,MAAM;gBAC1B,WAAW,EAAE,+CAA+C;aAC7D;YACD;gBACE,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,2BAAa,CAAC,MAAM;gBAC1B,WAAW,EAAE,wCAAwC;aACtD;YACD;gBACE,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,2BAAa,CAAC,MAAM;gBAC1B,WAAW,EAAE,kCAAkC;aAChD;YACD;gBACE,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,2BAAa,CAAC,MAAM;gBAC1B,WAAW,EAAE,4DAA4D;aAC1E;YACD;gBACE,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,2BAAa,CAAC,MAAM;gBAC1B,WAAW,EAAE,4CAA4C;aAC1D;SACF;QAED,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,QAAQ;oBACf,WAAW,EAAE,0DAA0D;oBACvE,OAAO,EAAE,EAAE;oBACX,UAAU,EAAE,UAAU;iBACvB;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,SAAS;oBAChB,WAAW,EAAE,iEAAiE;oBAC9E,OAAO,EAAE,EAAE;oBACX,UAAU,EAAE,UAAU;iBACvB;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,YAAY;oBACnB,WAAW,EAAE,2CAA2C;oBACxD,OAAO,EAAE,EAAE;oBACX,UAAU,EAAE,UAAU;iBACvB;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,WAAW;oBAClB,WAAW,EAAE,2CAA2C;oBACxD,OAAO,EAAE,EAAE;oBACX,UAAU,EAAE,UAAU;iBACvB;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,KAAK,EAAE,WAAW;oBAClB,WAAW,EAAE,8DAA8D;oBAC3E,OAAO,EAAE,EAAE;oBACX,UAAU,EAAE,UAAU;iBACvB;aACF;YACD,QAAQ,EAAE,EAAE;SACb;QAED,WAAW,EAAE;YACX;gBACE,IAAI,EAAE,kBAAkB;gBACxB,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,eAAe;gBAC5B,WAAW,EAAE,oEAAoE;aAClF;SACF;QAED,YAAY,EAAE;YACZ,SAAS,EAAE,KAAK;SACjB;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,oBAAoB,EAAE,CAAC;AAE7B,QAAA,qBAAqB,GAAG;IACnC,UAAU;IACV,QAAQ,EAAE,oCAAyB;CACpC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { HunterEmailFinderConfig, HunterEmailFinderOutput } from "../util/types";
|
|
2
|
+
/**
|
|
3
|
+
* Hunter Email Finder — find the most likely email address for a named person at a company.
|
|
4
|
+
* https://hunter.io/api-documentation/v2#email-finder
|
|
5
|
+
*/
|
|
6
|
+
export declare function hunterEmailFinder(config: HunterEmailFinderConfig, context: any): Promise<HunterEmailFinderOutput>;
|
|
7
|
+
//# sourceMappingURL=emailFinderService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emailFinderService.d.ts","sourceRoot":"","sources":["../../../src/HunterEmailFinder/service/emailFinderService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAIjF;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,GAAG,GACX,OAAO,CAAC,uBAAuB,CAAC,CAwElC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hunterEmailFinder = hunterEmailFinder;
|
|
4
|
+
const platform_1 = require("../../shared/platform");
|
|
5
|
+
const HUNTER_API_BASE = "https://api.hunter.io/v2";
|
|
6
|
+
/**
|
|
7
|
+
* Hunter Email Finder — find the most likely email address for a named person at a company.
|
|
8
|
+
* https://hunter.io/api-documentation/v2#email-finder
|
|
9
|
+
*/
|
|
10
|
+
async function hunterEmailFinder(config, context) {
|
|
11
|
+
const logger = (0, platform_1.createLogger)("HunterEmailFinder");
|
|
12
|
+
const available = context.credentials || {};
|
|
13
|
+
let creds;
|
|
14
|
+
for (const val of Object.values(available)) {
|
|
15
|
+
if (val?.apiKey) {
|
|
16
|
+
creds = val;
|
|
17
|
+
break;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const apiKey = creds?.apiKey;
|
|
21
|
+
if (!apiKey) {
|
|
22
|
+
throw new Error("Hunter API key not found in credentials");
|
|
23
|
+
}
|
|
24
|
+
const params = { api_key: apiKey };
|
|
25
|
+
if (config.domain?.trim())
|
|
26
|
+
params.domain = config.domain.trim();
|
|
27
|
+
if (config.company?.trim())
|
|
28
|
+
params.company = config.company.trim();
|
|
29
|
+
if (config.fullName?.trim()) {
|
|
30
|
+
params.full_name = config.fullName.trim();
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
if (config.firstName?.trim())
|
|
34
|
+
params.first_name = config.firstName.trim();
|
|
35
|
+
if (config.lastName?.trim())
|
|
36
|
+
params.last_name = config.lastName.trim();
|
|
37
|
+
}
|
|
38
|
+
const url = new URL(`${HUNTER_API_BASE}/email-finder`);
|
|
39
|
+
for (const [key, value] of Object.entries(params)) {
|
|
40
|
+
url.searchParams.set(key, String(value));
|
|
41
|
+
}
|
|
42
|
+
logger.info("Calling Hunter Email Finder", {
|
|
43
|
+
domain: params.domain,
|
|
44
|
+
company: params.company,
|
|
45
|
+
name: params.full_name || `${params.first_name ?? ""} ${params.last_name ?? ""}`.trim(),
|
|
46
|
+
});
|
|
47
|
+
const response = await fetch(url.toString(), {
|
|
48
|
+
method: "GET",
|
|
49
|
+
headers: { "Content-Type": "application/json" },
|
|
50
|
+
});
|
|
51
|
+
if (!response.ok) {
|
|
52
|
+
const errorText = await response.text().catch(() => response.statusText);
|
|
53
|
+
throw new Error(`Hunter API error ${response.status}: ${errorText}`);
|
|
54
|
+
}
|
|
55
|
+
const data = await response.json();
|
|
56
|
+
const d = data.data || {};
|
|
57
|
+
logger.info("Hunter Email Finder complete", {
|
|
58
|
+
email: d.email,
|
|
59
|
+
score: d.score,
|
|
60
|
+
});
|
|
61
|
+
return {
|
|
62
|
+
email: d.email || "",
|
|
63
|
+
score: d.score ?? 0,
|
|
64
|
+
first_name: d.first_name,
|
|
65
|
+
last_name: d.last_name,
|
|
66
|
+
position: d.position,
|
|
67
|
+
domain: d.domain,
|
|
68
|
+
company: d.company,
|
|
69
|
+
twitter: d.twitter,
|
|
70
|
+
linkedin_url: d.linkedin_url,
|
|
71
|
+
phone_number: d.phone_number,
|
|
72
|
+
accept_all: d.accept_all,
|
|
73
|
+
verification_status: d.verification?.status,
|
|
74
|
+
sources_count: Array.isArray(d.sources) ? d.sources.length : 0,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=emailFinderService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emailFinderService.js","sourceRoot":"","sources":["../../../src/HunterEmailFinder/service/emailFinderService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for the HunterEmailFinder node
|
|
3
|
+
*/
|
|
4
|
+
export interface HunterEmailFinderConfig {
|
|
5
|
+
domain: string;
|
|
6
|
+
company: string;
|
|
7
|
+
firstName: string;
|
|
8
|
+
lastName: string;
|
|
9
|
+
fullName: string;
|
|
10
|
+
}
|
|
11
|
+
export interface HunterEmailFinderOutput {
|
|
12
|
+
email: string;
|
|
13
|
+
score: number;
|
|
14
|
+
first_name?: string;
|
|
15
|
+
last_name?: string;
|
|
16
|
+
position?: string;
|
|
17
|
+
domain?: string;
|
|
18
|
+
company?: string;
|
|
19
|
+
twitter?: string;
|
|
20
|
+
linkedin_url?: string;
|
|
21
|
+
phone_number?: string;
|
|
22
|
+
accept_all?: boolean;
|
|
23
|
+
verification_status?: string;
|
|
24
|
+
sources_count: number;
|
|
25
|
+
}
|
|
26
|
+
export interface HunterEmailFinderExecutorOutput {
|
|
27
|
+
__outputs: HunterEmailFinderOutput;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/HunterEmailFinder/util/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,uBAAuB,CAAC;CACpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/HunterEmailFinder/util/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type NodeExecutionContext } from "@gravity-platform/plugin-base";
|
|
2
|
+
import { HunterEmailVerifierConfig, HunterEmailVerifierExecutorOutput } from "../util/types";
|
|
3
|
+
import { PromiseNode } from "../../shared/platform";
|
|
4
|
+
export declare class HunterEmailVerifierExecutor extends PromiseNode<HunterEmailVerifierConfig> {
|
|
5
|
+
constructor();
|
|
6
|
+
protected executeNode(inputs: Record<string, any>, config: HunterEmailVerifierConfig, context: NodeExecutionContext): Promise<HunterEmailVerifierExecutorOutput>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/HunterEmailVerifier/node/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,iCAAiC,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAgB,MAAM,uBAAuB,CAAC;AAKlE,qBAAa,2BAA4B,SAAQ,WAAW,CAAC,yBAAyB,CAAC;;cAKrE,WAAW,CACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,MAAM,EAAE,yBAAyB,EACjC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,iCAAiC,CAAC;CAoC9C"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HunterEmailVerifierExecutor = void 0;
|
|
4
|
+
const platform_1 = require("../../shared/platform");
|
|
5
|
+
const emailVerifierService_1 = require("../service/emailVerifierService");
|
|
6
|
+
const NODE_TYPE = "HunterEmailVerifier";
|
|
7
|
+
class HunterEmailVerifierExecutor extends platform_1.PromiseNode {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(NODE_TYPE);
|
|
10
|
+
}
|
|
11
|
+
async executeNode(inputs, config, context) {
|
|
12
|
+
const logger = (0, platform_1.createLogger)("HunterEmailVerifier");
|
|
13
|
+
logger.info("Starting Hunter Email Verifier", { email: config.email });
|
|
14
|
+
try {
|
|
15
|
+
const result = await (0, emailVerifierService_1.hunterEmailVerifier)(config, context);
|
|
16
|
+
logger.info("Hunter Email Verifier completed", {
|
|
17
|
+
email: result.email,
|
|
18
|
+
status: result.status,
|
|
19
|
+
result: result.result,
|
|
20
|
+
});
|
|
21
|
+
return {
|
|
22
|
+
__outputs: {
|
|
23
|
+
email: result.email,
|
|
24
|
+
status: result.status,
|
|
25
|
+
result: result.result,
|
|
26
|
+
score: result.score,
|
|
27
|
+
regexp: result.regexp,
|
|
28
|
+
gibberish: result.gibberish,
|
|
29
|
+
disposable: result.disposable,
|
|
30
|
+
webmail: result.webmail,
|
|
31
|
+
mx_records: result.mx_records,
|
|
32
|
+
smtp_server: result.smtp_server,
|
|
33
|
+
smtp_check: result.smtp_check,
|
|
34
|
+
accept_all: result.accept_all,
|
|
35
|
+
block: result.block,
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
logger.error("Hunter Email Verifier failed", { error });
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.HunterEmailVerifierExecutor = HunterEmailVerifierExecutor;
|
|
46
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/HunterEmailVerifier/node/executor.ts"],"names":[],"mappings":";;;AAEA,oDAAkE;AAClE,0EAAsE;AAEtE,MAAM,SAAS,GAAG,qBAAqB,CAAC;AAExC,MAAa,2BAA4B,SAAQ,sBAAsC;IACrF;QACE,KAAK,CAAC,SAAS,CAAC,CAAC;IACnB,CAAC;IAES,KAAK,CAAC,WAAW,CACzB,MAA2B,EAC3B,MAAiC,EACjC,OAA6B;QAE7B,MAAM,MAAM,GAAG,IAAA,uBAAY,EAAC,qBAAqB,CAAC,CAAC;QAEnD,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAEvE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAA,0CAAmB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAE1D,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE;gBAC7C,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC;YAEH,OAAO;gBACL,SAAS,EAAE;oBACT,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;iBACpB;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACxD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AA7CD,kEA6CC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type EnhancedNodeDefinition } from "@gravity-platform/plugin-base";
|
|
2
|
+
import { HunterEmailVerifierExecutor } from "./executor";
|
|
3
|
+
export declare const NODE_TYPE = "HunterEmailVerifier";
|
|
4
|
+
declare function createNodeDefinition(): EnhancedNodeDefinition;
|
|
5
|
+
export declare const HunterEmailVerifierNode: {
|
|
6
|
+
definition: any;
|
|
7
|
+
executor: typeof HunterEmailVerifierExecutor;
|
|
8
|
+
};
|
|
9
|
+
export { createNodeDefinition };
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/HunterEmailVerifier/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC3F,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAEzD,eAAO,MAAM,SAAS,wBAAwB,CAAC;AAE/C,iBAAS,oBAAoB,IAAI,sBAAsB,CAiFtD;AAID,eAAO,MAAM,uBAAuB;;;CAGnC,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|