@ribajs/shopify
Version:
Shopify extension for Riba.js
65 lines • 5.54 kB
JavaScript
import { HttpService } from "@ribajs/core";
export class ShopifyProductService {
static get(handle) {
if (this.cache[handle]) {
return new Promise((resolve) => {
resolve(this.cache[handle]);
});
}
else {
return HttpService.getJSON(`/products/${handle}.js`).then((res) => {
const product = res.body;
this.cache[handle] = product;
return this.cache[handle];
});
}
}
static fitsVariantOptions(variant, optionValues) {
let fit = true;
for (const position0 in optionValues) {
if (optionValues[position0]) {
const optionValue = optionValues[position0];
fit = fit && variant.options.indexOf(optionValue.toString()) > -1;
}
}
return fit;
}
static getVariantOfOptions(product, optionValues) {
let result = null;
if (product) {
for (const i in product.variants) {
if (product.variants[i]) {
result = null;
const variant = product.variants[i];
const fits = this.fitsVariantOptions(variant, optionValues);
if (fits) {
result = variant;
break;
}
}
}
}
return result;
}
static getVariant(product, id) {
const result = product.variants.find((variant) => variant.id === id) || null;
return result;
}
static getOption(product, name) {
const result = product.options.find((option) => option.name.toLowerCase() === name.toLowerCase());
return result;
}
static getOptionIncludes(product, searchSubstr) {
const result = product.options.find((option) => option.name.includes(searchSubstr));
return result;
}
static prepare(product) {
product.featured_image.replace(/(^\w+:|^)\/\//, "//");
for (const option of product.options) {
option.name = option.name.toLowerCase();
}
return product;
}
static cache = {};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcGlmeS1wcm9kdWN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvc2hvcGlmeS1wcm9kdWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQVEzQyxNQUFNLE9BQU8scUJBQXFCO0lBS3pCLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBYztRQUM5QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN2QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQzdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDOUIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBaUIsYUFBYSxNQUFNLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FDdkUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDTixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQztnQkFDN0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzVCLENBQUMsQ0FDRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFRTSxNQUFNLENBQUMsa0JBQWtCLENBQzlCLE9BQThCLEVBQzlCLFlBQXNCO1FBRXRCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQztRQUVmLEtBQUssTUFBTSxTQUFTLElBQUksWUFBWSxFQUFFLENBQUM7WUFDckMsSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLFNBQVMs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