@nuskin/cs-product-lib 1.1.2 → 1.1.3-brw-3319.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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/csProduct.js +68 -22
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nuskin/cs-product-lib",
3
- "version": "1.1.2",
3
+ "version": "1.1.3-brw-3319.1",
4
4
  "description": "Library for pulling and parsing product content (and applying business logic) retrieved from Contentstack",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
package/src/csProduct.js CHANGED
@@ -83,6 +83,21 @@ const csProduct = (props) => {
83
83
  return props
84
84
  }
85
85
 
86
+ const badLocaleMap = (locale) => {
87
+ if (typeof locale !== 'string') {
88
+ return locale
89
+ }
90
+ // Change known changed locales to their new locale
91
+ switch (locale.toLowerCase()) {
92
+ case 'id-in' :
93
+ return 'ID-id'
94
+ case 'hu-hu':
95
+ return 'HU-hu'
96
+ default:
97
+ return locale
98
+ }
99
+ }
100
+
86
101
  const removeInvalidVariants = async (products = [], locale, translations) => {
87
102
  const validSkus = []
88
103
  for (const product of products) {
@@ -405,6 +420,7 @@ const csProduct = (props) => {
405
420
  * @returns
406
421
  */
407
422
  const getBundles = async (ids, locale) => {
423
+ locale = badLocaleMap(locale)
408
424
  if (!Array.isArray(ids)) {
409
425
  ids = [ids]
410
426
  }
@@ -417,17 +433,19 @@ const csProduct = (props) => {
417
433
  {"sku_kit":{"$in_query":{"uid":{"$in": ${idString}}}}}
418
434
  ]}`
419
435
  const products = await queryProducts(query, locale)
420
- if (products.length > 0) {
436
+ if (Array.isArray(products) && products.length > 0) {
421
437
  const translations = await getTranslations(locale)
422
438
  await formatKit(products, locale, translations)
423
439
  await removeInvalidVariants(products, locale, translations)
424
440
  return formatProductWithSchema(products)
425
- } else {
426
- return []
427
441
  }
442
+ const errorResponse = products.response || {}
443
+ const responseData = errorResponse.data || {}
444
+ return [{error: {message: products.message, name: products.name, status: errorResponse.status, errors: [`${responseData.error_code}: ${responseData.error_message}`]}}]
428
445
  }
429
446
 
430
447
  const getProductsBySku = async (skus, locale) => {
448
+ locale = badLocaleMap(locale)
431
449
  if (!Array.isArray(skus)) {
432
450
  skus = [skus]
433
451
  }
@@ -436,17 +454,23 @@ const csProduct = (props) => {
436
454
  )}}}}}`
437
455
 
438
456
  let products = await queryProducts(query, locale)
439
- const translations = await getTranslations(locale)
440
- await formatKit(products, locale, translations)
441
- await removeInvalidVariants(products, locale, translations)
442
- for (const product of products) {
443
- product.skus = skus
444
- product.locale = locale
457
+ if (Array.isArray(products)) {
458
+ const translations = await getTranslations(locale)
459
+ await formatKit(products, locale, translations)
460
+ await removeInvalidVariants(products, locale, translations)
461
+ for (const product of products) {
462
+ product.skus = skus
463
+ product.locale = locale
464
+ }
465
+ return formatProductWithSchema(products)
445
466
  }
446
- return formatProductWithSchema(products)
467
+ const errorResponse = products.response || {}
468
+ const responseData = errorResponse.data || {}
469
+ return [{error: {message: products.message, name: products.name, status: errorResponse.status, errors: [`${responseData.error_code}: ${responseData.error_message}`]}}]
447
470
  }
448
471
 
449
472
  const getProductsByGlobalId = async (ids, locale) => {
473
+ locale = badLocaleMap(locale)
450
474
  if (!Array.isArray(ids)) {
451
475
  ids = [ids]
452
476
  }
@@ -455,13 +479,19 @@ const csProduct = (props) => {
455
479
  )}}}}}`
456
480
 
457
481
  let products = await queryProducts(query, locale)
458
- const translations = await getTranslations(locale)
459
- await formatKit(products, locale, translations)
460
- await removeInvalidVariants(products, locale, translations)
461
- return formatProductWithSchema(products)
482
+ if (Array.isArray(products)) {
483
+ const translations = await getTranslations(locale)
484
+ await formatKit(products, locale, translations)
485
+ await removeInvalidVariants(products, locale, translations)
486
+ return formatProductWithSchema(products)
487
+ }
488
+ const errorResponse = products.response || {}
489
+ const responseData = errorResponse.data || {}
490
+ return [{error: {message: products.message, name: products.name, status: errorResponse.status, errors: [`${responseData.error_code}: ${responseData.error_message}`]}}]
462
491
  }
463
492
 
464
493
  const getProductsBySlug = async (slugs, locale) => {
494
+ locale = badLocaleMap(locale)
465
495
  if (!Array.isArray(slugs)) {
466
496
  slugs = [slugs]
467
497
  }
@@ -470,25 +500,37 @@ const csProduct = (props) => {
470
500
  )}}}`
471
501
 
472
502
  const products = await queryProducts(query, locale)
473
- const translations = await getTranslations(locale)
474
- await formatKit(products, locale, translations)
475
- await removeInvalidVariants(products, locale, translations)
476
- return formatProductWithSchema(products)
503
+ if (Array.isArray(products)) {
504
+ const translations = await getTranslations(locale)
505
+ await formatKit(products, locale, translations)
506
+ await removeInvalidVariants(products, locale, translations)
507
+ return formatProductWithSchema(products)
508
+ }
509
+ const errorResponse = products.response || {}
510
+ const responseData = errorResponse.data || {}
511
+ return [{error: {message: products.message, name: products.name, status: errorResponse.status, errors: [`${responseData.error_code}: ${responseData.error_message}`]}}]
477
512
  }
478
513
 
479
514
  const getProductsByUID = async (ids, locale) => {
515
+ locale = badLocaleMap(locale)
480
516
  if (!Array.isArray(ids)) {
481
517
  ids = [ids]
482
518
  }
483
519
  const query = `{"uid": {"$in": ${helpers?.arrayString(ids)}}}`
484
520
  let products = await queryProducts(query, locale)
485
- const translations = await getTranslations(locale)
486
- await formatKit(products, locale, translations)
487
- await removeInvalidVariants(products, locale, translations)
488
- return formatProductWithSchema(products)
521
+ if (Array.isArray(products)) {
522
+ const translations = await getTranslations(locale)
523
+ await formatKit(products, locale, translations)
524
+ await removeInvalidVariants(products, locale, translations)
525
+ return formatProductWithSchema(products)
526
+ }
527
+ const errorResponse = products.response || {}
528
+ const responseData = errorResponse.data || {}
529
+ return [{error: {message: products.message, name: products.name, status: errorResponse.status, errors: [`${responseData.error_code}: ${responseData.error_message}`]}}]
489
530
  }
490
531
 
491
532
  const getTranslations = async (locale) => {
533
+ locale = badLocaleMap(locale)
492
534
  const translations = await getEntriesByQuery({
493
535
  contentType: 'strings_product_detail_page',
494
536
  locale,
@@ -499,6 +541,7 @@ const csProduct = (props) => {
499
541
  }
500
542
 
501
543
  const getProductTranslations = async (locale) => {
544
+ locale = badLocaleMap(locale)
502
545
  const translations = await getTranslations(locale)
503
546
  const formattedTranslations = translations.map((translate) =>
504
547
  formatTranslations(translate)
@@ -510,6 +553,7 @@ const csProduct = (props) => {
510
553
  contentType,
511
554
  includes = []
512
555
  ) => {
556
+ locale = badLocaleMap(locale)
513
557
  const translations = await getEntriesByQuery({
514
558
  contentType,
515
559
  locale,
@@ -520,6 +564,7 @@ const csProduct = (props) => {
520
564
  }
521
565
 
522
566
  const getCategoryPageTranslations = async (locale) => {
567
+ locale = badLocaleMap(locale)
523
568
  const translations = await getTranslationsForCategoryPage(
524
569
  locale,
525
570
  'strings_category_page',
@@ -532,6 +577,7 @@ const csProduct = (props) => {
532
577
  }
533
578
 
534
579
  const publishedProducts = async ({ locale, skip = 0, limit = 50 } = {}) => {
580
+ locale = badLocaleMap(locale)
535
581
  let products = await getEntriesByQuery({
536
582
  locale,
537
583
  start: skip,