import faker from '@faker-js/faker'; const arrayOf = (f: () => T) => { const length = 3; return Array.from({ length, }, f); }; const objectOf = (f: () => T) => { const keys = ['foo', 'bar', 'qux']; return keys.reduce>((object, key) => { object[key] = f(); return object; }, {}); }; const factories = { boolean: () => faker.datatype.boolean(), date_iso_8601: () => faker.datatype.datetime().toISOString().slice(0, 10), date_time_iso_8601: () => faker.datatype.datetime().toISOString(), decimal: () => faker.datatype.float(), double: () => faker.datatype.float(), integer: () => faker.datatype.number(), json: () => faker.datatype.json(), long: () => faker.datatype.number(), object: () => faker.datatype.json(), string: () => faker.datatype.string(), unit: () => undefined, uuid: () => faker.datatype.uuid(), 'bombas.storeback.api.v0.models.Breadcrumb': (): bombas.storeback.api.v0.models.Breadcrumb => ({ name: factories.string(), link: factories.string(), position: factories.integer(), }), 'bombas.storeback.api.v0.models.Color': (): bombas.storeback.api.v0.models.Color => ({ id: factories.string(), position: factories.integer(), name: factories.string(), fill: factories.string(), }), 'bombas.storeback.api.v0.models.Detail': (): bombas.storeback.api.v0.models.Detail => ({ icon_handle: factories.string(), title: factories.string(), tech: arrayOf(() => factories['bombas.storeback.api.v0.models.Tech']()), }), 'bombas.storeback.api.v0.models.Image': (): bombas.storeback.api.v0.models.Image => ({ id: factories.integer(), position: factories.integer(), alt: factories.string(), src: factories.string(), }), 'bombas.storeback.api.v0.models.Price': (): bombas.storeback.api.v0.models.Price => ({ msrp: factories.string(), price: factories.string(), isDiscounted: factories.boolean(), percentOff: factories.string(), }), 'bombas.storeback.api.v0.models.Product': (): bombas.storeback.api.v0.models.Product => ({ id: factories.long(), title: factories.string(), handle: factories.string(), description: factories.string(), description_html: factories.string(), item_count: factories.integer(), product_type: factories.string(), gender: factories.string(), colors: arrayOf(() => factories['bombas.storeback.api.v0.models.Color']()), sizes: arrayOf(() => factories['bombas.storeback.api.v0.models.Size']()), images: arrayOf(() => factories.object()), variants: arrayOf(() => factories['bombas.storeback.api.v0.models.Variant']()), breadcrumbs: arrayOf(() => factories['bombas.storeback.api.v0.models.Breadcrumb']()), details: arrayOf(() => factories['bombas.storeback.api.v0.models.Detail']()), created_at: factories.string(), updated_at: factories.string(), }), 'bombas.storeback.api.v0.models.Shipping': (): bombas.storeback.api.v0.models.Shipping => ({ requires_shipping: factories.boolean(), grams: factories.integer(), weight: factories.integer(), weight_unit: factories.string(), }), 'bombas.storeback.api.v0.models.Size': (): bombas.storeback.api.v0.models.Size => ({ name: factories.string(), values: arrayOf(() => factories['bombas.storeback.api.v0.models.SizeValues']()), }), 'bombas.storeback.api.v0.models.SizeValues': (): bombas.storeback.api.v0.models.SizeValues => ({ id: factories.string(), name: factories.string(), guidance: factories.string(), }), 'bombas.storeback.api.v0.models.Tech': (): bombas.storeback.api.v0.models.Tech => ({ title: factories.string(), handle: factories.string(), content: factories.string(), }), 'bombas.storeback.api.v0.models.Variant': (): bombas.storeback.api.v0.models.Variant => ({ id: factories.long(), product_id: factories.long(), sku: factories.string(), title: factories.string(), is_available: factories.boolean(), price: factories['bombas.storeback.api.v0.models.Price'](), shipping: factories['bombas.storeback.api.v0.models.Shipping'](), created_at: factories.string(), updated_at: factories.string(), sizes: arrayOf(() => factories['bombas.storeback.api.v0.models.Size']()), }), }; export const makeBreadcrumb = () => factories['bombas.storeback.api.v0.models.Breadcrumb'](); export const makeColor = () => factories['bombas.storeback.api.v0.models.Color'](); export const makeDetail = () => factories['bombas.storeback.api.v0.models.Detail'](); export const makeImage = () => factories['bombas.storeback.api.v0.models.Image'](); export const makePrice = () => factories['bombas.storeback.api.v0.models.Price'](); export const makeProduct = () => factories['bombas.storeback.api.v0.models.Product'](); export const makeShipping = () => factories['bombas.storeback.api.v0.models.Shipping'](); export const makeSize = () => factories['bombas.storeback.api.v0.models.Size'](); export const makeSizeValues = () => factories['bombas.storeback.api.v0.models.SizeValues'](); export const makeTech = () => factories['bombas.storeback.api.v0.models.Tech'](); export const makeVariant = () => factories['bombas.storeback.api.v0.models.Variant']();