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(), 'com.gilt.public.api.enums.store': (): com.gilt.RESERVED_WORD_public.api.enums.Store => faker.helpers.arrayElement(['women', 'men', 'kids', 'home']), 'com.gilt.public.api.models.product': (): com.gilt.RESERVED_WORD_public.api.models.Product => ({ name: factories.string(), product: factories.string(), id: factories.long(), brand: factories.string(), url: factories.string(), content: factories['com.gilt.public.api.models.product_content'](), categories: arrayOf(() => factories.string()), image_urls: factories.object(), skus: arrayOf(() => factories['com.gilt.public.api.models.sku']()), }), 'com.gilt.public.api.models.product_categories': (): com.gilt.RESERVED_WORD_public.api.models.ProductCategories => ({ categories: arrayOf(() => factories.string()), }), 'com.gilt.public.api.models.product_content': (): com.gilt.RESERVED_WORD_public.api.models.ProductContent => ({ description: factories.string(), fit_notes: factories.string(), material: factories.string(), care_instructions: factories.string(), origin: factories.string(), }), 'com.gilt.public.api.models.sale_detail': (): com.gilt.RESERVED_WORD_public.api.models.SaleDetail => ({ name: factories.string(), sale: factories.string(), sale_key: factories.string(), store: factories['com.gilt.public.api.enums.store'](), description: factories.string(), sale_url: factories.string(), begins: factories.date_time_iso_8601(), ends: factories.date_time_iso_8601(), image_urls: factories.object(), products: arrayOf(() => factories.string()), }), 'com.gilt.public.api.models.sale_list': (): com.gilt.RESERVED_WORD_public.api.models.SaleList => ({ sales: arrayOf(() => factories['com.gilt.public.api.models.sale_detail']()), }), 'com.gilt.public.api.models.sku': (): com.gilt.RESERVED_WORD_public.api.models.Sku => ({ id: factories.long(), inventory_status: factories.string(), msrp_price: factories.decimal(), sale_price: factories.decimal(), shipping_surcharge: factories.decimal(), attributes: arrayOf(() => factories.object()), }), }; export const makeProduct = () => factories['com.gilt.public.api.models.product'](); export const makeProductCategories = () => factories['com.gilt.public.api.models.product_categories'](); export const makeProductContent = () => factories['com.gilt.public.api.models.product_content'](); export const makeSaleDetail = () => factories['com.gilt.public.api.models.sale_detail'](); export const makeSaleList = () => factories['com.gilt.public.api.models.sale_list'](); export const makeSku = () => factories['com.gilt.public.api.models.sku'](); export const makeStore = () => factories['com.gilt.public.api.enums.store']();