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.
@@ -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 './construct';
5
- export { createLddProvider } from './ldd';
6
- export { createSmartProspectProvider } from './smartprospect';
7
- export { createHunterProvider } from './hunter';
8
- export { createDropcontactProvider } from './dropcontact';
9
- export { createBouncerProvider, verifyEmailWithBouncer, checkCatchAllDomain, verifyEmailsBatch } from './bouncer';
10
- export { createSnovioProvider, findEmailsWithSnovio, verifyEmailWithSnovio, clearSnovioTokenCache } from './snovio';
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 = 'business' | 'personal' | 'disposable' | 'role' | 'unknown';
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 = 'deliverable' | 'undeliverable' | 'risky' | 'unknown';
182
+ export type BouncerStatus = "deliverable" | "undeliverable" | "risky" | "unknown";
183
183
  /**
184
184
  * Bouncer verification result reason
185
185
  */
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';
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 = 'valid' | 'not_valid' | 'catch_all' | 'unverifiable' | 'unknown';
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?: 'prospect' | 'personal';
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 = 'Engineering' | 'Finance & Administration' | 'Human Resources' | 'IT & IS' | 'Marketing' | 'Operations' | 'Other' | 'Support' | 'Sales';
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 = 'Staff' | 'Manager-Level' | 'Director-Level' | 'VP-Level' | 'C-Level';
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 = '0 - 25' | '25 - 100' | '100 - 250' | '250 - 1000' | '1K - 10K' | '10K - 50K' | '50K - 100K' | '> 100K';
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 = '$0 - 1M' | '$1 - 10M' | '$10 - 50M' | '$50 - 100M' | '$100 - 250M' | '$250 - 500M' | '$500M - 1B' | '> $1B';
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 = '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';
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.
@@ -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
- 'Internet',
61
- 'Information Technology and Services',
62
- 'Information Services',
63
- 'Computer Software',
64
- 'Computer & Network Security',
65
- 'Computer Games',
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
- 'Glass, Ceramics & Concrete',
68
- 'Construction',
69
- 'Commercial Real Estate',
70
- 'Civil Engineering',
71
- 'Building Materials',
72
- 'Architecture & Planning',
71
+ "Glass, Ceramics & Concrete",
72
+ "Construction",
73
+ "Commercial Real Estate",
74
+ "Civil Engineering",
75
+ "Building Materials",
76
+ "Architecture & Planning",
73
77
  // Business Services
74
- 'Writing and Editing',
75
- 'Translation and Localization',
76
- 'Think Tanks',
77
- 'Staffing and Recruiting',
78
- 'Security and Investigations',
79
- 'Public Safety',
80
- 'Public Relations and Communications',
81
- 'Program Development',
82
- 'Professional Training & Coaching',
83
- 'Market Research',
84
- 'Marketing and Advertising',
85
- 'Management Consulting',
86
- 'Legal Services',
87
- 'Law Practice',
88
- 'Law Enforcement',
89
- 'International Trade and Development',
90
- 'Import and Export',
91
- 'Human Resources',
92
- 'Graphic Design',
93
- 'Facilities Services',
94
- 'Executive Office',
95
- 'Events Services',
96
- 'Environmental Services',
97
- 'Design',
98
- 'Business Supplies and Equipment',
99
- 'Animation',
100
- 'Alternative Dispute Resolution',
101
- 'Outsourcing/Offshoring',
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?: 'Strict' | 'Lax' | 'None';
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 = 'BING_GEO' | 'TITLE' | 'INDUSTRY' | 'SENIORITY_LEVEL' | 'FUNCTION' | 'COMPANY_SIZE' | 'COMPANY' | 'PROFILE_LANGUAGE';
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: 'region' | 'country' | 'state' | 'city' | 'postal';
237
+ type: "region" | "country" | "state" | "city" | "postal";
212
238
  value: string;
213
239
  id?: string;
214
240
  };
@@ -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
  }
@@ -20,6 +20,9 @@ const metrics = {
20
20
  cosiallFetches: 0,
21
21
  cosiallSuccess: 0,
22
22
  cosiallFailures: 0,
23
+ cosiallProfileEmailsFetches: 0,
24
+ cosiallProfileEmailsSuccess: 0,
25
+ cosiallProfileEmailsFailures: 0,
23
26
  companyFetches: 0,
24
27
  typeaheadRequests: 0,
25
28
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linkedin-secret-sauce",
3
- "version": "0.11.1",
3
+ "version": "0.12.1",
4
4
  "description": "Private LinkedIn Sales Navigator client with automatic cookie management",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",