@liquidcommercedev/rmn-sdk 1.5.0-beta.19 → 1.5.0-beta.20

Sign up to get free protection for your applications and to get access to all the features.
package/dist/index.cjs CHANGED
@@ -6133,6 +6133,7 @@ function getEventTypeFromRawEvent(event) {
6133
6133
  // Configuration object with target field names
6134
6134
  const extractorConfig = {
6135
6135
  ids: [
6136
+ // Ps: The function handles all the variations of keywords that end with "id" or "ids"
6136
6137
  // Universal product identifiers
6137
6138
  'gtin',
6138
6139
  'gtin8',
@@ -6157,7 +6158,6 @@ const extractorConfig = {
6157
6158
  'item_number',
6158
6159
  'article_number',
6159
6160
  'reference',
6160
- 'groupingId',
6161
6161
  ],
6162
6162
  price: [
6163
6163
  'price',
@@ -6243,6 +6243,39 @@ function extractDeepValues(data, target, options = {}) {
6243
6243
  return undefined;
6244
6244
  return onlyFirst ? values[0] : values;
6245
6245
  }
6246
+ /**
6247
+ * Cleans and normalizes an array of product IDs by:
6248
+ * 1. Converting all IDs to strings
6249
+ * 2. Trimming whitespace
6250
+ * 3. Removing leading zeros while preserving single "0"
6251
+ * 4. Filtering out empty/invalid values
6252
+ *
6253
+ * @param productIds - Array of product IDs that can be either strings or numbers
6254
+ * @returns Array of cleaned string IDs
6255
+ *
6256
+ * @example
6257
+ * cleanProductIds(["001", " 123 ", 456, "0"]) // ["1", "123", "456", "0"]
6258
+ */
6259
+ function cleanProductIds(productIds) {
6260
+ if (!Array.isArray(productIds)) {
6261
+ return [];
6262
+ }
6263
+ return productIds
6264
+ .map((id) => {
6265
+ // Guard against null/undefined
6266
+ if (id == null) {
6267
+ return '';
6268
+ }
6269
+ // Convert to string and trim
6270
+ const stringId = String(id).trim();
6271
+ if (!stringId) {
6272
+ return '';
6273
+ }
6274
+ // Remove leading zeros while preserving single "0"
6275
+ return stringId === '0' ? '0' : stringId.replace(/^0+/, '');
6276
+ })
6277
+ .filter((id) => id !== ''); // Remove empty strings
6278
+ }
6246
6279
 
6247
6280
  class SingletonManager {
6248
6281
  /**
@@ -15947,7 +15980,7 @@ class LocalStorageService {
15947
15980
  LocalStorageService.localStorageKeyPrefix = 'lc_rmn';
15948
15981
  LocalStorageService.localStorageKey = '';
15949
15982
  LocalStorageService.spotExpirationTime = 1000 * 60 * 60 * 24 * 7; // 7 days
15950
- LocalStorageService.encryptData = false;
15983
+ LocalStorageService.encryptData = true;
15951
15984
 
15952
15985
  /**
15953
15986
  * PubsubService class
@@ -19256,11 +19289,11 @@ class MonitorService {
19256
19289
  var _a, _b;
19257
19290
  if (!spots)
19258
19291
  return;
19259
- const eventProductIds = new Set(eventData.productIds.map((productId) => String(productId)));
19292
+ const eventProductIds = new Set(cleanProductIds(eventData.productIds));
19260
19293
  for (const spot of Object.values(spots)) {
19261
19294
  if (!spot.productIds.length)
19262
19295
  continue;
19263
- const hasCommonProductIds = spot.productIds.find((productId) => eventProductIds.has(String(productId)));
19296
+ const hasCommonProductIds = cleanProductIds(spot.productIds).find((productId) => eventProductIds.has(productId));
19264
19297
  if (!hasCommonProductIds || !Object.values(exports.RMN_SPOT_EVENT).includes(eventData.event)) {
19265
19298
  continue;
19266
19299
  }
package/dist/index.esm.js CHANGED
@@ -6131,6 +6131,7 @@ function getEventTypeFromRawEvent(event) {
6131
6131
  // Configuration object with target field names
6132
6132
  const extractorConfig = {
6133
6133
  ids: [
6134
+ // Ps: The function handles all the variations of keywords that end with "id" or "ids"
6134
6135
  // Universal product identifiers
6135
6136
  'gtin',
6136
6137
  'gtin8',
@@ -6155,7 +6156,6 @@ const extractorConfig = {
6155
6156
  'item_number',
6156
6157
  'article_number',
6157
6158
  'reference',
6158
- 'groupingId',
6159
6159
  ],
6160
6160
  price: [
6161
6161
  'price',
@@ -6241,6 +6241,39 @@ function extractDeepValues(data, target, options = {}) {
6241
6241
  return undefined;
6242
6242
  return onlyFirst ? values[0] : values;
6243
6243
  }
6244
+ /**
6245
+ * Cleans and normalizes an array of product IDs by:
6246
+ * 1. Converting all IDs to strings
6247
+ * 2. Trimming whitespace
6248
+ * 3. Removing leading zeros while preserving single "0"
6249
+ * 4. Filtering out empty/invalid values
6250
+ *
6251
+ * @param productIds - Array of product IDs that can be either strings or numbers
6252
+ * @returns Array of cleaned string IDs
6253
+ *
6254
+ * @example
6255
+ * cleanProductIds(["001", " 123 ", 456, "0"]) // ["1", "123", "456", "0"]
6256
+ */
6257
+ function cleanProductIds(productIds) {
6258
+ if (!Array.isArray(productIds)) {
6259
+ return [];
6260
+ }
6261
+ return productIds
6262
+ .map((id) => {
6263
+ // Guard against null/undefined
6264
+ if (id == null) {
6265
+ return '';
6266
+ }
6267
+ // Convert to string and trim
6268
+ const stringId = String(id).trim();
6269
+ if (!stringId) {
6270
+ return '';
6271
+ }
6272
+ // Remove leading zeros while preserving single "0"
6273
+ return stringId === '0' ? '0' : stringId.replace(/^0+/, '');
6274
+ })
6275
+ .filter((id) => id !== ''); // Remove empty strings
6276
+ }
6244
6277
 
6245
6278
  class SingletonManager {
6246
6279
  /**
@@ -15945,7 +15978,7 @@ class LocalStorageService {
15945
15978
  LocalStorageService.localStorageKeyPrefix = 'lc_rmn';
15946
15979
  LocalStorageService.localStorageKey = '';
15947
15980
  LocalStorageService.spotExpirationTime = 1000 * 60 * 60 * 24 * 7; // 7 days
15948
- LocalStorageService.encryptData = false;
15981
+ LocalStorageService.encryptData = true;
15949
15982
 
15950
15983
  /**
15951
15984
  * PubsubService class
@@ -19254,11 +19287,11 @@ class MonitorService {
19254
19287
  var _a, _b;
19255
19288
  if (!spots)
19256
19289
  return;
19257
- const eventProductIds = new Set(eventData.productIds.map((productId) => String(productId)));
19290
+ const eventProductIds = new Set(cleanProductIds(eventData.productIds));
19258
19291
  for (const spot of Object.values(spots)) {
19259
19292
  if (!spot.productIds.length)
19260
19293
  continue;
19261
- const hasCommonProductIds = spot.productIds.find((productId) => eventProductIds.has(String(productId)));
19294
+ const hasCommonProductIds = cleanProductIds(spot.productIds).find((productId) => eventProductIds.has(productId));
19262
19295
  if (!hasCommonProductIds || !Object.values(RMN_SPOT_EVENT).includes(eventData.event)) {
19263
19296
  continue;
19264
19297
  }
@@ -11,4 +11,18 @@ export declare function extractDeepValues(data: unknown, target: ExtractorTarget
11
11
  onlyFirst?: boolean;
12
12
  shouldIncludeZero?: boolean;
13
13
  }): ExtractedValue[] | ExtractedValue | undefined;
14
+ /**
15
+ * Cleans and normalizes an array of product IDs by:
16
+ * 1. Converting all IDs to strings
17
+ * 2. Trimming whitespace
18
+ * 3. Removing leading zeros while preserving single "0"
19
+ * 4. Filtering out empty/invalid values
20
+ *
21
+ * @param productIds - Array of product IDs that can be either strings or numbers
22
+ * @returns Array of cleaned string IDs
23
+ *
24
+ * @example
25
+ * cleanProductIds(["001", " 123 ", 456, "0"]) // ["1", "123", "456", "0"]
26
+ */
27
+ export declare function cleanProductIds(productIds: Array<string | number>): string[];
14
28
  export {};
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@liquidcommercedev/rmn-sdk",
3
3
  "description": "LiquidCommerce RMN SDK",
4
4
  "author": "LiquidCommerce Tech",
5
- "version": "1.5.0-beta.19",
5
+ "version": "1.5.0-beta.20",
6
6
  "homepage": "https://docs.liquidcommerce.co/rmn-sdk",
7
7
  "main": "./dist/index.cjs",
8
8
  "module": "./dist/index.esm.js",