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(), 'solutions.poole.questlog.api.v0.enums.item_type': (): solutions.poole.questlog.api.v0.enums.ItemType => faker.helpers.arrayElement(['Food', 'Clothes', 'Camp', 'Utensils', 'Gear']), 'solutions.poole.questlog.api.v0.models.adventure': (): solutions.poole.questlog.api.v0.models.Adventure => ({ guid: factories.uuid(), name: factories.string(), description: factories.string(), location: factories.string(), participants: arrayOf(() => factories['solutions.poole.questlog.api.v0.models.participant']()), pack_lists: arrayOf(() => factories['solutions.poole.questlog.api.v0.models.item']()), }), 'solutions.poole.questlog.api.v0.models.error': (): solutions.poole.questlog.api.v0.models.Error => ({ code: factories.string(), message: factories.string(), }), 'solutions.poole.questlog.api.v0.models.guest': (): solutions.poole.questlog.api.v0.models.Guest => ({ discriminator: 'guest', email: factories.string(), name: factories.string(), }), 'solutions.poole.questlog.api.v0.models.item': (): solutions.poole.questlog.api.v0.models.Item => ({ name: factories.string(), size: factories.double(), description: factories.string(), type: factories['solutions.poole.questlog.api.v0.enums.item_type'](), }), 'solutions.poole.questlog.api.v0.models.participant': (): solutions.poole.questlog.api.v0.models.Participant => ({ person: factories['solutions.poole.questlog.api.v0.unions.person'](), items: arrayOf(() => factories['solutions.poole.questlog.api.v0.models.item']()), }), 'solutions.poole.questlog.api.v0.models.user': (): solutions.poole.questlog.api.v0.models.User => ({ discriminator: 'user', guid: factories.uuid(), email: factories.string(), name: factories.string(), }), 'solutions.poole.questlog.api.v0.unions.person': (): solutions.poole.questlog.api.v0.unions.Person => { const f = faker.helpers.arrayElement([ () => factories['solutions.poole.questlog.api.v0.models.guest'](), () => factories['solutions.poole.questlog.api.v0.models.user'](), ]); return f(); }, }; export const makeAdventure = () => factories['solutions.poole.questlog.api.v0.models.adventure'](); export const makeError = () => factories['solutions.poole.questlog.api.v0.models.error'](); export const makeGuest = () => factories['solutions.poole.questlog.api.v0.models.guest'](); export const makeItem = () => factories['solutions.poole.questlog.api.v0.models.item'](); export const makeItemType = () => factories['solutions.poole.questlog.api.v0.enums.item_type'](); export const makeParticipant = () => factories['solutions.poole.questlog.api.v0.models.participant'](); export const makePerson = () => factories['solutions.poole.questlog.api.v0.unions.person'](); export const makeUser = () => factories['solutions.poole.questlog.api.v0.models.user']();