gtm-now 0.7.1 → 0.8.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/index.js CHANGED
@@ -8741,10 +8741,25 @@ var init_bettercontact = __esm({
8741
8741
  });
8742
8742
 
8743
8743
  // src/providers/adapters/disco.ts
8744
- function mapSeniority(values) {
8745
- if (!values || values.length === 0) return void 0;
8746
- const mapped = values.map((v) => SENIORITY_TO_DISCO[v] ?? v);
8747
- return [...new Set(mapped)];
8744
+ function buildGrowthSignals(data) {
8745
+ if (!data) return void 0;
8746
+ const signals = {
8747
+ quarterly_growth: data.quarterly_growth,
8748
+ growth_trend: data.growth_trend,
8749
+ digital_footprint_score: data.digital_footprint_score,
8750
+ digital_footprint_trend: data.digital_footprint_trend
8751
+ };
8752
+ return Object.values(signals).some((v) => v != null) ? signals : void 0;
8753
+ }
8754
+ function buildEngagementMetrics(data) {
8755
+ if (!data) return void 0;
8756
+ const metrics = {
8757
+ traffic_estimate: data.traffic_estimate,
8758
+ social_presence: data.social_presence,
8759
+ monthly_visitors: data.monthly_visitors,
8760
+ bounce_rate: data.bounce_rate
8761
+ };
8762
+ return Object.values(metrics).some((v) => v != null) ? metrics : void 0;
8748
8763
  }
8749
8764
  function parseName(fullName) {
8750
8765
  const parts = fullName.trim().split(/\s+/);
@@ -8802,22 +8817,12 @@ function domainToCompanyName(domain) {
8802
8817
  const words = slug.replace(/[-_]/g, " ").replace(/([a-z])([A-Z])/g, "$1 $2").split(/\s+/).filter(Boolean);
8803
8818
  return words.map((w) => w.charAt(0).toUpperCase() + w.slice(1).toLowerCase()).join(" ");
8804
8819
  }
8805
- var SENIORITY_TO_DISCO, DiscoAdapter, US_STATES, US_STATE_CODES;
8820
+ var DiscoAdapter, US_STATES, US_STATE_CODES;
8806
8821
  var init_disco = __esm({
8807
8822
  "src/providers/adapters/disco.ts"() {
8808
8823
  "use strict";
8809
8824
  init_dist();
8810
8825
  init_dist2();
8811
- SENIORITY_TO_DISCO = {
8812
- c_suite: "executive",
8813
- founder: "executive",
8814
- owner: "executive",
8815
- partner: "executive",
8816
- head: "director",
8817
- senior: "senior_ic",
8818
- entry: "entry_level",
8819
- intern: "entry_level"
8820
- };
8821
8826
  DiscoAdapter = class {
8822
8827
  name = "disco";
8823
8828
  capabilities = ["find_companies", "find_people"];
@@ -8859,7 +8864,9 @@ var init_disco = __esm({
8859
8864
  country: c.address?.country,
8860
8865
  linkedin_url: c.social_urls?.find((u) => u.includes("linkedin")),
8861
8866
  score: c.score,
8862
- tech_stack: c.keywords ? Object.keys(c.keywords) : void 0,
8867
+ tech_stack: void 0,
8868
+ // Discovery doesn't have vendor data; keywords are not tech_stack
8869
+ keywords: c.keywords ? Object.keys(c.keywords) : void 0,
8863
8870
  sources: [this.name]
8864
8871
  }));
8865
8872
  }
@@ -8889,9 +8896,8 @@ var init_disco = __esm({
8889
8896
  const growthData = growth.status === "fulfilled" ? growth.value : void 0;
8890
8897
  const vendorsData = vendors.status === "fulfilled" ? vendors.value : void 0;
8891
8898
  const metricsData = metrics.status === "fulfilled" ? metrics.value : void 0;
8892
- const keywordTech = data.keywords ? Object.keys(data.keywords) : [];
8893
8899
  const vendorTech = vendorsData?.vendors?.map((v) => v.name) ?? [];
8894
- const mergedTech = [.../* @__PURE__ */ new Set([...keywordTech, ...vendorTech])];
8900
+ const keywordList = data.keywords ? Object.keys(data.keywords) : [];
8895
8901
  return {
8896
8902
  domain: data.domain,
8897
8903
  name: data.name,
@@ -8900,15 +8906,10 @@ var init_disco = __esm({
8900
8906
  employees: data.employees ? parseInt(data.employees, 10) || void 0 : void 0,
8901
8907
  country: data.address?.country,
8902
8908
  linkedin_url: data.social_urls?.find((u) => u.includes("linkedin")),
8903
- tech_stack: mergedTech.length > 0 ? mergedTech : void 0,
8904
- growth_signals: growthData ? {
8905
- quarterly_growth: growthData.quarterly_growth,
8906
- digital_footprint_trend: growthData.digital_footprint_trend
8907
- } : void 0,
8908
- engagement_metrics: metricsData ? {
8909
- traffic_estimate: metricsData.traffic_estimate,
8910
- social_presence: metricsData.social_presence
8911
- } : void 0,
8909
+ tech_stack: vendorTech.length > 0 ? vendorTech : void 0,
8910
+ keywords: keywordList.length > 0 ? keywordList : void 0,
8911
+ growth_signals: buildGrowthSignals(growthData),
8912
+ engagement_metrics: buildEngagementMetrics(metricsData),
8912
8913
  sources: [this.name]
8913
8914
  };
8914
8915
  } catch (error) {
@@ -8928,7 +8929,7 @@ var init_disco = __esm({
8928
8929
  ...parseLocation(query.location),
8929
8930
  has_email: query.has_email ?? true,
8930
8931
  max_records: query.limit ?? 25,
8931
- seniority: mapSeniority(query.seniority),
8932
+ seniority: query.seniority,
8932
8933
  department: query.department,
8933
8934
  has_phone: query.has_phone,
8934
8935
  has_linkedin: query.has_linkedin,
@@ -8959,6 +8960,7 @@ var init_disco = __esm({
8959
8960
  skills: c.skills,
8960
8961
  connections: c.connections,
8961
8962
  location: c.country,
8963
+ industry: Array.isArray(c.industry) ? c.industry[0] : c.industry,
8962
8964
  sources: [this.name]
8963
8965
  };
8964
8966
  });
@@ -9021,7 +9023,7 @@ var init_disco = __esm({
9021
9023
  });
9022
9024
 
9023
9025
  // src/providers/adapters/prospeo.ts
9024
- function mapSeniority2(values) {
9026
+ function mapSeniority(values) {
9025
9027
  if (!values?.length) return void 0;
9026
9028
  const mapped = values.map((v) => SENIORITY_TO_PROSPEO[v] ?? v);
9027
9029
  return [...new Set(mapped)];
@@ -9082,7 +9084,7 @@ var init_prospeo2 = __esm({
9082
9084
  async findPeople(query) {
9083
9085
  const filters = {};
9084
9086
  if (query.job_title) filters.person_job_title = query.job_title;
9085
- if (query.seniority) filters.person_seniority = mapSeniority2(query.seniority);
9087
+ if (query.seniority) filters.person_seniority = mapSeniority(query.seniority);
9086
9088
  if (query.department?.length) filters.person_department = query.department[0];
9087
9089
  if (query.location) filters.person_location_search = query.location;
9088
9090
  if (query.company_domain) filters.company = query.company_domain;
@@ -9977,11 +9979,21 @@ async function findCompanies(args, ctx) {
9977
9979
  });
9978
9980
  const limit = args.limit ?? 50;
9979
9981
  const offset = args.offset ?? 0;
9982
+ const applied_filters = {};
9983
+ if (query.icp_text) applied_filters.icp_text = query.icp_text;
9984
+ if (query.domain) applied_filters.domain = query.domain;
9985
+ if (query.domains?.length) applied_filters.domains = query.domains;
9986
+ if (query.country) applied_filters.country = query.country;
9987
+ if (query.category) applied_filters.category = query.category;
9988
+ if (query.tech_stack?.length) applied_filters.tech_stack = query.tech_stack;
9989
+ if (query.min_employees != null) applied_filters.min_employees = query.min_employees;
9990
+ if (query.max_employees != null) applied_filters.max_employees = query.max_employees;
9980
9991
  return {
9981
9992
  provider: provider.name,
9982
9993
  count: results.length,
9983
9994
  has_more: results.length >= limit,
9984
9995
  offset,
9996
+ ...Object.keys(applied_filters).length > 0 && { applied_filters },
9985
9997
  companies: slimmedResults
9986
9998
  };
9987
9999
  }
@@ -10029,11 +10041,26 @@ async function findPeople(args, ctx) {
10029
10041
  });
10030
10042
  const limit = args.limit ?? 25;
10031
10043
  const offset = args.offset ?? 0;
10044
+ const applied_filters = {};
10045
+ if (query.job_title) applied_filters.job_title = query.job_title;
10046
+ if (query.company_name) applied_filters.company_name = query.company_name;
10047
+ if (query.company_domain) applied_filters.company_domain = query.company_domain;
10048
+ if (query.company_domains?.length) applied_filters.company_domains = query.company_domains;
10049
+ if (query.seniority?.length) applied_filters.seniority = query.seniority;
10050
+ if (query.department?.length) applied_filters.department = query.department;
10051
+ if (query.filter_industry?.length) applied_filters.filter_industry = query.filter_industry;
10052
+ if (query.skills?.length) applied_filters.skills = query.skills;
10053
+ if (query.location) applied_filters.location = query.location;
10054
+ if (query.email_validated) applied_filters.email_validated = query.email_validated;
10055
+ if (query.min_employees != null) applied_filters.min_employees = query.min_employees;
10056
+ if (query.max_employees != null) applied_filters.max_employees = query.max_employees;
10057
+ if (query.revenue_range) applied_filters.revenue_range = query.revenue_range;
10032
10058
  return {
10033
10059
  provider: provider.name,
10034
10060
  count: dedupedResults.length,
10035
10061
  has_more: dedupedResults.length >= limit,
10036
10062
  offset,
10063
+ ...Object.keys(applied_filters).length > 0 && { applied_filters },
10037
10064
  people: slimmedResults
10038
10065
  };
10039
10066
  }
@@ -12020,7 +12047,21 @@ var init_validation = __esm({
12020
12047
  company_domain: z2.string().optional(),
12021
12048
  location: z2.string().optional(),
12022
12049
  limit: z2.number().int().min(1).max(1e3).optional(),
12023
- seniority: z2.array(z2.string()).optional(),
12050
+ seniority: z2.array(
12051
+ z2.enum([
12052
+ "owner",
12053
+ "founder",
12054
+ "c_suite",
12055
+ "partner",
12056
+ "vp",
12057
+ "head",
12058
+ "director",
12059
+ "manager",
12060
+ "senior",
12061
+ "entry",
12062
+ "intern"
12063
+ ])
12064
+ ).optional(),
12024
12065
  department: z2.array(z2.string()).optional(),
12025
12066
  has_email: z2.boolean().optional(),
12026
12067
  has_phone: z2.boolean().optional(),
@@ -12037,7 +12078,12 @@ var init_validation = __esm({
12037
12078
  max_employees: z2.number().int().min(1).optional(),
12038
12079
  revenue_range: z2.string().optional(),
12039
12080
  fields: z2.union([z2.literal("all"), z2.array(z2.string())]).optional()
12040
- }),
12081
+ }).refine(
12082
+ (data) => !!(data.job_title || data.company_name || data.company_domain || data.company_domains && data.company_domains.length > 0 || data.seniority && data.seniority.length > 0 || data.filter_industry && data.filter_industry.length > 0 || data.skills && data.skills.length > 0 || data.location),
12083
+ {
12084
+ message: "At least one search filter required (job_title, company_name, company_domain, company_domains, seniority, filter_industry, skills, or location)"
12085
+ }
12086
+ ),
12041
12087
  // StorLeads — DTC/e-commerce company search
12042
12088
  gtm_storeleads: z2.object({
12043
12089
  search: z2.string().optional(),