@factorypure/client-helpers 1.0.28 → 1.1.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/index.d.ts CHANGED
@@ -80,7 +80,7 @@ export declare const scrapeResultsSchema: z.ZodObject<{
80
80
  title: z.ZodString;
81
81
  found_product_id: z.ZodString;
82
82
  product_link: z.ZodString;
83
- inline_link: z.ZodNullable<z.ZodAny>;
83
+ inline_link: z.ZodNullable<z.ZodString>;
84
84
  immersive_product_page_token: z.ZodString;
85
85
  serpapi_immersive_product_api: z.ZodString;
86
86
  source: z.ZodString;
@@ -88,11 +88,11 @@ export declare const scrapeResultsSchema: z.ZodObject<{
88
88
  multiple_sources: z.ZodNumber;
89
89
  price: z.ZodString;
90
90
  extracted_price: z.ZodNumber;
91
- old_price: z.ZodNullable<z.ZodAny>;
92
- extracted_old_price: z.ZodNullable<z.ZodAny>;
93
- rating: z.ZodNullable<z.ZodAny>;
94
- reviews: z.ZodNullable<z.ZodAny>;
95
- snippet: z.ZodNullable<z.ZodAny>;
91
+ old_price: z.ZodNullable<z.ZodString>;
92
+ extracted_old_price: z.ZodNullable<z.ZodNumber>;
93
+ rating: z.ZodNullable<z.ZodNumber>;
94
+ reviews: z.ZodNullable<z.ZodNumber>;
95
+ snippet: z.ZodNullable<z.ZodString>;
96
96
  thumbnail: z.ZodString;
97
97
  serpapi_thumbnail: z.ZodString;
98
98
  tag: z.ZodNullable<z.ZodAny>;
@@ -293,6 +293,8 @@ export declare const immersiveScrapeResultsSchema: z.ZodObject<{
293
293
  normalized: z.ZodString;
294
294
  }, z.core.$strip>>;
295
295
  }, z.core.$strip>>;
296
+ inline_link: z.ZodOptional<z.ZodNull>;
297
+ delivery: z.ZodOptional<z.ZodNull>;
296
298
  }, z.core.$strip>;
297
299
  export type ScrapeResultsType = z.infer<typeof scrapeResultsSchema>;
298
300
  export type ImmersiveScrapeResultsType = z.infer<typeof immersiveScrapeResultsSchema>;
@@ -319,19 +321,14 @@ export type ScrapeFiltersType = {
319
321
  result_ignore_keys: ResultIgnoreType[] | null;
320
322
  brand_name_alternates: string[];
321
323
  dayWindow: number | null;
324
+ custom_search_value: string;
325
+ sku_regex: string | null;
322
326
  };
323
327
  export declare const variantScrapeOptionsSchema: z.ZodObject<{
324
328
  search_exclusions: z.ZodArray<z.ZodString>;
325
- vendor_search_exclusions: z.ZodArray<z.ZodString>;
326
329
  custom_search_value: z.ZodString;
327
330
  match_values: z.ZodArray<z.ZodString>;
328
- skip_skus: z.ZodArray<z.ZodString>;
329
331
  competitor_exclusions: z.ZodArray<z.ZodString>;
330
- disable_vendor_skip_skus: z.ZodBoolean;
331
- disable_wattage_filter: z.ZodBoolean;
332
- found_product_ids: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
333
- immersive_product_page_token: z.ZodNullable<z.ZodString>;
334
- found_id_exclusions: z.ZodNullable<z.ZodArray<z.ZodNumber>>;
335
332
  result_ignore_keys: z.ZodNullable<z.ZodArray<z.ZodObject<{
336
333
  id: z.ZodNumber;
337
334
  variant_id: z.ZodNumber;
@@ -343,9 +340,25 @@ export declare const variantScrapeOptionsSchema: z.ZodObject<{
343
340
  created_by: z.ZodNumber;
344
341
  key_parts: z.ZodString;
345
342
  }, z.core.$strip>>>;
346
- brand_name_alternates: z.ZodNullable<z.ZodArray<z.ZodString>>;
343
+ day_window: z.ZodNullable<z.ZodString>;
347
344
  }, z.core.$strip>;
348
345
  export type VariantScrapeOptionsType = z.infer<typeof variantScrapeOptionsSchema>;
346
+ export declare const vendorScrapeOptionsSchema: z.ZodObject<{
347
+ vendor_search_exclusions: z.ZodArray<z.ZodString>;
348
+ skip_skus: z.ZodArray<z.ZodString>;
349
+ sku_regex: z.ZodNullable<z.ZodString>;
350
+ brand_name_alternates: z.ZodArray<z.ZodString>;
351
+ }, z.core.$strip>;
352
+ export type VendorScrapeOptionsType = z.infer<typeof vendorScrapeOptionsSchema>;
353
+ export declare const globalScrapeOptionsSchema: z.ZodObject<{
354
+ undercut_threshold_ranges: z.ZodArray<z.ZodObject<{
355
+ min: z.ZodNumber;
356
+ max: z.ZodNumber;
357
+ threshold: z.ZodNumber;
358
+ }, z.core.$strip>>;
359
+ scam_sources: z.ZodArray<z.ZodString>;
360
+ }, z.core.$strip>;
361
+ export type GlobalScrapeOptionsType = z.infer<typeof globalScrapeOptionsSchema>;
349
362
  export declare const HIDE_REASONS: {
350
363
  IGNORED: string;
351
364
  HIGH_PRICE_OUTLIER: string;
@@ -394,7 +407,7 @@ export declare const calculateHideReasons: (result: ScrapeResultsType | Immersiv
394
407
  price: number;
395
408
  vendor: string;
396
409
  regexUnitResults?: RegexUnitResultsType;
397
- }, variantScrapeOptions: VariantScrapeOptionsType) => string[];
410
+ }, variantScrapeOptions: VariantScrapeOptionsType, vendorScrapeOptions: VendorScrapeOptionsType) => string[];
398
411
  export declare const calculateHideOverrideReasons: (result: ScrapeResultsType | ImmersiveScrapeResultsType, variant: {
399
412
  id: number;
400
413
  title: string;
package/dist/index.js CHANGED
@@ -32,7 +32,7 @@ export const scrapeResultsSchema = z.object({
32
32
  title: z.string(),
33
33
  found_product_id: z.string(),
34
34
  product_link: z.string(),
35
- inline_link: z.nullable(z.any()),
35
+ inline_link: z.string().nullable(),
36
36
  immersive_product_page_token: z.string(),
37
37
  serpapi_immersive_product_api: z.string(),
38
38
  source: z.string(),
@@ -40,11 +40,11 @@ export const scrapeResultsSchema = z.object({
40
40
  multiple_sources: z.number(),
41
41
  price: z.string(),
42
42
  extracted_price: z.number(),
43
- old_price: z.nullable(z.any()),
44
- extracted_old_price: z.nullable(z.any()),
45
- rating: z.nullable(z.any()),
46
- reviews: z.nullable(z.any()),
47
- snippet: z.nullable(z.any()),
43
+ old_price: z.string().nullable(),
44
+ extracted_old_price: z.number().nullable(),
45
+ rating: z.number().nullable(),
46
+ reviews: z.number().nullable(),
47
+ snippet: z.string().nullable(),
48
48
  thumbnail: z.string(),
49
49
  serpapi_thumbnail: z.string(),
50
50
  tag: z.nullable(z.any()),
@@ -124,6 +124,8 @@ export const immersiveScrapeResultsSchema = z.object({
124
124
  brand: z.string().nullable(),
125
125
  company_id: z.number().nullable(),
126
126
  regexUnitResults: z.nullable(regexUnitResultsSchema),
127
+ inline_link: z.null().optional(),
128
+ delivery: z.null().optional(),
127
129
  });
128
130
  export const ResultIgnoreSchema = z.object({
129
131
  id: z.number(),
@@ -138,18 +140,25 @@ export const ResultIgnoreSchema = z.object({
138
140
  });
139
141
  export const variantScrapeOptionsSchema = z.object({
140
142
  search_exclusions: z.array(z.string()),
141
- vendor_search_exclusions: z.array(z.string()),
142
143
  custom_search_value: z.string(),
143
144
  match_values: z.array(z.string()),
144
- skip_skus: z.array(z.string()),
145
145
  competitor_exclusions: z.array(z.string()),
146
- disable_vendor_skip_skus: z.boolean(),
147
- disable_wattage_filter: z.boolean(),
148
- found_product_ids: z.array(z.number()).nullable(),
149
- immersive_product_page_token: z.string().nullable(),
150
- found_id_exclusions: z.array(z.number()).nullable(),
151
146
  result_ignore_keys: z.array(ResultIgnoreSchema).nullable(),
152
- brand_name_alternates: z.array(z.string()).nullable(),
147
+ day_window: z.string().nullable(),
148
+ });
149
+ export const vendorScrapeOptionsSchema = z.object({
150
+ vendor_search_exclusions: z.array(z.string()),
151
+ skip_skus: z.array(z.string()),
152
+ sku_regex: z.string().nullable(),
153
+ brand_name_alternates: z.array(z.string()),
154
+ });
155
+ export const globalScrapeOptionsSchema = z.object({
156
+ undercut_threshold_ranges: z.array(z.object({
157
+ min: z.number(),
158
+ max: z.number(),
159
+ threshold: z.number(),
160
+ })),
161
+ scam_sources: z.array(z.string()),
153
162
  });
154
163
  export const HIDE_REASONS = {
155
164
  IGNORED: 'Ignored',
@@ -474,7 +483,7 @@ function getUndercutThreshold(price, undercutThresholdRanges) {
474
483
  const range = undercutThresholdRanges.find((r) => price >= r.min && price <= r.max);
475
484
  return range ? range.threshold : 0.75; // fallback default
476
485
  }
477
- export const calculateHideReasons = (result, variant, variantScrapeOptions) => {
486
+ export const calculateHideReasons = (result, variant, variantScrapeOptions, vendorScrapeOptions) => {
478
487
  const hide_reasons = [];
479
488
  if (variantScrapeOptions.result_ignore_keys && variantScrapeOptions.result_ignore_keys.length > 0) {
480
489
  variantScrapeOptions.result_ignore_keys.forEach((key) => {
@@ -498,7 +507,7 @@ export const calculateHideReasons = (result, variant, variantScrapeOptions) => {
498
507
  }
499
508
  if (result.brand) {
500
509
  const vendor = variant.vendor ? variant.vendor.toLowerCase() : null;
501
- const brandNameAlternates = variantScrapeOptions.brand_name_alternates;
510
+ const brandNameAlternates = vendorScrapeOptions.brand_name_alternates;
502
511
  const targetBrands = [vendor, ...(brandNameAlternates || [])].filter((b) => b).map((b) => b?.toLowerCase());
503
512
  const calcBrandMatched = result.brand && result.brand !== '' ? targetBrands.includes(result.brand.toLowerCase()) : null;
504
513
  if (calcBrandMatched === false) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@factorypure/client-helpers",
3
- "version": "1.0.28",
3
+ "version": "1.1.1",
4
4
  "description": "",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",