@fabrix/spool-cart
Version:
Spool - eCommerce Spool for Fabrix
73 lines (72 loc) • 2.59 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const joi = require("joi");
const variant_1 = require("./variant");
const image_1 = require("./image");
const tags_1 = require("../tag/tags");
const metadata_1 = require("../metadata/metadata");
const associations_1 = require("../association/associations");
exports.product = joi.object().keys({
id: joi.any(),
sku: joi.string(),
option: joi.object(),
property_pricing: joi.object().pattern(/[\s\S]*/, joi.object().keys({
name: joi.string().required(),
group: joi.string().allow('', null).optional(),
price: joi.number().required(),
image: joi.string().allow('', null).optional(),
multi_select: joi.boolean()
})),
host: joi.string(),
handle: joi.string(),
title: joi.string(),
seo_title: joi.string(),
body: joi.string(),
seo_description: joi.string(),
type: joi.string(),
tags: tags_1.tags,
price: joi.number(),
compare_at_price: joi.number(),
currency: joi.string(),
collections: joi.array(),
associations: associations_1.associations,
fulfillment_service: joi.string(),
metadata: metadata_1.metadata,
published: joi.boolean(),
published_scope: joi.string(),
available: joi.boolean(),
requires_shipping: joi.boolean(),
requires_tax: joi.boolean(),
requires_subscription: joi.boolean(),
subscription_interval: joi.number(),
subscription_unit: joi.string().valid('0', 'd', 'w', 'ww', 'm', 'mm', 'y', 'yy'),
inventory_management: joi.boolean(),
inventory_quantity: joi.number(),
inventory_lead_time: joi.number(),
images: joi.array().items(image_1.image),
tax_code: joi.string(),
weight: joi.number(),
weight_unit: joi.string().valid('g', 'kg', 'oz', 'lb'),
variants: joi.array().items(variant_1.variant),
vendors: joi.array().items(joi.string()),
average_shipping: joi.number(),
google: joi.object().keys({
g_product_category: joi.string(),
g_gender: joi.string(),
g_age_group: joi.string(),
g_mpn: joi.string(),
g_adwords_grouping: joi.string(),
g_adwords_label: joi.string(),
g_condition: joi.string(),
g_custom_product: joi.string(),
g_custom_label_0: joi.string(),
g_custom_label_1: joi.string(),
g_custom_label_2: joi.string(),
g_custom_label_3: joi.string(),
g_custom_label_4: joi.string(),
}),
amazon: joi.object(),
client_details: joi.object(),
ip: joi.string(),
shop_id: joi.number()
});