From 95d0bf5aee45a356eb366b108d1f298395638f87 Mon Sep 17 00:00:00 2001 From: Marc Mintel Date: Mon, 15 Dec 2025 14:44:42 +0100 Subject: [PATCH] wip --- .../application/analytics/analytics.module.ts | 11 +- .../record-page-view.use-case.spec.ts | 2 +- .../in-memory-page-view.repository.ts | 2 +- .../analytics/mappers/PageViewMapper.spec.ts | 108 ++++++++++++++++++ .../analytics/mappers/PageViewMapper.ts | 39 +++++++ .../analytics/typeorm-page-view.entity.ts | 10 +- .../typeorm-page-view.repository.spec.ts | 2 +- .../analytics/typeorm-page-view.repository.ts | 48 ++------ apps/api/tsconfig.json | 1 + .../repositories/IPageViewRepository.ts | 11 +- .../tsconfig.json | 4 +- package.json | 3 +- {core/testing-support => testing}/index.ts | 0 .../testing-support => testing}/package.json | 2 +- .../src/faker/faker.ts | 0 .../src/images/images.ts | 0 .../src/media/DemoAvatarGenerationAdapter.ts | 0 .../src/media/DemoFaceValidationAdapter.ts | 0 .../src/media/DemoImageServiceAdapter.ts | 0 .../InMemoryAvatarGenerationRepository.ts | 0 .../src/racing/DemoCars.ts | 0 .../src/racing/DemoDriverStats.ts | 0 .../src/racing/DemoTracks.ts | 0 .../src/racing/RacingFeedSeed.ts | 0 .../src/racing/RacingSeedCore.ts | 0 .../src/racing/RacingSponsorshipSeed.ts | 0 .../src/racing/RacingStaticSeed.ts | 0 testing/tsconfig.json | 9 ++ 28 files changed, 185 insertions(+), 67 deletions(-) create mode 100644 apps/api/src/infrastructure/analytics/mappers/PageViewMapper.spec.ts create mode 100644 apps/api/src/infrastructure/analytics/mappers/PageViewMapper.ts rename core/analytics/{domain => application}/repositories/IPageViewRepository.ts (74%) rename core/{testing-support => analytics}/tsconfig.json (68%) rename {core/testing-support => testing}/index.ts (100%) rename {core/testing-support => testing}/package.json (69%) rename {core/testing-support => testing}/src/faker/faker.ts (100%) rename {core/testing-support => testing}/src/images/images.ts (100%) rename {core/testing-support => testing}/src/media/DemoAvatarGenerationAdapter.ts (100%) rename {core/testing-support => testing}/src/media/DemoFaceValidationAdapter.ts (100%) rename {core/testing-support => testing}/src/media/DemoImageServiceAdapter.ts (100%) rename {core/testing-support => testing}/src/media/InMemoryAvatarGenerationRepository.ts (100%) rename {core/testing-support => testing}/src/racing/DemoCars.ts (100%) rename {core/testing-support => testing}/src/racing/DemoDriverStats.ts (100%) rename {core/testing-support => testing}/src/racing/DemoTracks.ts (100%) rename {core/testing-support => testing}/src/racing/RacingFeedSeed.ts (100%) rename {core/testing-support => testing}/src/racing/RacingSeedCore.ts (100%) rename {core/testing-support => testing}/src/racing/RacingSponsorshipSeed.ts (100%) rename {core/testing-support => testing}/src/racing/RacingStaticSeed.ts (100%) create mode 100644 testing/tsconfig.json diff --git a/apps/api/src/application/analytics/analytics.module.ts b/apps/api/src/application/analytics/analytics.module.ts index a671ba532..270dfc3aa 100644 --- a/apps/api/src/application/analytics/analytics.module.ts +++ b/apps/api/src/application/analytics/analytics.module.ts @@ -1,16 +1,15 @@ import { Module, ConsoleLogger } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; import { AnalyticsService } from './analytics.service'; import { AnalyticsController } from '../../presentation/analytics.controller'; import { RecordPageViewUseCase } from './record-page-view.use-case'; import { RecordEngagementUseCase } from './record-engagement.use-case'; -import { IPageViewRepository } from '@gridpilot/analytics/domain/repositories/IPageViewRepository'; -import { IEngagementRepository } from '@gridpilot/analytics/domain/repositories/IEngagementRepository'; -import { ILogger } from '@gridpilot/shared/logging/ILogger'; -import { InMemoryPageViewRepository } from '../../infrastructure/analytics/in-memory-page-view.repository'; +import { TypeOrmPageViewRepository } from '../../infrastructure/analytics/typeorm-page-view.repository'; import { InMemoryEngagementRepository } from '../../infrastructure/analytics/in-memory-engagement.repository'; +import { PageViewEntity } from '../../infrastructure/analytics/typeorm-page-view.entity'; @Module({ - imports: [], // Removed TypeOrmModule as we are using in-memory repositories + imports: [TypeOrmModule.forFeature([PageViewEntity])], controllers: [AnalyticsController], providers: [ AnalyticsService, @@ -18,7 +17,7 @@ import { InMemoryEngagementRepository } from '../../infrastructure/analytics/in- RecordEngagementUseCase, { provide: 'IPageViewRepository', - useClass: InMemoryPageViewRepository, + useClass: TypeOrmPageViewRepository, }, { provide: 'IEngagementRepository', diff --git a/apps/api/src/application/analytics/record-page-view.use-case.spec.ts b/apps/api/src/application/analytics/record-page-view.use-case.spec.ts index adbe72481..bad51f697 100644 --- a/apps/api/src/application/analytics/record-page-view.use-case.spec.ts +++ b/apps/api/src/application/analytics/record-page-view.use-case.spec.ts @@ -1,6 +1,6 @@ import { Test, TestingModule } from '@nestjs/testing'; import { RecordPageViewUseCase, RecordPageViewInput, RecordPageViewOutput } from './record-page-view.use-case'; -import { IPageViewRepository } from '@gridpilot/analytics/domain/repositories/IPageViewRepository'; +import { IPageViewRepository } from '@gridpilot/analytics/application/repositories/IPageViewRepository'; import { ILogger } from '@gridpilot/shared/logging/ILogger'; import { PageView } from '@gridpilot/analytics/domain/entities/PageView'; import { EntityType, VisitorType } from '@gridpilot/analytics/domain/types/PageView'; diff --git a/apps/api/src/infrastructure/analytics/in-memory-page-view.repository.ts b/apps/api/src/infrastructure/analytics/in-memory-page-view.repository.ts index 5527f66ee..3d2b9af27 100644 --- a/apps/api/src/infrastructure/analytics/in-memory-page-view.repository.ts +++ b/apps/api/src/infrastructure/analytics/in-memory-page-view.repository.ts @@ -1,6 +1,6 @@ import { Injectable } from '@nestjs/common'; import { PageView, EntityType, VisitorType } from '@gridpilot/analytics/domain/entities/PageView'; -import type { IPageViewRepository } from '@gridpilot/analytics/domain/repositories/IPageViewRepository'; +import type { IPageViewRepository } from '@gridpilot/analytics/application/repositories/IPageViewRepository'; @Injectable() export class InMemoryPageViewRepository implements IPageViewRepository { diff --git a/apps/api/src/infrastructure/analytics/mappers/PageViewMapper.spec.ts b/apps/api/src/infrastructure/analytics/mappers/PageViewMapper.spec.ts new file mode 100644 index 000000000..a25bfe08d --- /dev/null +++ b/apps/api/src/infrastructure/analytics/mappers/PageViewMapper.spec.ts @@ -0,0 +1,108 @@ +import { PageViewMapper } from './PageViewMapper'; +import { PageView } from '@gridpilot/analytics/domain/entities/PageView'; +import { PageViewEntity } from '../typeorm-page-view.entity'; +import { EntityType, VisitorType } from '@gridpilot/analytics/domain/types/PageView'; + +describe('PageViewMapper', () => { + const now = new Date(); + + const pageViewProps = { + id: 'test-id', + entityType: EntityType.LEAGUE, + entityId: 'entity-id', + visitorType: VisitorType.ANONYMOUS, + sessionId: 'session-id', + timestamp: now, + visitorId: 'visitor-id', + referrer: 'fart.com', + userAgent: 'Mozilla', + country: 'US', + durationMs: 1000, + }; + + const pageViewDomain = PageView.create(pageViewProps); + + it('should correctly map a PageView domain entity to a PageViewEntity persistence entity', () => { + const pageViewEntity = PageViewMapper.toPersistence(pageViewDomain); + + expect(pageViewEntity).toBeInstanceOf(PageViewEntity); + expect(pageViewEntity.id).toEqual(pageViewDomain.id); + expect(pageViewEntity.entityType).toEqual(pageViewDomain.entityType); + expect(pageViewEntity.entityId).toEqual(pageViewDomain.entityId); + expect(pageViewEntity.visitorType).toEqual(pageViewDomain.visitorType); + expect(pageViewEntity.sessionId).toEqual(pageViewDomain.sessionId); + expect(pageViewEntity.timestamp.toISOString()).toEqual(pageViewDomain.timestamp.toISOString()); + expect(pageViewEntity.visitorId).toEqual(pageViewDomain.visitorId); + expect(pageViewEntity.referrer).toEqual(pageViewDomain.referrer); + expect(pageViewEntity.userAgent).toEqual(pageViewDomain.userAgent); + expect(pageViewEntity.country).toEqual(pageViewDomain.country); + expect(pageViewEntity.durationMs).toEqual(pageViewDomain.durationMs); + }); + + it('should correctly map a PageViewEntity persistence entity to a PageView domain entity', () => { + const pageViewEntity = new PageViewEntity(); + pageViewEntity.id = pageViewProps.id; + pageViewEntity.entityType = pageViewProps.entityType as any; // Cast as any because entityType is string in entity + pageViewEntity.entityId = pageViewProps.entityId; + pageViewEntity.visitorType = pageViewProps.visitorType as any; + pageViewEntity.sessionId = pageViewProps.sessionId; + pageViewEntity.timestamp = pageViewProps.timestamp; + pageViewEntity.visitorId = pageViewProps.visitorId; + pageViewEntity.referrer = pageViewProps.referrer; + pageViewEntity.userAgent = pageViewProps.userAgent; + pageViewEntity.country = pageViewProps.country; + pageViewEntity.durationMs = pageViewProps.durationMs; + + const pageView = PageViewMapper.toDomain(pageViewEntity); + + expect(pageView).toBeInstanceOf(PageView); + expect(pageView.id).toEqual(pageViewEntity.id); + expect(pageView.entityType).toEqual(pageViewEntity.entityType); + expect(pageView.entityId).toEqual(pageViewEntity.entityId); + expect(pageView.visitorType).toEqual(pageViewEntity.visitorType); + expect(pageView.sessionId).toEqual(pageViewEntity.sessionId); + expect(pageView.timestamp.toISOString()).toEqual(pageViewEntity.timestamp.toISOString()); + expect(pageView.visitorId).toEqual(pageViewEntity.visitorId); + expect(pageView.referrer).toEqual(pageViewEntity.referrer); + expect(pageView.userAgent).toEqual(pageViewEntity.userAgent); + expect(pageView.country).toEqual(pageViewEntity.country); + expect(pageView.durationMs).toEqual(pageViewEntity.durationMs); + }); + + it('should handle optional properties correctly when mapping to persistence', () => { + const minimalProps = { + id: 'minimal-id', + entityType: EntityType.RACE, + entityId: 'minimal-entity', + visitorType: VisitorType.DRIVER, + sessionId: 'minimal-session', + timestamp: now, + }; + const minimalDomain = PageView.create(minimalProps); + const entity = PageViewMapper.toPersistence(minimalDomain); + + expect(entity.visitorId).toBeUndefined(); + expect(entity.referrer).toBeUndefined(); + expect(entity.userAgent).toBeUndefined(); + expect(entity.country).toBeUndefined(); + expect(entity.durationMs).toBeUndefined(); + }); + + it('should handle optional properties correctly when mapping to domain', () => { + const minimalEntity = new PageViewEntity(); + minimalEntity.id = 'minimal-id-entity'; + minimalEntity.entityType = EntityType.RACE as any; + minimalEntity.entityId = 'minimal-entity-entity'; + minimalEntity.visitorType = VisitorType.DRIVER as any; + minimalEntity.sessionId = 'minimal-session-entity'; + minimalEntity.timestamp = now; + + const domain = PageViewMapper.toDomain(minimalEntity); + + expect(domain.visitorId).toBeUndefined(); + expect(domain.referrer).toBeUndefined(); + expect(domain.userAgent).toBeUndefined(); + expect(domain.country).toBeUndefined(); + expect(domain.durationMs).toBeUndefined(); + }); +}); diff --git a/apps/api/src/infrastructure/analytics/mappers/PageViewMapper.ts b/apps/api/src/infrastructure/analytics/mappers/PageViewMapper.ts new file mode 100644 index 000000000..0271a4249 --- /dev/null +++ b/apps/api/src/infrastructure/analytics/mappers/PageViewMapper.ts @@ -0,0 +1,39 @@ +import { PageView } from '../../domain/entities/PageView'; +import { PageViewEntity } from '../../../../apps/api/src/infrastructure/analytics/typeorm-page-view.entity'; +import { EntityType, VisitorType } from '../../domain/types/PageView'; +import { PageViewProps } from '../../domain/types/PageView'; + +export class PageViewMapper { + public static toDomain(entity: PageViewEntity): PageView { + const props: Omit & { timestamp?: Date } = { + id: entity.id, + entityType: entity.entityType as EntityType, + entityId: entity.entityId, + visitorType: entity.visitorType as VisitorType, + sessionId: entity.sessionId, + timestamp: entity.timestamp, + ...(entity.visitorId !== undefined && entity.visitorId !== null ? { visitorId: entity.visitorId } : {}), + ...(entity.referrer !== undefined && entity.referrer !== null ? { referrer: entity.referrer } : {}), + ...(entity.userAgent !== undefined && entity.userAgent !== null ? { userAgent: entity.userAgent } : {}), + ...(entity.country !== undefined && entity.country !== null ? { country: entity.country } : {}), + ...(entity.durationMs !== undefined && entity.durationMs !== null ? { durationMs: entity.durationMs } : {}), + }; + return PageView.create(props); + } + + public static toPersistence(domain: PageView): PageViewEntity { + const entity = new PageViewEntity(); + entity.id = domain.id; + entity.entityType = domain.entityType; + entity.entityId = domain.entityId; + entity.visitorType = domain.visitorType; + entity.sessionId = domain.sessionId; + entity.timestamp = domain.timestamp; + if (domain.visitorId !== undefined) entity.visitorId = domain.visitorId; + if (domain.referrer !== undefined) entity.referrer = domain.referrer; + if (domain.userAgent !== undefined) entity.userAgent = domain.userAgent; + if (domain.country !== undefined) entity.country = domain.country; + if (domain.durationMs !== undefined) entity.durationMs = domain.durationMs; + return entity; + } +} diff --git a/apps/api/src/infrastructure/analytics/typeorm-page-view.entity.ts b/apps/api/src/infrastructure/analytics/typeorm-page-view.entity.ts index f0ba34985..5267274ed 100644 --- a/apps/api/src/infrastructure/analytics/typeorm-page-view.entity.ts +++ b/apps/api/src/infrastructure/analytics/typeorm-page-view.entity.ts @@ -1,13 +1,11 @@ import { Entity, PrimaryColumn, Column } from 'typeorm'; -import { EntityType, VisitorType } from '@gridpilot/analytics/domain/types/PageView'; - @Entity('page_views') export class PageViewEntity { @PrimaryColumn({ type: 'uuid' }) id: string; - @Column({ type: 'enum', enum: EntityType }) - entityType: EntityType; + @Column({ type: 'enum', enum: ['league', 'driver', 'team', 'race', 'sponsor'] }) + entityType: string; @Column({ type: 'uuid' }) entityId: string; @@ -15,8 +13,8 @@ export class PageViewEntity { @Column({ type: 'uuid', nullable: true }) visitorId?: string; - @Column({ type: 'enum', enum: VisitorType }) - visitorType: VisitorType; + @Column({ type: 'enum', enum: ['anonymous', 'driver', 'sponsor'] }) + visitorType: string; @Column({ type: 'uuid' }) sessionId: string; diff --git a/apps/api/src/infrastructure/analytics/typeorm-page-view.repository.spec.ts b/apps/api/src/infrastructure/analytics/typeorm-page-view.repository.spec.ts index 353411b77..8bfc98766 100644 --- a/apps/api/src/infrastructure/analytics/typeorm-page-view.repository.spec.ts +++ b/apps/api/src/infrastructure/analytics/typeorm-page-view.repository.spec.ts @@ -5,7 +5,7 @@ import { TypeOrmPageViewRepository } from './typeorm-page-view.repository'; import { PageViewEntity } from './typeorm-page-view.entity'; import { PageView } from '@gridpilot/analytics/domain/entities/PageView'; import { EntityType, VisitorType } from '@gridpilot/analytics/domain/types/PageView'; -import { IPageViewRepository } from '@gridpilot/analytics/domain/repositories/IPageViewRepository'; +import { IPageViewRepository } from '@gridpilot/analytics/application/repositories/IPageViewRepository'; import { v4 as uuid } from 'uuid'; describe('TypeOrmPageViewRepository (Integration)', () => { diff --git a/apps/api/src/infrastructure/analytics/typeorm-page-view.repository.ts b/apps/api/src/infrastructure/analytics/typeorm-page-view.repository.ts index 63d9ab300..f8e2874b1 100644 --- a/apps/api/src/infrastructure/analytics/typeorm-page-view.repository.ts +++ b/apps/api/src/infrastructure/analytics/typeorm-page-view.repository.ts @@ -1,9 +1,11 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository, MoreThanOrEqual, Between } from 'typeorm'; -import { PageView, EntityType } from '@gridpilot/analytics/domain/entities/PageView'; -import { IPageViewRepository } from '@gridpilot/analytics/domain/repositories/IPageViewRepository'; +import { IPageViewRepository } from '@gridpilot/analytics/application/repositories/IPageViewRepository'; import { PageViewEntity } from './typeorm-page-view.entity'; +import { PageViewMapper } from './mappers/PageViewMapper'; +import { PageView } from '@gridpilot/analytics/domain/entities/PageView'; +import { EntityType } from '@gridpilot/analytics/domain/types/PageView'; @Injectable() export class TypeOrmPageViewRepository implements IPageViewRepository { @@ -13,7 +15,7 @@ export class TypeOrmPageViewRepository implements IPageViewRepository { ) {} async save(pageView: PageView): Promise { - const pageViewEntity = this.toPageViewEntity(pageView); + const pageViewEntity = PageViewMapper.toPersistence(pageView); await this.pageViewRepository.save(pageViewEntity); } @@ -21,7 +23,7 @@ export class TypeOrmPageViewRepository implements IPageViewRepository { const entity = await this.pageViewRepository.findOne({ where: { id }, }); - return entity ? this.toPageView(entity) : null; + return entity ? PageViewMapper.toDomain(entity) : null; } async findByEntityId(entityType: EntityType, entityId: string): Promise { @@ -29,7 +31,7 @@ export class TypeOrmPageViewRepository implements IPageViewRepository { where: { entityType, entityId }, order: { timestamp: 'DESC' }, }); - return entities.map(this.toPageView); + return entities.map(PageViewMapper.toDomain); } async findByDateRange(startDate: Date, endDate: Date): Promise { @@ -37,7 +39,7 @@ export class TypeOrmPageViewRepository implements IPageViewRepository { where: { timestamp: Between(startDate, endDate) }, order: { timestamp: 'DESC' }, }); - return entities.map(this.toPageView); + return entities.map(PageViewMapper.toDomain); } async findBySession(sessionId: string): Promise { @@ -45,7 +47,7 @@ export class TypeOrmPageViewRepository implements IPageViewRepository { where: { sessionId }, order: { timestamp: 'DESC' }, }); - return entities.map(this.toPageView); + return entities.map(PageViewMapper.toDomain); } async countByEntityId(entityType: EntityType, entityId: string, since?: Date): Promise { @@ -69,36 +71,4 @@ export class TypeOrmPageViewRepository implements IPageViewRepository { const result = await query.getRawOne(); return parseInt(result.count, 10) || 0; } - - public toPageViewEntity(pageView: PageView): PageViewEntity { - const entity = new PageViewEntity(); - entity.id = pageView.id; - entity.entityType = pageView.entityType; - entity.entityId = pageView.entityId; - entity.visitorId = pageView.visitorId; - entity.visitorType = pageView.visitorType; - entity.sessionId = pageView.sessionId; - entity.referrer = pageView.referrer; - entity.userAgent = pageView.userAgent; - entity.country = pageView.country; - entity.timestamp = pageView.timestamp; - entity.durationMs = pageView.durationMs; - return entity; - } - - private toPageView(entity: PageViewEntity): PageView { - return PageView.create({ - id: entity.id, - entityType: entity.entityType, - entityId: entity.entityId, - visitorType: entity.visitorType, - sessionId: entity.sessionId, - timestamp: entity.timestamp, - visitorId: entity.visitorId, - referrer: entity.referrer, - userAgent: entity.userAgent, - country: entity.country, - durationMs: entity.durationMs, - }); - } } diff --git a/apps/api/tsconfig.json b/apps/api/tsconfig.json index 7e049c751..97a9f1616 100644 --- a/apps/api/tsconfig.json +++ b/apps/api/tsconfig.json @@ -1,4 +1,5 @@ { + "extends": "../../tsconfig.base.json", "compilerOptions": { "target": "es2017", "module": "commonjs", diff --git a/core/analytics/domain/repositories/IPageViewRepository.ts b/core/analytics/application/repositories/IPageViewRepository.ts similarity index 74% rename from core/analytics/domain/repositories/IPageViewRepository.ts rename to core/analytics/application/repositories/IPageViewRepository.ts index d362c76a4..1346c89c2 100644 --- a/core/analytics/domain/repositories/IPageViewRepository.ts +++ b/core/analytics/application/repositories/IPageViewRepository.ts @@ -1,10 +1,5 @@ -/** - * Repository Interface: IPageViewRepository - * - * Defines persistence operations for PageView entities. - */ - -import type { PageView, EntityType } from '../entities/PageView'; +import { PageView } from '../../domain/entities/PageView'; +import { EntityType } from '../../domain/types/PageView'; export interface IPageViewRepository { save(pageView: PageView): Promise; @@ -14,4 +9,4 @@ export interface IPageViewRepository { findBySession(sessionId: string): Promise; countByEntityId(entityType: EntityType, entityId: string, since?: Date): Promise; countUniqueVisitors(entityType: EntityType, entityId: string, since?: Date): Promise; -} \ No newline at end of file +} diff --git a/core/testing-support/tsconfig.json b/core/analytics/tsconfig.json similarity index 68% rename from core/testing-support/tsconfig.json rename to core/analytics/tsconfig.json index 0cd835ce4..f5824790a 100644 --- a/core/testing-support/tsconfig.json +++ b/core/analytics/tsconfig.json @@ -1,11 +1,9 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "rootDir": "src", "outDir": "dist", - "composite": false, "declaration": true, "declarationMap": false }, - "include": ["src"] + "include": ["**/*.ts"] } \ No newline at end of file diff --git a/package.json b/package.json index 844798d44..01679bd4d 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,8 @@ }, "workspaces": [ "core/*", - "apps/*" + "apps/*", + "testing/*" ], "scripts": { "dev": "echo 'Development server placeholder - to be configured'", diff --git a/core/testing-support/index.ts b/testing/index.ts similarity index 100% rename from core/testing-support/index.ts rename to testing/index.ts diff --git a/core/testing-support/package.json b/testing/package.json similarity index 69% rename from core/testing-support/package.json rename to testing/package.json index 29f50c49d..4342e0f71 100644 --- a/core/testing-support/package.json +++ b/testing/package.json @@ -1,5 +1,5 @@ { - "name": "@gridpilot/testing-support", + "name": "@gridpilot/testing", "version": "0.1.0", "private": true, "main": "./index.ts", diff --git a/core/testing-support/src/faker/faker.ts b/testing/src/faker/faker.ts similarity index 100% rename from core/testing-support/src/faker/faker.ts rename to testing/src/faker/faker.ts diff --git a/core/testing-support/src/images/images.ts b/testing/src/images/images.ts similarity index 100% rename from core/testing-support/src/images/images.ts rename to testing/src/images/images.ts diff --git a/core/testing-support/src/media/DemoAvatarGenerationAdapter.ts b/testing/src/media/DemoAvatarGenerationAdapter.ts similarity index 100% rename from core/testing-support/src/media/DemoAvatarGenerationAdapter.ts rename to testing/src/media/DemoAvatarGenerationAdapter.ts diff --git a/core/testing-support/src/media/DemoFaceValidationAdapter.ts b/testing/src/media/DemoFaceValidationAdapter.ts similarity index 100% rename from core/testing-support/src/media/DemoFaceValidationAdapter.ts rename to testing/src/media/DemoFaceValidationAdapter.ts diff --git a/core/testing-support/src/media/DemoImageServiceAdapter.ts b/testing/src/media/DemoImageServiceAdapter.ts similarity index 100% rename from core/testing-support/src/media/DemoImageServiceAdapter.ts rename to testing/src/media/DemoImageServiceAdapter.ts diff --git a/core/testing-support/src/media/InMemoryAvatarGenerationRepository.ts b/testing/src/media/InMemoryAvatarGenerationRepository.ts similarity index 100% rename from core/testing-support/src/media/InMemoryAvatarGenerationRepository.ts rename to testing/src/media/InMemoryAvatarGenerationRepository.ts diff --git a/core/testing-support/src/racing/DemoCars.ts b/testing/src/racing/DemoCars.ts similarity index 100% rename from core/testing-support/src/racing/DemoCars.ts rename to testing/src/racing/DemoCars.ts diff --git a/core/testing-support/src/racing/DemoDriverStats.ts b/testing/src/racing/DemoDriverStats.ts similarity index 100% rename from core/testing-support/src/racing/DemoDriverStats.ts rename to testing/src/racing/DemoDriverStats.ts diff --git a/core/testing-support/src/racing/DemoTracks.ts b/testing/src/racing/DemoTracks.ts similarity index 100% rename from core/testing-support/src/racing/DemoTracks.ts rename to testing/src/racing/DemoTracks.ts diff --git a/core/testing-support/src/racing/RacingFeedSeed.ts b/testing/src/racing/RacingFeedSeed.ts similarity index 100% rename from core/testing-support/src/racing/RacingFeedSeed.ts rename to testing/src/racing/RacingFeedSeed.ts diff --git a/core/testing-support/src/racing/RacingSeedCore.ts b/testing/src/racing/RacingSeedCore.ts similarity index 100% rename from core/testing-support/src/racing/RacingSeedCore.ts rename to testing/src/racing/RacingSeedCore.ts diff --git a/core/testing-support/src/racing/RacingSponsorshipSeed.ts b/testing/src/racing/RacingSponsorshipSeed.ts similarity index 100% rename from core/testing-support/src/racing/RacingSponsorshipSeed.ts rename to testing/src/racing/RacingSponsorshipSeed.ts diff --git a/core/testing-support/src/racing/RacingStaticSeed.ts b/testing/src/racing/RacingStaticSeed.ts similarity index 100% rename from core/testing-support/src/racing/RacingStaticSeed.ts rename to testing/src/racing/RacingStaticSeed.ts diff --git a/testing/tsconfig.json b/testing/tsconfig.json new file mode 100644 index 000000000..91badd622 --- /dev/null +++ b/testing/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../tsconfig.base.json", + "compilerOptions": { + "outDir": "dist", + "declaration": true, + "declarationMap": false + }, + "include": ["**/*.ts"] +} \ No newline at end of file