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.shopr.api.clickouts.api.v0.enums.client_origin': (): com.shopr.api.clickouts.api.v0.enums.ClientOrigin => faker.helpers.arrayElement([ 'shopr_website', 'shopr_mobile_web', 'shopr_iphone', 'shopr_ipad', 'shopr_android', ]), 'com.shopr.api.clickouts.api.v0.models.clickout': (): com.shopr.api.clickouts.api.v0.models.Clickout => ({ productId: factories.string(), seller: factories.string(), sellerProductId: factories.string(), price: factories.decimal(), deepUrl: factories.string(), lowestPrice: factories.decimal(), highestPrice: factories.decimal(), offerCount: factories.integer(), offerPosition: factories.integer(), categoryId: factories.string(), tracking: factories['com.shopr.api.clickouts.api.v0.models.tracking'](), creationTime: factories.date_time_iso_8601(), }), 'com.shopr.api.clickouts.api.v0.models.error_code': (): com.shopr.api.clickouts.api.v0.models.ErrorCode => ({ code: factories.string(), localized_string_code: factories.string(), }), 'com.shopr.api.clickouts.api.v0.models.error_response': (): com.shopr.api.clickouts.api.v0.models.ErrorResponse => ({ message: factories.string(), error_codes: arrayOf(() => factories['com.shopr.api.clickouts.api.v0.models.error_code']()), fingerprint: factories.string(), }), 'com.shopr.api.clickouts.api.v0.models.status': (): com.shopr.api.clickouts.api.v0.models.Status => ({ response: factories.string(), }), 'com.shopr.api.clickouts.api.v0.models.tracking': (): com.shopr.api.clickouts.api.v0.models.Tracking => ({ ipAddress: factories.string(), origin: factories['com.shopr.api.clickouts.api.v0.enums.client_origin'](), userAgent: factories.string(), referrer: factories.string(), }), }; export const makeClickout = () => factories['com.shopr.api.clickouts.api.v0.models.clickout'](); export const makeClientOrigin = () => factories['com.shopr.api.clickouts.api.v0.enums.client_origin'](); export const makeErrorCode = () => factories['com.shopr.api.clickouts.api.v0.models.error_code'](); export const makeErrorResponse = () => factories['com.shopr.api.clickouts.api.v0.models.error_response'](); export const makeStatus = () => factories['com.shopr.api.clickouts.api.v0.models.status'](); export const makeTracking = () => factories['com.shopr.api.clickouts.api.v0.models.tracking']();