UNPKG

@megaads/variant-builder

Version:

A JavaScript library to fetch and process product variants data

54 lines (43 loc) 1.76 kB
import fetch from "node-fetch"; import PrintervalVariants from "./index.js"; interface Variant { id: number; slug: string; values: Array<{ id: number }>; } interface ProductVariant { id: number; sku: string, variants: number[]; price: number; high_price: number; } interface Galleries { [key: number]: string[]; } interface FetchDataResult { variants: Variant[]; productVariants: ProductVariant[]; galleries: Galleries; } async function fetchData(productId: number): Promise<FetchDataResult> { const variantResponse = await fetch(`https://us-variant.printerval.com/v2/variant/${productId}?ignore_localization=1`); const variantDataJson = await variantResponse.json() as { result: { variants: Variant[], productVariants: ProductVariant[] } }; const variants = variantDataJson.result.variants; const productVariants = variantDataJson.result.productVariants; const galleryResponse = await fetch(`https://us-variant.printerval.com/gallery/${productId}?ignore_localization=1`); const galleriesDataJson = await galleryResponse.json() as { result: Galleries }; const galleries = galleriesDataJson.result; return { variants, productVariants, galleries }; } async function getDetails(productId: number): Promise<void> { const { variants, productVariants, galleries } = await fetchData(productId); const printervalVariants = PrintervalVariants.init({ variants: variants, productVariants: productVariants, galleries: galleries }); const retVal = printervalVariants.getProductSkuDetails(159658972); console.log(JSON.stringify(retVal.variants)); } getDetails(1000400032).then(() => {});