linkedin-secret-sauce 0.11.1 → 0.12.1
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/cosiall-client.d.ts +40 -1
- package/dist/cosiall-client.js +142 -3
- package/dist/enrichment/index.d.ts +3 -3
- package/dist/enrichment/index.js +10 -2
- package/dist/enrichment/matching.d.ts +14 -8
- package/dist/enrichment/matching.js +175 -94
- package/dist/enrichment/providers/cosiall.d.ts +27 -0
- package/dist/enrichment/providers/cosiall.js +110 -0
- package/dist/enrichment/providers/index.d.ts +8 -7
- package/dist/enrichment/providers/index.js +3 -1
- package/dist/enrichment/types.d.ts +25 -11
- package/dist/enrichment/types.js +44 -40
- package/dist/index.d.ts +1 -0
- package/dist/types.d.ts +29 -3
- package/dist/utils/metrics.d.ts +3 -0
- package/dist/utils/metrics.js +3 -0
- package/package.json +1 -1
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cosiall Profile Emails Provider
|
|
4
|
+
*
|
|
5
|
+
* Lookups against the Cosiall FlexIQ Profile Emails API.
|
|
6
|
+
* This is FREE and returns all known emails for a LinkedIn profile.
|
|
7
|
+
*
|
|
8
|
+
* Lookup priority:
|
|
9
|
+
* 1. objectUrn (most precise - "urn:li:fsd_profile:ACoAABcdEfG")
|
|
10
|
+
* 2. linkedInUrl (URL like "https://www.linkedin.com/in/john-doe/")
|
|
11
|
+
* 3. vanity (username extracted from URL or direct field)
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.createCosiallProvider = createCosiallProvider;
|
|
15
|
+
const cosiall_client_1 = require("../../cosiall-client");
|
|
16
|
+
const validation_1 = require("../utils/validation");
|
|
17
|
+
/**
|
|
18
|
+
* Extract objectUrn from candidate
|
|
19
|
+
*/
|
|
20
|
+
function extractObjectUrn(candidate) {
|
|
21
|
+
const objectUrn = candidate.objectUrn || candidate.object_urn;
|
|
22
|
+
if (objectUrn && objectUrn.startsWith("urn:li:")) {
|
|
23
|
+
return objectUrn;
|
|
24
|
+
}
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Extract LinkedIn URL from candidate
|
|
29
|
+
*/
|
|
30
|
+
function extractLinkedInUrl(candidate) {
|
|
31
|
+
const url = candidate.linkedinUrl || candidate.linkedin_url;
|
|
32
|
+
if (url && url.includes("linkedin.com")) {
|
|
33
|
+
return url;
|
|
34
|
+
}
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Extract vanity (username) from candidate
|
|
39
|
+
*/
|
|
40
|
+
function extractVanity(candidate) {
|
|
41
|
+
// Direct username field
|
|
42
|
+
const directUsername = candidate.linkedinUsername || candidate.linkedin_username;
|
|
43
|
+
if (directUsername) {
|
|
44
|
+
return directUsername;
|
|
45
|
+
}
|
|
46
|
+
// Extract from URL
|
|
47
|
+
const url = candidate.linkedinUrl || candidate.linkedin_url;
|
|
48
|
+
if (url) {
|
|
49
|
+
const extracted = (0, validation_1.extractLinkedInUsername)(url);
|
|
50
|
+
if (extracted) {
|
|
51
|
+
return extracted;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Create the Cosiall provider function
|
|
58
|
+
*
|
|
59
|
+
* Returns all emails found for a LinkedIn profile.
|
|
60
|
+
* Since this is a free service, it should always be executed.
|
|
61
|
+
*/
|
|
62
|
+
function createCosiallProvider(config) {
|
|
63
|
+
// Check if explicitly disabled
|
|
64
|
+
if (config?.enabled === false) {
|
|
65
|
+
const noopProvider = async () => null;
|
|
66
|
+
noopProvider.__name = "cosiall";
|
|
67
|
+
return noopProvider;
|
|
68
|
+
}
|
|
69
|
+
async function fetchEmail(candidate) {
|
|
70
|
+
// Extract lookup parameters in priority order
|
|
71
|
+
const objectUrn = extractObjectUrn(candidate);
|
|
72
|
+
const linkedInUrl = extractLinkedInUrl(candidate);
|
|
73
|
+
const vanity = extractVanity(candidate);
|
|
74
|
+
// Must have at least one lookup parameter
|
|
75
|
+
if (!objectUrn && !linkedInUrl && !vanity) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
try {
|
|
79
|
+
const result = await (0, cosiall_client_1.fetchProfileEmailsFromCosiall)({
|
|
80
|
+
objectUrn: objectUrn || undefined,
|
|
81
|
+
linkedInUrl: linkedInUrl || undefined,
|
|
82
|
+
vanity: vanity || undefined,
|
|
83
|
+
});
|
|
84
|
+
// No emails found
|
|
85
|
+
if (!result.emails || result.emails.length === 0) {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
// Build multi-result with all emails
|
|
89
|
+
const emails = result.emails.map((email) => ({
|
|
90
|
+
email,
|
|
91
|
+
verified: true, // Cosiall data is from LinkedIn profiles
|
|
92
|
+
confidence: 85, // Good confidence - these are profile-associated emails
|
|
93
|
+
metadata: {
|
|
94
|
+
profileId: result.profileId,
|
|
95
|
+
objectUrn: result.objectUrn,
|
|
96
|
+
linkedInUrl: result.linkedInUrl,
|
|
97
|
+
source: "cosiall",
|
|
98
|
+
},
|
|
99
|
+
}));
|
|
100
|
+
return { emails };
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// Silently fail - provider failures shouldn't stop the enrichment flow
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Mark provider name for orchestrator
|
|
108
|
+
fetchEmail.__name = "cosiall";
|
|
109
|
+
return fetchEmail;
|
|
110
|
+
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Email Enrichment Providers
|
|
3
3
|
*/
|
|
4
|
-
export { createConstructProvider } from
|
|
5
|
-
export { createLddProvider } from
|
|
6
|
-
export { createSmartProspectProvider } from
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
4
|
+
export { createConstructProvider } from "./construct";
|
|
5
|
+
export { createLddProvider } from "./ldd";
|
|
6
|
+
export { createSmartProspectProvider } from "./smartprospect";
|
|
7
|
+
export { createCosiallProvider } from "./cosiall";
|
|
8
|
+
export { createHunterProvider } from "./hunter";
|
|
9
|
+
export { createDropcontactProvider } from "./dropcontact";
|
|
10
|
+
export { createBouncerProvider, verifyEmailWithBouncer, checkCatchAllDomain, verifyEmailsBatch, } from "./bouncer";
|
|
11
|
+
export { createSnovioProvider, findEmailsWithSnovio, verifyEmailWithSnovio, clearSnovioTokenCache, } from "./snovio";
|
|
@@ -3,13 +3,15 @@
|
|
|
3
3
|
* Email Enrichment Providers
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.clearSnovioTokenCache = exports.verifyEmailWithSnovio = exports.findEmailsWithSnovio = exports.createSnovioProvider = exports.verifyEmailsBatch = exports.checkCatchAllDomain = exports.verifyEmailWithBouncer = exports.createBouncerProvider = exports.createDropcontactProvider = exports.createHunterProvider = exports.createSmartProspectProvider = exports.createLddProvider = exports.createConstructProvider = void 0;
|
|
6
|
+
exports.clearSnovioTokenCache = exports.verifyEmailWithSnovio = exports.findEmailsWithSnovio = exports.createSnovioProvider = exports.verifyEmailsBatch = exports.checkCatchAllDomain = exports.verifyEmailWithBouncer = exports.createBouncerProvider = exports.createDropcontactProvider = exports.createHunterProvider = exports.createCosiallProvider = exports.createSmartProspectProvider = exports.createLddProvider = exports.createConstructProvider = void 0;
|
|
7
7
|
var construct_1 = require("./construct");
|
|
8
8
|
Object.defineProperty(exports, "createConstructProvider", { enumerable: true, get: function () { return construct_1.createConstructProvider; } });
|
|
9
9
|
var ldd_1 = require("./ldd");
|
|
10
10
|
Object.defineProperty(exports, "createLddProvider", { enumerable: true, get: function () { return ldd_1.createLddProvider; } });
|
|
11
11
|
var smartprospect_1 = require("./smartprospect");
|
|
12
12
|
Object.defineProperty(exports, "createSmartProspectProvider", { enumerable: true, get: function () { return smartprospect_1.createSmartProspectProvider; } });
|
|
13
|
+
var cosiall_1 = require("./cosiall");
|
|
14
|
+
Object.defineProperty(exports, "createCosiallProvider", { enumerable: true, get: function () { return cosiall_1.createCosiallProvider; } });
|
|
13
15
|
var hunter_1 = require("./hunter");
|
|
14
16
|
Object.defineProperty(exports, "createHunterProvider", { enumerable: true, get: function () { return hunter_1.createHunterProvider; } });
|
|
15
17
|
var dropcontact_1 = require("./dropcontact");
|
|
@@ -45,7 +45,7 @@ export interface ProviderMultiResult {
|
|
|
45
45
|
/**
|
|
46
46
|
* Email type classification
|
|
47
47
|
*/
|
|
48
|
-
export type EmailType =
|
|
48
|
+
export type EmailType = "business" | "personal" | "disposable" | "role" | "unknown";
|
|
49
49
|
/**
|
|
50
50
|
* Individual enriched email with full metadata
|
|
51
51
|
*/
|
|
@@ -179,11 +179,11 @@ export interface BouncerConfig {
|
|
|
179
179
|
/**
|
|
180
180
|
* Bouncer verification result status
|
|
181
181
|
*/
|
|
182
|
-
export type BouncerStatus =
|
|
182
|
+
export type BouncerStatus = "deliverable" | "undeliverable" | "risky" | "unknown";
|
|
183
183
|
/**
|
|
184
184
|
* Bouncer verification result reason
|
|
185
185
|
*/
|
|
186
|
-
export type BouncerReason =
|
|
186
|
+
export type BouncerReason = "accepted_email" | "rejected_email" | "invalid_domain" | "invalid_email" | "unavailable_smtp" | "dns_error" | "low_deliverability" | "low_quality" | "catch_all" | "full_mailbox" | "role_account" | "disposable" | "timeout" | "unknown";
|
|
187
187
|
/**
|
|
188
188
|
* Bouncer API response for single email verification
|
|
189
189
|
*/
|
|
@@ -232,7 +232,7 @@ export interface SnovioConfig {
|
|
|
232
232
|
/**
|
|
233
233
|
* Snov.io email verification status
|
|
234
234
|
*/
|
|
235
|
-
export type SnovioVerificationStatus =
|
|
235
|
+
export type SnovioVerificationStatus = "valid" | "not_valid" | "catch_all" | "unverifiable" | "unknown";
|
|
236
236
|
/**
|
|
237
237
|
* Snov.io email result
|
|
238
238
|
*/
|
|
@@ -244,7 +244,7 @@ export interface SnovioEmailResult {
|
|
|
244
244
|
position?: string;
|
|
245
245
|
sourcePage?: string;
|
|
246
246
|
companyName?: string;
|
|
247
|
-
type?:
|
|
247
|
+
type?: "prospect" | "personal";
|
|
248
248
|
status?: string;
|
|
249
249
|
}
|
|
250
250
|
/**
|
|
@@ -274,6 +274,16 @@ export interface ConstructConfig {
|
|
|
274
274
|
/** Delay between SMTP verification checks in ms (default: 2000) */
|
|
275
275
|
smtpVerifyDelayMs?: number;
|
|
276
276
|
}
|
|
277
|
+
/**
|
|
278
|
+
* Cosiall Profile Emails provider configuration
|
|
279
|
+
*
|
|
280
|
+
* Uses Cosiall FlexIQ Profile Emails API to lookup emails for LinkedIn profiles.
|
|
281
|
+
* This is FREE - no API key needed (uses global Cosiall config).
|
|
282
|
+
*/
|
|
283
|
+
export interface CosiallConfig {
|
|
284
|
+
/** Whether to enable the provider (default: true) */
|
|
285
|
+
enabled?: boolean;
|
|
286
|
+
}
|
|
277
287
|
/**
|
|
278
288
|
* All provider configurations
|
|
279
289
|
*/
|
|
@@ -281,6 +291,8 @@ export interface ProvidersConfig {
|
|
|
281
291
|
construct?: ConstructConfig;
|
|
282
292
|
ldd?: LddConfig;
|
|
283
293
|
smartprospect?: SmartProspectConfig;
|
|
294
|
+
/** Cosiall Profile Emails (FREE - uses global Cosiall config) */
|
|
295
|
+
cosiall?: CosiallConfig;
|
|
284
296
|
hunter?: HunterConfig;
|
|
285
297
|
dropcontact?: DropcontactConfig;
|
|
286
298
|
/** Bouncer.io for SMTP email verification (99%+ accuracy) */
|
|
@@ -365,13 +377,14 @@ export interface EnrichmentClient {
|
|
|
365
377
|
/**
|
|
366
378
|
* Available provider names
|
|
367
379
|
*/
|
|
368
|
-
export type ProviderName = "construct" | "ldd" | "smartprospect" | "hunter" | "dropcontact" | "bouncer" | "snovio";
|
|
380
|
+
export type ProviderName = "construct" | "ldd" | "smartprospect" | "cosiall" | "hunter" | "dropcontact" | "bouncer" | "snovio";
|
|
369
381
|
/**
|
|
370
382
|
* Default provider order - 2-Phase Strategy
|
|
371
383
|
*
|
|
372
384
|
* PHASE 1 - Free lookups (run in parallel):
|
|
373
385
|
* - ldd: LinkedIn Data Dump - real verified emails (FREE with subscription)
|
|
374
386
|
* - smartprospect: SmartLead API - real verified emails (FREE with subscription)
|
|
387
|
+
* - cosiall: Cosiall Profile Emails - emails from LinkedIn profiles (FREE)
|
|
375
388
|
* - construct: Pattern guessing + MX check (FREE)
|
|
376
389
|
*
|
|
377
390
|
* PHASE 2 - Paid verification/finding (only if Phase 1 inconclusive):
|
|
@@ -388,6 +401,7 @@ export declare const DEFAULT_PROVIDER_ORDER: ProviderName[];
|
|
|
388
401
|
* Costs based on 2025 pricing:
|
|
389
402
|
* - ldd: FREE (subscription-based)
|
|
390
403
|
* - smartprospect: FREE (included in SmartLead subscription)
|
|
404
|
+
* - cosiall: FREE (uses global Cosiall config)
|
|
391
405
|
* - construct: FREE (pattern guessing + MX check)
|
|
392
406
|
* - bouncer: $0.006/email (SMTP verification, 99%+ accuracy)
|
|
393
407
|
* - snovio: $0.02/email (email finding + verification)
|
|
@@ -492,23 +506,23 @@ export interface SmartProspectSearchFilters {
|
|
|
492
506
|
/**
|
|
493
507
|
* SmartProspect Department values (exact API values)
|
|
494
508
|
*/
|
|
495
|
-
export type SmartProspectDepartment =
|
|
509
|
+
export type SmartProspectDepartment = "Engineering" | "Finance & Administration" | "Human Resources" | "IT & IS" | "Marketing" | "Operations" | "Other" | "Support" | "Sales";
|
|
496
510
|
/**
|
|
497
511
|
* SmartProspect Level/Seniority values (exact API values)
|
|
498
512
|
*/
|
|
499
|
-
export type SmartProspectLevel =
|
|
513
|
+
export type SmartProspectLevel = "Staff" | "Manager-Level" | "Director-Level" | "VP-Level" | "C-Level";
|
|
500
514
|
/**
|
|
501
515
|
* SmartProspect Headcount ranges (exact API values)
|
|
502
516
|
*/
|
|
503
|
-
export type SmartProspectHeadcount =
|
|
517
|
+
export type SmartProspectHeadcount = "0 - 25" | "25 - 100" | "100 - 250" | "250 - 1000" | "1K - 10K" | "10K - 50K" | "50K - 100K" | "> 100K";
|
|
504
518
|
/**
|
|
505
519
|
* SmartProspect Revenue ranges (exact API values)
|
|
506
520
|
*/
|
|
507
|
-
export type SmartProspectRevenue =
|
|
521
|
+
export type SmartProspectRevenue = "$0 - 1M" | "$1 - 10M" | "$10 - 50M" | "$50 - 100M" | "$100 - 250M" | "$250 - 500M" | "$500M - 1B" | "> $1B";
|
|
508
522
|
/**
|
|
509
523
|
* SmartProspect Industry values (exact API values)
|
|
510
524
|
*/
|
|
511
|
-
export type SmartProspectIndustry =
|
|
525
|
+
export type SmartProspectIndustry = "Software & Internet" | "Business Services" | "Real Estate & Construction" | "Financial Services" | "Healthcare, Pharmaceuticals, & Biotech" | "Retail" | "Consumer Services" | "Education" | "Media & Entertainment" | "Travel, Recreation, and Leisure" | "Transportation & Storage" | "Manufacturing" | "Wholesale & Distribution" | "Non-Profit" | "Energy & Utilities" | "Government" | "Agriculture & Mining" | "Computers & Electronics" | "Telecommunications" | "Other";
|
|
512
526
|
/**
|
|
513
527
|
* SmartProspect Sub-Industry values (exact API values - partial list)
|
|
514
528
|
* Note: This is a subset of available sub-industries. The API accepts many more.
|
package/dist/enrichment/types.js
CHANGED
|
@@ -13,6 +13,7 @@ exports.SMARTPROSPECT_SUB_INDUSTRIES = exports.PROVIDER_COSTS = exports.DEFAULT_
|
|
|
13
13
|
* PHASE 1 - Free lookups (run in parallel):
|
|
14
14
|
* - ldd: LinkedIn Data Dump - real verified emails (FREE with subscription)
|
|
15
15
|
* - smartprospect: SmartLead API - real verified emails (FREE with subscription)
|
|
16
|
+
* - cosiall: Cosiall Profile Emails - emails from LinkedIn profiles (FREE)
|
|
16
17
|
* - construct: Pattern guessing + MX check (FREE)
|
|
17
18
|
*
|
|
18
19
|
* PHASE 2 - Paid verification/finding (only if Phase 1 inconclusive):
|
|
@@ -25,6 +26,7 @@ exports.SMARTPROSPECT_SUB_INDUSTRIES = exports.PROVIDER_COSTS = exports.DEFAULT_
|
|
|
25
26
|
exports.DEFAULT_PROVIDER_ORDER = [
|
|
26
27
|
"ldd",
|
|
27
28
|
"smartprospect",
|
|
29
|
+
"cosiall",
|
|
28
30
|
"construct",
|
|
29
31
|
"bouncer",
|
|
30
32
|
"snovio",
|
|
@@ -36,6 +38,7 @@ exports.DEFAULT_PROVIDER_ORDER = [
|
|
|
36
38
|
* Costs based on 2025 pricing:
|
|
37
39
|
* - ldd: FREE (subscription-based)
|
|
38
40
|
* - smartprospect: FREE (included in SmartLead subscription)
|
|
41
|
+
* - cosiall: FREE (uses global Cosiall config)
|
|
39
42
|
* - construct: FREE (pattern guessing + MX check)
|
|
40
43
|
* - bouncer: $0.006/email (SMTP verification, 99%+ accuracy)
|
|
41
44
|
* - snovio: $0.02/email (email finding + verification)
|
|
@@ -46,6 +49,7 @@ exports.PROVIDER_COSTS = {
|
|
|
46
49
|
construct: 0,
|
|
47
50
|
ldd: 0,
|
|
48
51
|
smartprospect: 0,
|
|
52
|
+
cosiall: 0,
|
|
49
53
|
hunter: 0.005,
|
|
50
54
|
dropcontact: 0.01,
|
|
51
55
|
bouncer: 0.006,
|
|
@@ -57,46 +61,46 @@ exports.PROVIDER_COSTS = {
|
|
|
57
61
|
*/
|
|
58
62
|
exports.SMARTPROSPECT_SUB_INDUSTRIES = [
|
|
59
63
|
// Software & Internet
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
"Internet",
|
|
65
|
+
"Information Technology and Services",
|
|
66
|
+
"Information Services",
|
|
67
|
+
"Computer Software",
|
|
68
|
+
"Computer & Network Security",
|
|
69
|
+
"Computer Games",
|
|
66
70
|
// Real Estate & Construction
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
"Glass, Ceramics & Concrete",
|
|
72
|
+
"Construction",
|
|
73
|
+
"Commercial Real Estate",
|
|
74
|
+
"Civil Engineering",
|
|
75
|
+
"Building Materials",
|
|
76
|
+
"Architecture & Planning",
|
|
73
77
|
// Business Services
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
78
|
+
"Writing and Editing",
|
|
79
|
+
"Translation and Localization",
|
|
80
|
+
"Think Tanks",
|
|
81
|
+
"Staffing and Recruiting",
|
|
82
|
+
"Security and Investigations",
|
|
83
|
+
"Public Safety",
|
|
84
|
+
"Public Relations and Communications",
|
|
85
|
+
"Program Development",
|
|
86
|
+
"Professional Training & Coaching",
|
|
87
|
+
"Market Research",
|
|
88
|
+
"Marketing and Advertising",
|
|
89
|
+
"Management Consulting",
|
|
90
|
+
"Legal Services",
|
|
91
|
+
"Law Practice",
|
|
92
|
+
"Law Enforcement",
|
|
93
|
+
"International Trade and Development",
|
|
94
|
+
"Import and Export",
|
|
95
|
+
"Human Resources",
|
|
96
|
+
"Graphic Design",
|
|
97
|
+
"Facilities Services",
|
|
98
|
+
"Executive Office",
|
|
99
|
+
"Events Services",
|
|
100
|
+
"Environmental Services",
|
|
101
|
+
"Design",
|
|
102
|
+
"Business Supplies and Equipment",
|
|
103
|
+
"Animation",
|
|
104
|
+
"Alternative Dispute Resolution",
|
|
105
|
+
"Outsourcing/Offshoring",
|
|
102
106
|
];
|
package/dist/index.d.ts
CHANGED
|
@@ -52,6 +52,7 @@ export type { LinkedInTenure, LinkedInPosition, LinkedInSpotlightBadge, SalesLea
|
|
|
52
52
|
export { LinkedInClientError } from "./utils/errors";
|
|
53
53
|
export * from "./cosiall-client";
|
|
54
54
|
export * from "./cookie-pool";
|
|
55
|
+
export type { CosiallProfileEmailsResponse, ProfileEmailsLookupOptions, } from "./types";
|
|
55
56
|
export { parseFullProfile } from "./parsers/profile-parser";
|
|
56
57
|
export { parseSalesSearchResults } from "./parsers/search-parser";
|
|
57
58
|
export * from "./utils/metrics";
|
package/dist/types.d.ts
CHANGED
|
@@ -1,3 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Response from the Cosiall Profile Emails API endpoint.
|
|
3
|
+
* Returns email addresses associated with a LinkedIn profile.
|
|
4
|
+
*/
|
|
5
|
+
export interface CosiallProfileEmailsResponse {
|
|
6
|
+
/** Cosiall internal profile ID */
|
|
7
|
+
profileId: number;
|
|
8
|
+
/** LinkedIn ObjectURN identifier (e.g., "urn:li:fsd_profile:ACoAABcdEfG") */
|
|
9
|
+
objectUrn: string;
|
|
10
|
+
/** LinkedIn profile URL */
|
|
11
|
+
linkedInUrl: string;
|
|
12
|
+
/** List of email addresses associated with the profile (may be empty) */
|
|
13
|
+
emails: string[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Options for looking up profile emails from Cosiall.
|
|
17
|
+
* At least one of objectUrn, linkedInUrl, or vanity must be provided.
|
|
18
|
+
*/
|
|
19
|
+
export interface ProfileEmailsLookupOptions {
|
|
20
|
+
/** LinkedIn ObjectURN identifier (most precise lookup method) */
|
|
21
|
+
objectUrn?: string;
|
|
22
|
+
/** Full LinkedIn profile URL (e.g., "https://www.linkedin.com/in/john-doe/") */
|
|
23
|
+
linkedInUrl?: string;
|
|
24
|
+
/** LinkedIn username/vanity name (e.g., "john-doe") */
|
|
25
|
+
vanity?: string;
|
|
26
|
+
}
|
|
1
27
|
export interface LinkedInCookie {
|
|
2
28
|
name: string;
|
|
3
29
|
value: string;
|
|
@@ -6,7 +32,7 @@ export interface LinkedInCookie {
|
|
|
6
32
|
expires?: number;
|
|
7
33
|
httpOnly?: boolean;
|
|
8
34
|
secure?: boolean;
|
|
9
|
-
sameSite?:
|
|
35
|
+
sameSite?: "Strict" | "Lax" | "None";
|
|
10
36
|
}
|
|
11
37
|
export interface AccountCookies {
|
|
12
38
|
accountId: string;
|
|
@@ -184,7 +210,7 @@ export interface Company {
|
|
|
184
210
|
specialties?: string[];
|
|
185
211
|
emailDomains?: string[];
|
|
186
212
|
}
|
|
187
|
-
export type TypeaheadType =
|
|
213
|
+
export type TypeaheadType = "BING_GEO" | "TITLE" | "INDUSTRY" | "SENIORITY_LEVEL" | "FUNCTION" | "COMPANY_SIZE" | "COMPANY" | "PROFILE_LANGUAGE";
|
|
188
214
|
export interface TypeaheadItem {
|
|
189
215
|
id: string;
|
|
190
216
|
text: string;
|
|
@@ -208,7 +234,7 @@ export interface SalesNavigatorProfile {
|
|
|
208
234
|
flagshipProfileUrl?: string;
|
|
209
235
|
}
|
|
210
236
|
export type Geo = {
|
|
211
|
-
type:
|
|
237
|
+
type: "region" | "country" | "state" | "city" | "postal";
|
|
212
238
|
value: string;
|
|
213
239
|
id?: string;
|
|
214
240
|
};
|
package/dist/utils/metrics.d.ts
CHANGED
|
@@ -15,6 +15,9 @@ export interface Metrics {
|
|
|
15
15
|
cosiallFetches: number;
|
|
16
16
|
cosiallSuccess: number;
|
|
17
17
|
cosiallFailures: number;
|
|
18
|
+
cosiallProfileEmailsFetches: number;
|
|
19
|
+
cosiallProfileEmailsSuccess: number;
|
|
20
|
+
cosiallProfileEmailsFailures: number;
|
|
18
21
|
companyFetches: number;
|
|
19
22
|
typeaheadRequests: number;
|
|
20
23
|
}
|
package/dist/utils/metrics.js
CHANGED