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(), 'de.nccloud.common.v0.enums.error_source_type': (): de.nccloud.common.v0.enums.ErrorSourceType => faker.helpers.arrayElement(['pointer', 'parameter', 'header']), 'de.nccloud.common.v0.enums.health_status': (): de.nccloud.common.v0.enums.HealthStatus => faker.helpers.arrayElement(['running', 'starting', 'unhealthy']), 'de.nccloud.common.v0.enums.sort_direction': (): de.nccloud.common.v0.enums.SortDirection => faker.helpers.arrayElement(['asc', 'desc']), 'de.nccloud.common.v0.models.audit': (): de.nccloud.common.v0.models.Audit => ({ created_at: factories.date_time_iso_8601(), created_by: factories.uuid(), updated_at: factories.date_time_iso_8601(), updated_by: factories.uuid(), }), 'de.nccloud.common.v0.models.error_links': (): de.nccloud.common.v0.models.ErrorLinks => ({ about: factories['de.nccloud.common.v0.unions.link'](), type: factories['de.nccloud.common.v0.unions.link'](), }), 'de.nccloud.common.v0.models.error_source': (): de.nccloud.common.v0.models.ErrorSource => ({ type: factories['de.nccloud.common.v0.enums.error_source_type'](), source: factories.string(), }), 'de.nccloud.common.v0.models.generic_error': (): de.nccloud.common.v0.models.GenericError => ({ links: factories['de.nccloud.common.v0.models.error_links'](), code: factories.string(), title: factories.string(), detail: factories.string(), source: factories['de.nccloud.common.v0.models.error_source'](), meta: factories.object(), }), 'de.nccloud.common.v0.models.health_check': (): de.nccloud.common.v0.models.HealthCheck => ({ status: factories['de.nccloud.common.v0.enums.health_status'](), message: factories.string(), }), 'de.nccloud.common.v0.models.link_object': (): de.nccloud.common.v0.models.LinkObject => ({ discriminator: 'link_object', href: factories.string(), title: factories.string(), type: factories.string(), }), 'de.nccloud.common.v0.models.page_response': (): de.nccloud.common.v0.models.PageResponse => ({ offset: factories.integer(), limit: factories.integer(), sort: arrayOf(() => factories['de.nccloud.common.v0.models.sort']()), total_results: factories.long(), total_pages: factories.long(), }), 'de.nccloud.common.v0.models.paging_form': (): de.nccloud.common.v0.models.PagingForm => ({ offset: factories.integer(), limit: factories.integer(), sort: arrayOf(() => factories['de.nccloud.common.v0.models.sort']()), }), 'de.nccloud.common.v0.models.service_info': (): de.nccloud.common.v0.models.ServiceInfo => ({ name: factories.string(), version: factories.string(), uri: factories.string(), title: factories.string(), description: factories.string(), }), 'de.nccloud.common.v0.models.sort': (): de.nccloud.common.v0.models.Sort => ({ property: factories.string(), direction: factories['de.nccloud.common.v0.enums.sort_direction'](), }), 'de.nccloud.common.v0.unions.link': (): de.nccloud.common.v0.unions.Link => { const f = faker.helpers.arrayElement([() => ({ discriminator: 'string' as const, value: factories.string(), }), () => factories['de.nccloud.common.v0.models.link_object']()]); return f(); }, 'de.nccloud.reporting.api.v0.enums.scalar_type': (): de.nccloud.reporting.api.v0.enums.ScalarType => faker.helpers.arrayElement([ 'boolean', 'date-iso8601', 'date-time-iso8601', 'decimal', 'double', 'integer', 'long', 'string', 'uuid', 'object', ]), 'de.nccloud.reporting.api.v0.models.delete_event': (): de.nccloud.reporting.api.v0.models.DeleteEvent => ({ type: 'delete_event', tracking_id: factories.string(), audit: factories['de.nccloud.common.v0.models.audit'](), }), 'de.nccloud.reporting.api.v0.models.field': (): de.nccloud.reporting.api.v0.models.Field => ({ type: factories['de.nccloud.reporting.api.v0.enums.scalar_type'](), is_array: factories.boolean(), fields: objectOf(() => factories['de.nccloud.reporting.api.v0.models.field']()), label: factories.string(), description: factories.string(), }), 'de.nccloud.reporting.api.v0.models.filter': (): de.nccloud.reporting.api.v0.models.Filter => ({ expression: factories.string(), variables: objectOf(() => factories.json()), }), 'de.nccloud.reporting.api.v0.models.projection_field': (): de.nccloud.reporting.api.v0.models.ProjectionField => ({ label: factories.string(), description: factories.string(), source: factories['de.nccloud.reporting.api.v0.models.projection_field_source'](), fields: objectOf(() => factories['de.nccloud.reporting.api.v0.models.projection_field']()), }), 'de.nccloud.reporting.api.v0.models.projection_field_source': (): de.nccloud.reporting.api.v0.models.ProjectionFieldSource => ({ topic: factories.string(), path: factories.string(), filter: factories.string(), }), 'de.nccloud.reporting.api.v0.models.query_form': (): de.nccloud.reporting.api.v0.models.QueryForm => ({ view: factories.string(), projection: objectOf(() => factories['de.nccloud.reporting.api.v0.models.projection_field']()), variables: objectOf(() => factories.json()), sort: arrayOf(() => factories['de.nccloud.common.v0.models.sort']()), }), 'de.nccloud.reporting.api.v0.models.query_response': (): de.nccloud.reporting.api.v0.models.QueryResponse => ({ page: factories['de.nccloud.common.v0.models.page_response'](), data: factories.object(), }), 'de.nccloud.reporting.api.v0.models.topic': (): de.nccloud.reporting.api.v0.models.Topic => ({ name: factories.string(), service: factories['de.nccloud.common.v0.models.service_info'](), schema: objectOf(() => factories['de.nccloud.reporting.api.v0.models.field']()), }), 'de.nccloud.reporting.api.v0.models.topic_response': (): de.nccloud.reporting.api.v0.models.TopicResponse => ({ page: factories['de.nccloud.common.v0.models.page_response'](), data: arrayOf(() => factories['de.nccloud.reporting.api.v0.models.topic']()), }), 'de.nccloud.reporting.api.v0.models.update_event': (): de.nccloud.reporting.api.v0.models.UpdateEvent => ({ type: 'update_event', tracking_id: factories.string(), payload: factories.object(), audit: factories['de.nccloud.common.v0.models.audit'](), }), 'de.nccloud.reporting.api.v0.models.view': (): de.nccloud.reporting.api.v0.models.View => ({ guid: factories.uuid(), name: factories.string(), projection: objectOf(() => factories['de.nccloud.reporting.api.v0.models.projection_field']()), variables: objectOf(() => factories['de.nccloud.reporting.api.v0.enums.scalar_type']()), }), 'de.nccloud.reporting.api.v0.models.view_form': (): de.nccloud.reporting.api.v0.models.ViewForm => ({ name: factories.string(), projection: objectOf(() => factories['de.nccloud.reporting.api.v0.models.projection_field']()), variables: objectOf(() => factories['de.nccloud.reporting.api.v0.enums.scalar_type']()), }), 'de.nccloud.reporting.api.v0.models.view_response': (): de.nccloud.reporting.api.v0.models.ViewResponse => ({ page: factories['de.nccloud.common.v0.models.page_response'](), data: arrayOf(() => factories['de.nccloud.reporting.api.v0.models.view']()), }), 'de.nccloud.reporting.api.v0.unions.reporting_event': (): de.nccloud.reporting.api.v0.unions.ReportingEvent => { const f = faker.helpers.arrayElement([ () => factories['de.nccloud.reporting.api.v0.models.update_event'](), () => factories['de.nccloud.reporting.api.v0.models.delete_event'](), ]); return f(); }, 'de.nccloud.reporting.crds.v0.models.report_stream': (): de.nccloud.reporting.crds.v0.models.ReportStream => ({ topic: factories.string(), description: factories.string(), service: factories.string(), schema: objectOf(() => factories['de.nccloud.reporting.api.v0.models.field']()), }), }; export const makeReportStream = () => factories['de.nccloud.reporting.crds.v0.models.report_stream']();