@factorypure/client-helpers 1.0.3 → 1.0.5
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 +4 -0
- package/dist/index.js +51 -11
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -37,3 +37,7 @@ export declare const filterScrapeResults: ({ scrapeResults, variant, filters, fi
|
|
|
37
37
|
filters: ScrapeFiltersType;
|
|
38
38
|
filterOptions?: FilterOptionsType;
|
|
39
39
|
}) => z.infer<any>[];
|
|
40
|
+
export declare const calculateIgnoreStatus: (result: ScrapeResultsType, variant: {
|
|
41
|
+
id: number;
|
|
42
|
+
sku?: string;
|
|
43
|
+
}, result_ignore_keys: string[] | null) => boolean;
|
package/dist/index.js
CHANGED
|
@@ -61,7 +61,7 @@ export const filterScrapeResults = ({ scrapeResults, variant, filters, filterOpt
|
|
|
61
61
|
filteredResults = filterFoundProductIdExclusions(filteredResults, filters.found_id_exclusions);
|
|
62
62
|
}
|
|
63
63
|
if (filterOptions.exclude_ignored_keys_enabled) {
|
|
64
|
-
filteredResults = filterIgnoredResults(filteredResults
|
|
64
|
+
filteredResults = filterIgnoredResults(filteredResults);
|
|
65
65
|
}
|
|
66
66
|
if (filterOptions.price_filter_enabled) {
|
|
67
67
|
filteredResults = filterPriceOutliers(filteredResults, variant.price, filters.showHighPriceOutliers, filters.showLowPriceOutliers);
|
|
@@ -183,8 +183,18 @@ const handleIndexSearch = (dataToSearch, filters, variant, filterOptions) => {
|
|
|
183
183
|
};
|
|
184
184
|
const filterLinkedElsewhereResults = (results, variantId) => {
|
|
185
185
|
const filtered = results.filter((result) => {
|
|
186
|
-
const
|
|
187
|
-
|
|
186
|
+
const linkedVariantIds = result.linked_variant_ids || [];
|
|
187
|
+
let parsedLinkedVariantIds = linkedVariantIds;
|
|
188
|
+
if (!Array.isArray(linkedVariantIds)) {
|
|
189
|
+
try {
|
|
190
|
+
parsedLinkedVariantIds = JSON.parse(linkedVariantIds);
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
parsedLinkedVariantIds = [];
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
const productLinkedElsewhere = linkedVariantIds.length > 0 &&
|
|
197
|
+
!linkedVariantIds.includes(variantId);
|
|
188
198
|
if (productLinkedElsewhere) {
|
|
189
199
|
return false;
|
|
190
200
|
}
|
|
@@ -203,15 +213,9 @@ const filterFoundProductIdExclusions = (results, found_id_exclusions) => {
|
|
|
203
213
|
});
|
|
204
214
|
return filtered;
|
|
205
215
|
};
|
|
206
|
-
const filterIgnoredResults = (results
|
|
216
|
+
const filterIgnoredResults = (results) => {
|
|
207
217
|
const filtered = results.filter((item) => {
|
|
208
|
-
|
|
209
|
-
const resultKey = `${variantId}-${item.title}-${item.extracted_price}-${item.source}`;
|
|
210
|
-
if (result_ignore_keys.includes(resultKey)) {
|
|
211
|
-
return false;
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
return true;
|
|
218
|
+
return item.ignore_result ? false : true;
|
|
215
219
|
});
|
|
216
220
|
return filtered;
|
|
217
221
|
};
|
|
@@ -270,3 +274,39 @@ const filterDuplicateResults = (results) => {
|
|
|
270
274
|
const filtered = Object.values(filteredUniqueResultsMap);
|
|
271
275
|
return filtered;
|
|
272
276
|
};
|
|
277
|
+
export const calculateIgnoreStatus = (result, variant, result_ignore_keys) => {
|
|
278
|
+
let ignore = false;
|
|
279
|
+
const resultKey = `${variant.id}-${result.title}-${result.extracted_price}-${result.source}`;
|
|
280
|
+
if (result_ignore_keys && result_ignore_keys.includes(resultKey)) {
|
|
281
|
+
ignore = true;
|
|
282
|
+
}
|
|
283
|
+
if (result.details_and_offers &&
|
|
284
|
+
result.details_and_offers.includes("Out of stock online")) {
|
|
285
|
+
ignore = true;
|
|
286
|
+
}
|
|
287
|
+
const refurbishedKeywords = [
|
|
288
|
+
"refurbished",
|
|
289
|
+
"renewed",
|
|
290
|
+
"reconditioned",
|
|
291
|
+
"refurb",
|
|
292
|
+
"remanufactured",
|
|
293
|
+
"scratch",
|
|
294
|
+
"dent",
|
|
295
|
+
"used",
|
|
296
|
+
`${variant.sku}-R`,
|
|
297
|
+
`${variant.sku}-R`.toLowerCase(),
|
|
298
|
+
`${variant.sku}-R`.toUpperCase(),
|
|
299
|
+
`${variant.sku?.toLowerCase()}-R`,
|
|
300
|
+
`${variant.sku?.toUpperCase()}-R`,
|
|
301
|
+
];
|
|
302
|
+
const normalizedTitle = result.title
|
|
303
|
+
.toLowerCase()
|
|
304
|
+
.replace(/[^a-z0-9-]/g, " ");
|
|
305
|
+
const isRefurbished = refurbishedKeywords.some((keyword) => normalizedTitle.split(/\s+/).includes(keyword)) ||
|
|
306
|
+
(result.details_and_offers &&
|
|
307
|
+
result.details_and_offers.includes("Pre-owned"));
|
|
308
|
+
if (isRefurbished) {
|
|
309
|
+
ignore = true;
|
|
310
|
+
}
|
|
311
|
+
return ignore;
|
|
312
|
+
};
|