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(), 'natalia.foursquare.v0.models.photo': (): natalia.foursquare.v0.models.Photo => ({ prefix: factories.string(), suffix: factories.string(), width: factories.integer(), height: factories.integer(), }), 'natalia.foursquare.v0.models.venue': (): natalia.foursquare.v0.models.Venue => ({ name: factories.string(), id: factories.string(), bestPhoto: factories['natalia.foursquare.v0.models.photo'](), }), 'natalia.foursquare.v0.models.venue_details_response': (): natalia.foursquare.v0.models.VenueDetailsResponse => ({ venue: factories['natalia.foursquare.v0.models.venue'](), }), 'natalia.foursquare.v0.models.venue_details_response_wrapper': (): natalia.foursquare.v0.models.VenueDetailsResponseWrapper => ({ response: factories['natalia.foursquare.v0.models.venue_details_response'](), }), 'natalia.foursquare.v0.models.venue_explore_response': (): natalia.foursquare.v0.models.VenueExploreResponse => ({ groups: arrayOf(() => factories['natalia.foursquare.v0.models.venue_group']()), }), 'natalia.foursquare.v0.models.venue_explore_response_wrapper': (): natalia.foursquare.v0.models.VenueExploreResponseWrapper => ({ response: factories['natalia.foursquare.v0.models.venue_explore_response'](), }), 'natalia.foursquare.v0.models.venue_group': (): natalia.foursquare.v0.models.VenueGroup => ({ items: arrayOf(() => factories['natalia.foursquare.v0.models.venue_item']()), }), 'natalia.foursquare.v0.models.venue_item': (): natalia.foursquare.v0.models.VenueItem => ({ venue: factories['natalia.foursquare.v0.models.venue'](), }), }; export const makePhoto = () => factories['natalia.foursquare.v0.models.photo'](); export const makeVenue = () => factories['natalia.foursquare.v0.models.venue'](); export const makeVenueDetailsResponse = () => factories['natalia.foursquare.v0.models.venue_details_response'](); export const makeVenueDetailsResponseWrapper = () => factories['natalia.foursquare.v0.models.venue_details_response_wrapper'](); export const makeVenueExploreResponse = () => factories['natalia.foursquare.v0.models.venue_explore_response'](); export const makeVenueExploreResponseWrapper = () => factories['natalia.foursquare.v0.models.venue_explore_response_wrapper'](); export const makeVenueGroup = () => factories['natalia.foursquare.v0.models.venue_group'](); export const makeVenueItem = () => factories['natalia.foursquare.v0.models.venue_item']();