@nuskin/ns-product-lib 2.5.0-cx24-2462.1.2 → 2.5.0-cx24-2862.2

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.md CHANGED
@@ -1,28 +1,24 @@
1
- # [2.5.0-cx24-2462.1.2](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/compare/v2.5.0-cx24-2462.1.1...v2.5.0-cx24-2462.1.2) (2022-11-08)
1
+ # [2.5.0-cx24-2862.2](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/compare/v2.5.0-cx24-2862.1...v2.5.0-cx24-2862.2) (2022-11-11)
2
2
 
3
3
 
4
4
  ### Update
5
5
 
6
- * map remaining equinox properties (CX24-2462) ([66e320d](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/commit/66e320dfcf0b9e35f7fb2adeb1cdfe5308f51850))
6
+ * set ADR pricing from equinox (CX24-2862) ([b64dcea](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/commit/b64dcea4dd3374be992c667db5c0b2604aacc029))
7
7
 
8
- # [2.5.0-cx24-2462.1.1](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/compare/v2.4.2-CX24.2.1...v2.5.0-cx24-2462.1.1) (2022-11-07)
8
+ # [2.5.0-cx24-2862.1](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/compare/v2.4.2-cx24-2612.1.1...v2.5.0-cx24-2862.1) (2022-11-10)
9
9
 
10
10
 
11
- ### Release
12
-
13
- * Automated changes by GitLab pipeline [skip ci] ([62c7b7d](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/commit/62c7b7d38d24f3f267c859ae7f16af55f8d950f1))
14
-
15
11
  ### Update
16
12
 
17
- * map product images to carousel images (CX24-2462) ([1e17c6e](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/commit/1e17c6ec39e54b4bdb2bb804c997eb14c9e501d5))
18
- * map remaining equinox properties (CX24-2462) ([dafe0c0](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/commit/dafe0c0349207439d05ba0e45a71c8868a1d65bc))
13
+ * set ADR pricing from equinox (CX24-2862) ([9f6dfb7](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/commit/9f6dfb726f40b1335411318629a2ebdf1b4dac96))
14
+ * set ADR pricing from equinox (CX24-2862) ([61f550a](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/commit/61f550a21c5cc9d062549ec2aaf2758aebccf2be))
19
15
 
20
- ## [2.4.2-CX24.2.1](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/compare/v2.4.1...v2.4.2-CX24.2.1) (2022-11-07)
16
+ ## [2.4.2-cx24-2612.1.1](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/compare/v2.4.1...v2.4.2-cx24-2612.1.1) (2022-11-07)
21
17
 
22
18
 
23
19
  ### Fix
24
20
 
25
- * [Equinox market] Admin > Move up/down/top/bottom of featured products and edit bundle is not working ([82611ca](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/commit/82611cab93c990ed1ce05690feb9d00967090dea))
21
+ * [Equinox market] Admin > Move up/down/top/bottom of featured products and edit bundle is not working ([9d9d106](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/commit/9d9d10667477b4c7ef7bf8ec013aab322d3cdbcc))
26
22
 
27
23
  ## [2.4.1](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/compare/v2.4.0...v2.4.1) (2022-11-06)
28
24
 
@@ -62,13 +58,10 @@
62
58
 
63
59
  * To make multiple products work (#CX24-2444) ([ce4c483](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/commit/ce4c483b7fbb0527e60045d8174fd503a67e63fa)), closes [#CX24-2444](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/issues/CX24-2444)
64
60
 
65
- <<<<<<< HEAD
66
- =======
67
61
  ### New
68
62
 
69
63
  * added support for inventory label (#CX24-2186) ([3e27481](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/commit/3e2748106cd6098086dbd6b738964deabacc875d)), closes [#CX24-2186](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/issues/CX24-2186)
70
64
 
71
- >>>>>>> CX24.2
72
65
  ### Release
73
66
 
74
67
  * Automated changes by GitLab pipeline [skip ci] ([8f75316](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/commit/8f75316b692ddccda5b7bea830ee6dc625b942c7))
@@ -76,9 +69,6 @@
76
69
 
77
70
  ### Update
78
71
 
79
- <<<<<<< HEAD
80
- * map product images to carousel images (CX24-2462) ([1e17c6e](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/commit/1e17c6ec39e54b4bdb2bb804c997eb14c9e501d5))
81
- =======
82
72
  * added support for variant and price (#CX24-2186) ([e0bf8f2](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/commit/e0bf8f280a838dfa4cc613e5bc34d254dbdc8e1a)), closes [#CX24-2186](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/issues/CX24-2186)
83
73
  * added variant label (#CX24-2186) ([4c223b3](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/commit/4c223b34438ed73cb824716cacb93482486f8195)), closes [#CX24-2186](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/issues/CX24-2186)
84
74
  * use platform-specific values when initialized ([18de006](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/commit/18de006211ab396f4d7fa40d0089c8e185d9cee9))
@@ -97,7 +87,6 @@
97
87
 
98
88
  * added support for variant and price (#CX24-2186) ([e0bf8f2](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/commit/e0bf8f280a838dfa4cc613e5bc34d254dbdc8e1a)), closes [#CX24-2186](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/issues/CX24-2186)
99
89
  * added variant label (#CX24-2186) ([4c223b3](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/commit/4c223b34438ed73cb824716cacb93482486f8195)), closes [#CX24-2186](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/issues/CX24-2186)
100
- >>>>>>> CX24.2
101
90
 
102
91
  # [2.3.0](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/compare/v2.2.0...v2.3.0) (2022-10-14)
103
92
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nuskin/ns-product-lib",
3
- "version": "2.5.0-cx24-2462.1.2",
3
+ "version": "2.5.0-cx24-2862.2",
4
4
  "description": "This project contains shared Product models and code between the backend and frontend.",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -81,7 +81,7 @@ const ProductData = {
81
81
  /**
82
82
  * @param {contentstack.MarketConfig} marketConfig
83
83
  */
84
- getLegacyRequestHeaders: function (marketConfig) {
84
+ getLegacyRequestHeaders: function(marketConfig) {
85
85
  return {
86
86
  'Content-Type': 'application/json',
87
87
  client_id: marketConfig.checkout_client_id,
@@ -95,7 +95,7 @@ const ProductData = {
95
95
  * @param {*} eqVariant
96
96
  * @returns Array<Product>
97
97
  */
98
- eqProductVariantMapper: function (eqVariant) {
98
+ eqProductVariantMapper : function (eqVariant) {
99
99
 
100
100
  let imageURL = eqVariant.properties.imageURL;
101
101
  const regex = /\d+.\d+/
@@ -104,7 +104,7 @@ const ProductData = {
104
104
  if (imageURL.includes('contentstack')) {
105
105
  thumbnailImage = imageURL + '?width=40'
106
106
  } else {
107
- thumbnailImage = imageURL.replace(regex, '40.40')
107
+ thumbnailImage = imageURL.replace(regex,'40.40')
108
108
  }
109
109
 
110
110
  return {
@@ -125,7 +125,7 @@ const ProductData = {
125
125
  }
126
126
  ],
127
127
  "thumbnail": thumbnailImage,
128
- ingredients: mapIngredients(eqVariant.properties.ingredients),
128
+ "ingredients": eqVariant.properties.ingredients,
129
129
  "benefits": eqVariant.properties.benefits,
130
130
  "usage": eqVariant.properties.usage,
131
131
  "resources": eqVariant.properties.resources,
@@ -142,17 +142,17 @@ const ProductData = {
142
142
  "availableQuantity": eqVariant.inventoryProperties.atpQty,
143
143
  "maxQuantity": 999,
144
144
  "points": "",
145
- "cv": (eqVariant.priceFacets.CV) ? eqVariant.priceFacets.CV : '',
146
- "pv": eqVariant.priceFacets.PV,
145
+ "cv": (eqVariant.priceFacets.CV) ? eqVariant.priceFacets.CV : '',
146
+ "pv":eqVariant.priceFacets.PV,
147
147
  "priceType": "WRTL",
148
148
  "price": eqVariant.priceFacets["Regular Price"],
149
149
  "priceMap": {
150
150
  "WRTL": eqVariant.priceFacets["Regular Price"],
151
151
  "WADW-WRTL": eqVariant.priceFacets["Regular Price"],
152
- "WADR": 9999.01,
152
+ "WADR": eqVariant.priceFacets["Regular Price"],
153
153
  "RTL": eqVariant.priceFacets["Regular Price"],
154
154
  "WWHL": eqVariant.priceFacets["Wholesale Price"],
155
- "WADW": 9998.01,
155
+ "WADW": eqVariant.priceFacets["Wholesale Price"],
156
156
  "WHL": eqVariant.priceFacets["Wholesale Price"]
157
157
  },
158
158
  "cvMap": {
@@ -165,19 +165,7 @@ const ProductData = {
165
165
  "WADW": eqVariant.priceFacets.PV,
166
166
  "WHL": eqVariant.priceFacets.PV
167
167
  },
168
- "orderTypes": {
169
- "adr": true,
170
- "order": true,
171
- "zpfc": false,
172
- "zadp": true,
173
- "ars": true,
174
- "kiosk": true,
175
- "mobile": true,
176
- "preferred customer": true,
177
- "retail": true,
178
- "web": true,
179
- "web display": true
180
- },
168
+ "orderTypes": this._setOrderType(eqVariant.properties),
181
169
  "division": eqVariant.properties.division,
182
170
  "backOrderDate": null,
183
171
  "locallyProduced": false,
@@ -188,9 +176,9 @@ const ProductData = {
188
176
  "shade": "",
189
177
  "status": this.switchStatusFromEquinox(eqVariant.properties.status),
190
178
  "variantType": "Other",
191
- "variantDropdownLabel": eqVariant.properties.variantLabel || "",
179
+ "variantDropdownLabel": eqVariant.properties.variantLabel || "",
192
180
  "variantDropdownPlaceholder": "Select Type",
193
- "variantsLabel": eqVariant.properties.variantLabel || "",
181
+ "variantsLabel": eqVariant.properties.variantLabel || "",
194
182
  "groupOffer": false,
195
183
  "personalOffer": false,
196
184
  "savedEventName": null,
@@ -223,7 +211,7 @@ const ProductData = {
223
211
  if (imageURL.includes('contentstack')) {
224
212
  thumbnailImage = imageURL + '?width=40'
225
213
  } else {
226
- thumbnailImage = imageURL.replace(regex, '40.40')
214
+ thumbnailImage = imageURL.replace(regex,'40.40')
227
215
  }
228
216
 
229
217
  if (data.sku && data.sku.length > 1) {
@@ -243,19 +231,18 @@ const ProductData = {
243
231
  "longDescr": data.properties.productDetailsDescription,
244
232
  "fullImage": imageURL,
245
233
  "imageAltText": data.properties.name,
246
- productCarouselImages: data.sku[count].properties.productImages
247
- ? JSON.parse(data.sku[count].properties.productImages).map(img => (
248
- {
249
- contentType: /\.jpg/i.test(img.url) ? 'img' : 'video',
250
- src: img.url,
251
- alt: img.alt
252
- }
253
- )) : [],
234
+ "productCarouselImages": [
235
+ {
236
+ "contentType": "img",
237
+ "src": "/content/products/24/00/35/24003529/jcr:content/fullImage.imgw.1280.1280.png",
238
+ "alt": ""
239
+ }
240
+ ],
254
241
  "thumbnail": thumbnailImage,
255
- ingredients: mapIngredients(data.properties.ingredients),
256
- benefits: mapBenefits(data.properties.benefits),
257
- usage: mapUsage(data.properties.usage),
258
- resources: mapResources(data.properties.resources),
242
+ "ingredients": data.properties.ingredients,
243
+ "benefits": data.properties.benefits,
244
+ "usage": data.properties.usage,
245
+ "resources": data.sku[count].properties.resources,
259
246
  "videos": "",
260
247
  "movie": "",
261
248
  "youtube": "",
@@ -269,16 +256,16 @@ const ProductData = {
269
256
  "availableQuantity": data.sku[count].inventoryProperties.atpQty,
270
257
  "maxQuantity": 999,
271
258
  "points": "",
272
- "cv": (data.sku[count].priceFacets.CV) ? data.sku[count].priceFacets.CV : '',
259
+ "cv": (data.sku[count].priceFacets.CV) ? data.sku[count].priceFacets.CV : '',
273
260
  "pv": data.sku[count].priceFacets.PV,
274
261
  "priceType": "WRTL",
275
262
  "price": data.sku[count].priceFacets["Regular Price"],
276
263
  "priceMap": {
277
264
  "WRTL": data.sku[count].priceFacets["Regular Price"],
278
265
  "WADW-WRTL": data.sku[count].priceFacets["Regular Price"],
279
- "WADR": 9999.01,
266
+ "WADR": data.sku[count].priceFacets["Regular Price"],
280
267
  "RTL": data.sku[count].priceFacets["Regular Price"],
281
- "WADW": 9998.01,
268
+ "WADW": data.sku[count].priceFacets["Wholesale Price"],
282
269
  "WHL": data.sku[count].priceFacets["Wholesale Price"],
283
270
  "WWHL": data.sku[count].priceFacets["Wholesale Price"]
284
271
  },
@@ -292,19 +279,7 @@ const ProductData = {
292
279
  "WADW": data.sku[count].priceFacets.PV,
293
280
  "WHL": data.sku[count].priceFacets.PV
294
281
  },
295
- "orderTypes": {
296
- "adr": true,
297
- "order": true,
298
- "zpfc": false,
299
- "zadp": true,
300
- "ars": true,
301
- "kiosk": true,
302
- "mobile": true,
303
- "preferred customer": true,
304
- "retail": true,
305
- "web": true,
306
- "web display": true
307
- },
282
+ "orderTypes": this._setOrderType(data.sku[count].properties),
308
283
  "childSkus": [],
309
284
  "custTypes": this.switchCustType(data.properties.customerTypes),
310
285
  "division": data.properties.division,
@@ -317,9 +292,9 @@ const ProductData = {
317
292
  "shade": "",
318
293
  "status": this.switchStatusFromEquinox(data.sku[count].properties.productStatus),
319
294
  "variantType": "Other",
320
- "variantDropdownLabel": data.sku[count].properties.variantLabel || "",
295
+ "variantDropdownLabel": data.sku[count].properties.variantLabel || "",
321
296
  "variantDropdownPlaceholder": "Select Type",
322
- "variantsLabel": data.sku[count].properties.variantLabel || "",
297
+ "variantsLabel": data.sku[count].properties.variantLabel || "",
323
298
  "groupOffer": false,
324
299
  "personalOffer": false,
325
300
  "savedEventName": null,
@@ -406,82 +381,73 @@ const ProductData = {
406
381
 
407
382
  _sortProductsBySku: function (skus, products) {
408
383
 
409
- if (!skus || !products || products.length === 1) {
384
+ if(!skus || !products || products.length === 1) {
410
385
  return products
411
386
  }
412
387
 
413
- return products.sort(function (a, b) {
388
+ const sortedProducts = products.sort(function (a, b) {
414
389
  return skus.indexOf(a.sku) - skus.indexOf(b.sku);
415
390
  });
416
391
 
417
- }
418
- }
419
-
420
- function mapBenefits(benefits) {
421
- if (!benefits) {
422
- return {};
423
- }
424
-
425
- const list = JSON.parse(benefits)
426
- .map(item => item.benefits.map(benefit => benefit).join(''))
427
- .join('');
428
-
429
- return {
430
- benefitsHTML: list,
431
- benefitsText: 'Benefits',
432
- benefitItems: []
433
- };
434
- }
435
-
436
- function mapIngredients(ingredients) {
437
- if (!mapIngredients) {
438
- return {};
439
- }
440
-
441
- // concatenating the name, description, keyIngredients, and otherIngredients
442
- const list = JSON.parse(ingredients)
443
- .map(i => [
444
- i.keyIngredients
445
- .map(k => `<img src="${k.image.url}" alt="${k.image.alt}" /> ${k.name} ${k.description}`)
446
- .join(' '),
447
- i.otherIngredients
448
- ].join(' '))
449
- .join(' ');
450
-
451
- return {
452
- ingredientsHTML: list,
453
- ingredientsText: 'Ingredients',
454
- ingredients: []
455
- }
456
- }
457
-
458
- function mapResources(resources) {
459
- if (!resources) {
460
- return {};
461
- }
462
-
463
- const text = JSON.parse(resources)
464
- .map(res => `<p><a href="${res.url}" target="_blank">${res.title}</a></p>`)
465
- .join('');
466
-
467
- return {
468
- resourcesHTML: text,
469
- resourcesText: 'Resources',
470
- resourceLinks: []
471
- }
472
- }
392
+ return sortedProducts
473
393
 
474
- function mapUsage(usage) {
475
- if (!usage) {
476
- return {};
477
- }
394
+ },
478
395
 
479
- const text = JSON.parse(usage).additionalText
480
- .map(t => t).join('');
396
+ /**
397
+ *
398
+ * @param {*} availableChannels
399
+ *
400
+ * This function is use to convert arsPhone,web,kiosk,mobile,subscription
401
+ * to orderType object
402
+ * "adr”
403
+ "order"
404
+ "zpfc"
405
+ "zadp"
406
+ "ars"
407
+ "kiosk"
408
+ "mobile"
409
+ "preferred customer"
410
+ "retail"
411
+ "web"
412
+ "web display"
413
+ */
414
+ _setOrderType: function (properties) {
415
+ let orderTypeArr = {
416
+ "adr": false,
417
+ "order": false,
418
+ "zpfc": false,
419
+ "zadp": false,
420
+ "ars": false,
421
+ "kiosk": false,
422
+ "mobile": false,
423
+ "preferred customer": false,
424
+ "retail": false,
425
+ "web": false,
426
+ "web display": false
427
+ };
428
+ let availableChannelsArr = properties.availableChannels.split(',')
429
+
430
+ availableChannelsArr.forEach(channel => {
431
+ if (channel == 'arsPhone')
432
+ orderTypeArr.ars = true
433
+ if (channel == 'web') {
434
+ orderTypeArr.order = true
435
+ orderTypeArr.web = true
436
+ }
437
+ if (channel == 'kiosk')
438
+ orderTypeArr.kiosk = true
439
+ if (channel == 'mobile')
440
+ orderTypeArr.mobile = true
441
+ if (channel == 'subscription')
442
+ orderTypeArr.adr = true
481
443
 
482
- return {
483
- usageHTML: text,
484
- usageText: 'Usage'
444
+ });
445
+ if (properties.retail)
446
+ orderTypeArr.retail = true
447
+ if (properties.prefferredCustomer)
448
+ orderTypeArr['preferred customer'] = true
449
+
450
+ return orderTypeArr;
485
451
  }
486
452
  }
487
453