import { faker } from '@faker-js/faker'; import { DataOverlayAnnotationFaker } from '@test/fakers/data-overlay-annotation.faker'; import { DataOverlayAngleFaker } from '@test/fakers/data-overlay-angle.faker'; import { DataOverlayLengthFaker } from '@test/fakers/data-overlay-length.faker'; import { DataOverlayPolygonFaker } from '@test/fakers/data-overlay-polygon.faker'; import { DataOverlayType, InteractionType } from '@3cr/types-ts'; import { DataOverlayInteractionFaker } from '@test/fakers/data-overlay-interaction.faker'; import { DataOverlayData, DataOverlayAnnotation, DataOverlayInteraction, DataOverlayDataRaw, DataOverlayLength, DataOverlayPolygon, DataOverlayAngle, } from '@3cr/viewer-types-ts'; export class DataOverlayDataFaker { static annotation(): DataOverlayData { return DataOverlayDataFaker.random( DataOverlayAnnotationFaker.random(), DataOverlayType.Annotation, ); } static annotationEvent( type: InteractionType, ): DataOverlayData> { return DataOverlayDataFaker.random( DataOverlayInteractionFaker.annotation(type), DataOverlayType.Annotation, ); } static annotationRaw(): DataOverlayDataRaw { return DataOverlayDataFaker.randomRaw( DataOverlayAnnotationFaker.randomRaw(), DataOverlayType.Annotation, ); } static annotationEventRaw(type: InteractionType): DataOverlayDataRaw { return DataOverlayDataFaker.randomRaw( DataOverlayInteractionFaker.annotationRaw(type), DataOverlayType.Annotation, ); } static length(): DataOverlayData { return DataOverlayDataFaker.random( DataOverlayLengthFaker.random(), DataOverlayType.Length, ); } static lengthEvent( type: InteractionType, ): DataOverlayData> { return DataOverlayDataFaker.random( DataOverlayInteractionFaker.length(type), DataOverlayType.Length, ); } static lengthRaw(): DataOverlayDataRaw { return DataOverlayDataFaker.randomRaw( DataOverlayLengthFaker.randomRaw(), DataOverlayType.Length, ); } static lengthEventRaw(type: InteractionType): DataOverlayDataRaw { return DataOverlayDataFaker.randomRaw( DataOverlayInteractionFaker.lengthRaw(type), DataOverlayType.Length, ); } static polygon(): DataOverlayData { return DataOverlayDataFaker.random( DataOverlayPolygonFaker.random(), DataOverlayType.Polygon, ); } static polygonEvent( type: InteractionType, ): DataOverlayData> { return DataOverlayDataFaker.random( DataOverlayInteractionFaker.polygon(type), DataOverlayType.Polygon, ); } static polygonRaw(): DataOverlayDataRaw { return DataOverlayDataFaker.randomRaw( DataOverlayPolygonFaker.randomRaw(), DataOverlayType.Polygon, ); } static polygonEventRaw(type: InteractionType): DataOverlayDataRaw { return DataOverlayDataFaker.randomRaw( DataOverlayInteractionFaker.polygonRaw(type), DataOverlayType.Polygon, ); } static angle(): DataOverlayData { return DataOverlayDataFaker.random( DataOverlayAngleFaker.random(), DataOverlayType.Angle, ); } static angleEvent( type: InteractionType, ): DataOverlayData> { return DataOverlayDataFaker.random( DataOverlayInteractionFaker.angle(type), DataOverlayType.Angle, ); } static angleRaw(): DataOverlayDataRaw { return DataOverlayDataFaker.randomRaw( DataOverlayAngleFaker.randomRaw(), DataOverlayType.Angle, ); } static angleEventRaw(type: InteractionType): DataOverlayDataRaw { return DataOverlayDataFaker.randomRaw( DataOverlayInteractionFaker.angleRaw(type), DataOverlayType.Angle, ); } private static random( data: T, dataType: DataOverlayType, ): DataOverlayData { return { Version: faker.system.semver(), Id: faker.string.uuid(), DataType: dataType, Data: data, }; } private static randomRaw( data: T, dataType: DataOverlayType, ): DataOverlayDataRaw { return { Version: faker.system.semver(), Id: faker.string.uuid(), DataType: dataType, Data: JSON.stringify(data), }; } }