@nuskin/ns-product-lib
Advanced tools
Comparing version 2.17.0-cx24-5822.6 to 2.17.0-cx24-5822.7
{ | ||
"name": "@nuskin/ns-product-lib", | ||
"version": "2.17.0-cx24-5822.6", | ||
"version": "2.17.0-cx24-5822.7", | ||
"description": "This project contains shared Product models and code between the backend and frontend.", | ||
@@ -5,0 +5,0 @@ "main": "src/index.js", |
@@ -110,3 +110,3 @@ const axios = require('axios').default; | ||
market, | ||
locale, | ||
language: locale, | ||
...(okta !== null && { okta }), | ||
@@ -119,18 +119,10 @@ quantity: 1 // set default to 1 | ||
const { data } = await graphQlHttpRequest(payload, config); | ||
if (data && data.data && | ||
data.data.productsById && | ||
data.data.productsById.products && | ||
data.data.productsById.products.length) { | ||
//use to get default variant based on requested sku | ||
productsData.products = data.data.productsById.products.map((product,index)=>{ | ||
config.sku = ids[index]; | ||
const newProduct = mapProduct(product, market, locale, config); | ||
return new Product(newProduct); | ||
}) | ||
productsData.count = productsData.products.length; | ||
} | ||
const mappedProducts = mapSkusToProducts(ids,data); | ||
//use to get default variant based on requested sku | ||
mappedProducts.forEach(({sku , product})=>{ | ||
config.sku = sku; | ||
const newProduct = mapProduct(product, market, locale, config); | ||
productsData.products.push(new Product(newProduct)); | ||
}); | ||
productsData.count = productsData.products.length; | ||
} catch (e) { | ||
@@ -151,2 +143,32 @@ console.log(`Unable to fetch products details for SKUs ${ids}`); | ||
/** | ||
* Map skus array to products array | ||
* @param {string[]} skus | ||
* @param {any} products | ||
*/ | ||
function mapSkusToProducts(skus , products){ | ||
const productsData = []; | ||
if (products?.data?.productsById?.products?.length) { | ||
skus.forEach((sku)=>{ | ||
const matchedProducts = products.data.productsById.products.filter((product)=>{ | ||
let matched = false; | ||
if(product?.id) {matched = product.id === sku;} | ||
if(product?.variants?.length){ | ||
product.variants.forEach((variant)=>{ | ||
matched |= variant.sku === sku; | ||
}); | ||
} | ||
return matched; | ||
}); | ||
if(matchedProducts.length > 0){ | ||
productsData.push({ sku: sku , product: matchedProducts[0]}); | ||
} | ||
}) | ||
} | ||
return productsData; | ||
} | ||
/** | ||
* Map product prices | ||
@@ -153,0 +175,0 @@ * @param {*} product |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
145750
4910