website refactor

This commit is contained in:
2026-01-16 13:48:18 +01:00
parent 20a42c52fd
commit 7e02fc3ea5
796 changed files with 1946 additions and 2545 deletions

View File

@@ -7,7 +7,7 @@ import { AuthModule } from '../auth/AuthModule';
import { ListUsersUseCase } from '@core/admin/application/use-cases/ListUsersUseCase';
import { GetDashboardStatsUseCase } from './use-cases/GetDashboardStatsUseCase';
import { InitializationLogger } from '../../shared/logging/InitializationLogger';
import type { IAdminUserRepository } from '@core/admin/domain/repositories/IAdminUserRepository';
import type { IAdminUserRepository } from '@core/admin/domain/repositories/AdminUserRepository';
export const ADMIN_USER_REPOSITORY_TOKEN = 'IAdminUserRepository';

View File

@@ -1,6 +1,6 @@
import { AdminService } from './AdminService';
import { AdminUser } from '@core/admin/domain/entities/AdminUser';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import { vi, describe, it, expect, beforeEach } from 'vitest';
// Mock use cases

View File

@@ -1,6 +1,6 @@
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import type { ApplicationErrorCode } from '@core/shared/errors/ApplicationErrorCode';
import type { IAdminUserRepository } from '@core/admin/domain/repositories/IAdminUserRepository';
import type { IAdminUserRepository } from '@core/admin/domain/repositories/AdminUserRepository';
import { AuthorizationService } from '@core/admin/domain/services/AuthorizationService';
import { UserId } from '@core/admin/domain/value-objects/UserId';

View File

@@ -1,5 +1,5 @@
import type { IEngagementRepository } from '@core/analytics/domain/repositories/IEngagementRepository';
import type { IPageViewRepository } from '@core/analytics/application/repositories/IPageViewRepository';
import type { IEngagementRepository } from '@core/analytics/domain/repositories/EngagementRepository';
import type { IPageViewRepository } from '@core/analytics/application/repositories/PageViewRepository';
import type { Logger } from '@core/shared/application';
import { Provider } from '@nestjs/common';

View File

@@ -1,5 +1,5 @@
import { describe, expect, it, vi } from 'vitest';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import { AnalyticsService } from './AnalyticsService';
import { RecordPageViewPresenter } from './presenters/RecordPageViewPresenter';
import { RecordEngagementPresenter } from './presenters/RecordEngagementPresenter';

View File

@@ -1,6 +1,6 @@
import { describe, expect, it, vi } from 'vitest';
import { requestContextMiddleware } from '@adapters/http/RequestContext';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import { getActorFromRequestContext } from './getActorFromRequestContext';
import { requireLeagueAdminOrOwner } from '../league/LeagueAuthorization';

View File

@@ -9,11 +9,11 @@ import { SignupSponsorUseCase } from '@core/identity/application/use-cases/Signu
import { ForgotPasswordUseCase } from '@core/identity/application/use-cases/ForgotPasswordUseCase';
import { ResetPasswordUseCase } from '@core/identity/application/use-cases/ResetPasswordUseCase';
import type { IdentitySessionPort } from '@core/identity/application/ports/IdentitySessionPort';
import type { IAuthRepository } from '@core/identity/domain/repositories/IAuthRepository';
import type { ICompanyRepository } from '@core/identity/domain/repositories/ICompanyRepository';
import type { IMagicLinkRepository } from '@core/identity/domain/repositories/IMagicLinkRepository';
import type { IAuthRepository } from '@core/identity/domain/repositories/AuthRepository';
import type { ICompanyRepository } from '@core/identity/domain/repositories/CompanyRepository';
import type { IMagicLinkRepository } from '@core/identity/domain/repositories/MagicLinkRepository';
import type { IPasswordHashingService } from '@core/identity/domain/services/PasswordHashingService';
import type { IMagicLinkNotificationPort } from '@core/identity/domain/ports/IMagicLinkNotificationPort';
import type { IMagicLinkNotificationPort } from '@core/identity/domain/ports/MagicLinkNotificationPort';
import {
AUTH_REPOSITORY_TOKEN,

View File

@@ -1,5 +1,5 @@
import { describe, expect, it, vi } from 'vitest';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import { AuthService } from './AuthService';
class FakeAuthSessionPresenter {

View File

@@ -9,7 +9,7 @@ import {
CreateAchievementUseCase,
type IAchievementRepository,
} from '@core/identity/application/use-cases/achievement/CreateAchievementUseCase';
import type { IUserRepository } from '@core/identity/domain/repositories/IUserRepository';
import type { IUserRepository } from '@core/identity/domain/repositories/UserRepository';
import type { IdentitySessionPort } from '@core/identity/application/ports/IdentitySessionPort';
import type { Logger } from '@core/shared/application';
import { CookieIdentitySessionAdapter } from '../../../../../adapters/identity/session/CookieIdentitySessionAdapter';

View File

@@ -2,15 +2,15 @@ import { Provider } from '@nestjs/common';
// Import core interfaces
import type { Logger } from '@core/shared/application/Logger';
import { IDriverRepository } from '@core/racing/domain/repositories/IDriverRepository';
import { IRaceRepository } from '@core/racing/domain/repositories/IRaceRepository';
import { IResultRepository } from '@core/racing/domain/repositories/IResultRepository';
import { ILeagueRepository } from '@core/racing/domain/repositories/ILeagueRepository';
import { IStandingRepository } from '@core/racing/domain/repositories/IStandingRepository';
import { ILeagueMembershipRepository } from '@core/racing/domain/repositories/ILeagueMembershipRepository';
import { IRaceRegistrationRepository } from '@core/racing/domain/repositories/IRaceRegistrationRepository';
import { IFeedRepository } from '@core/social/domain/repositories/IFeedRepository';
import { ISocialGraphRepository } from '@core/social/domain/repositories/ISocialGraphRepository';
import { IDriverRepository } from '@core/racing/domain/repositories/DriverRepository';
import { IRaceRepository } from '@core/racing/domain/repositories/RaceRepository';
import { IResultRepository } from '@core/racing/domain/repositories/ResultRepository';
import { ILeagueRepository } from '@core/racing/domain/repositories/LeagueRepository';
import { IStandingRepository } from '@core/racing/domain/repositories/StandingRepository';
import { ILeagueMembershipRepository } from '@core/racing/domain/repositories/LeagueMembershipRepository';
import { IRaceRegistrationRepository } from '@core/racing/domain/repositories/RaceRegistrationRepository';
import { IFeedRepository } from '@core/social/domain/repositories/FeedRepository';
import { ISocialGraphRepository } from '@core/social/domain/repositories/SocialGraphRepository';
import { SOCIAL_FEED_REPOSITORY_TOKEN, SOCIAL_GRAPH_REPOSITORY_TOKEN } from '../../persistence/social/SocialPersistenceTokens';
import { ImageServicePort } from '@core/media/application/ports/ImageServicePort';

View File

@@ -1,5 +1,5 @@
import { describe, expect, it, vi } from 'vitest';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import { DashboardService } from './DashboardService';
describe('DashboardService', () => {

View File

@@ -2,15 +2,15 @@ import { Provider } from '@nestjs/common';
// Import core interfaces
import { DriverExtendedProfileProvider } from '@core/racing/application/ports/DriverExtendedProfileProvider';
import { IDriverRepository } from '@core/racing/domain/repositories/IDriverRepository';
import { ILiveryRepository } from '@core/racing/domain/repositories/ILiveryRepository';
import { IRaceRegistrationRepository } from '@core/racing/domain/repositories/IRaceRegistrationRepository';
import type { ITeamMembershipRepository } from '@core/racing/domain/repositories/ITeamMembershipRepository';
import type { ITeamRepository } from '@core/racing/domain/repositories/ITeamRepository';
import { IDriverRepository } from '@core/racing/domain/repositories/DriverRepository';
import { ILiveryRepository } from '@core/racing/domain/repositories/LiveryRepository';
import { IRaceRegistrationRepository } from '@core/racing/domain/repositories/RaceRegistrationRepository';
import type { ITeamMembershipRepository } from '@core/racing/domain/repositories/TeamMembershipRepository';
import type { ITeamRepository } from '@core/racing/domain/repositories/TeamRepository';
import type { Logger } from '@core/shared/application';
import type { ISocialGraphRepository } from '@core/social/domain/repositories/ISocialGraphRepository';
import type { IResultRepository } from '@core/racing/domain/repositories/IResultRepository';
import type { IStandingRepository } from '@core/racing/domain/repositories/IStandingRepository';
import type { ISocialGraphRepository } from '@core/social/domain/repositories/SocialGraphRepository';
import type { IResultRepository } from '@core/racing/domain/repositories/ResultRepository';
import type { IStandingRepository } from '@core/racing/domain/repositories/StandingRepository';
import type { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
// Import use cases
@@ -39,10 +39,10 @@ import { InMemoryMediaRepository } from '@adapters/racing/persistence/media/InMe
// Import MediaResolverAdapter
import { MediaResolverAdapter } from '@adapters/media/MediaResolverAdapter';
// Import repository tokens
import { IDriverStatsRepository } from '@core/racing/domain/repositories/IDriverStatsRepository';
import { IDriverStatsRepository } from '@core/racing/domain/repositories/DriverStatsRepository';
// Import use case interfaces
import type { IRankingUseCase } from '@core/racing/application/use-cases/IRankingUseCase';
import type { IDriverStatsUseCase } from '@core/racing/application/use-cases/IDriverStatsUseCase';
import type { IRankingUseCase } from '@core/racing/application/use-cases/RankingUseCase';
import type { IDriverStatsUseCase } from '@core/racing/application/use-cases/DriverStatsUseCase';
// Import presenters
import { CompleteOnboardingPresenter } from './presenters/CompleteOnboardingPresenter';

View File

@@ -1,6 +1,6 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import { describe, expect, it, vi, beforeEach } from 'vitest';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import { DriverService } from './DriverService';
describe('DriverService', () => {

View File

@@ -1,5 +1,5 @@
import { Inject, Injectable } from '@nestjs/common';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import { CompleteOnboardingInputDTO } from './dtos/CompleteOnboardingInputDTO';
import { CompleteOnboardingOutputDTO } from './dtos/CompleteOnboardingOutputDTO';
import { DriverRegistrationStatusDTO } from './dtos/DriverRegistrationStatusDTO';

View File

@@ -1,7 +1,7 @@
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import type { Driver } from '@core/racing/domain/entities/Driver';
import type { GetDriverOutputDTO } from '../dtos/GetDriverOutputDTO';
import type { IDriverStatsRepository } from '@core/racing/domain/repositories/IDriverStatsRepository';
import type { IDriverStatsRepository } from '@core/racing/domain/repositories/DriverStatsRepository';
import type { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
import { MediaReference } from '@core/domain/media/MediaReference';

View File

@@ -1,5 +1,5 @@
import { describe, it, expect, beforeEach } from 'vitest';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import { GetDriverLiveriesPresenter } from './GetDriverLiveriesPresenter';
import { DriverLivery } from '@core/racing/domain/entities/DriverLivery';

View File

@@ -1,4 +1,4 @@
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import type { DriverLivery } from '@core/racing/domain/entities/DriverLivery';
import type { GetDriverLiveriesOutputDTO } from '../dtos/GetDriverLiveriesOutputDTO';

View File

@@ -4,20 +4,20 @@ import { LeagueService } from './LeagueService';
import * as LeagueTokens from './LeagueTokens';
// Import core interfaces
import type { IDriverRepository } from '@core/racing/domain/repositories/IDriverRepository';
import type { ILeagueMembershipRepository } from '@core/racing/domain/repositories/ILeagueMembershipRepository';
import type { ILeagueRepository } from '@core/racing/domain/repositories/ILeagueRepository';
import type { IProtestRepository } from '@core/racing/domain/repositories/IProtestRepository';
import type { IRaceRepository } from '@core/racing/domain/repositories/IRaceRepository';
import type { ISeasonRepository } from '@core/racing/domain/repositories/ISeasonRepository';
import type { ISeasonSponsorshipRepository } from '@core/racing/domain/repositories/ISeasonSponsorshipRepository';
import type { IStandingRepository } from '@core/racing/domain/repositories/IStandingRepository';
import type { IDriverRepository } from '@core/racing/domain/repositories/DriverRepository';
import type { ILeagueMembershipRepository } from '@core/racing/domain/repositories/LeagueMembershipRepository';
import type { ILeagueRepository } from '@core/racing/domain/repositories/LeagueRepository';
import type { IProtestRepository } from '@core/racing/domain/repositories/ProtestRepository';
import type { IRaceRepository } from '@core/racing/domain/repositories/RaceRepository';
import type { ISeasonRepository } from '@core/racing/domain/repositories/SeasonRepository';
import type { ISeasonSponsorshipRepository } from '@core/racing/domain/repositories/SeasonSponsorshipRepository';
import type { IStandingRepository } from '@core/racing/domain/repositories/StandingRepository';
import type { Logger } from '@core/shared/application/Logger';
import type { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
// Import concrete in-memory implementations
import type { ILeagueWalletRepository } from "@core/racing/domain/repositories/ILeagueWalletRepository";
import type { ITransactionRepository } from "@core/racing/domain/repositories/ITransactionRepository";
import type { ILeagueWalletRepository } from "@core/racing/domain/repositories/LeagueWalletRepository";
import type { ITransactionRepository } from "@core/racing/domain/repositories/TransactionRepository";
import { getLeagueScoringPresetById, listLeagueScoringPresets } from '@adapters/bootstrap/LeagueScoringPresets';
import { ConsoleLogger } from '@adapters/logging/ConsoleLogger';
import { InMemoryLeagueStandingsRepository } from '@adapters/racing/persistence/inmemory/InMemoryLeagueStandingsRepository';
@@ -215,8 +215,8 @@ export const LeagueProviders: Provider[] = [
leagueRepo: ILeagueRepository,
membershipRepo: ILeagueMembershipRepository,
seasonRepo: ISeasonRepository,
scoringRepo: import('@core/racing/domain/repositories/ILeagueScoringConfigRepository').ILeagueScoringConfigRepository,
gameRepo: import('@core/racing/domain/repositories/IGameRepository').IGameRepository,
scoringRepo: import('@core/racing/domain/repositories/LeagueScoringConfigRepository').ILeagueScoringConfigRepository,
gameRepo: import('@core/racing/domain/repositories/GameRepository').IGameRepository,
) =>
new GetAllLeaguesWithCapacityAndScoringUseCase(
leagueRepo,

View File

@@ -1,5 +1,5 @@
import { describe, expect, it, vi } from 'vitest';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import { requestContextMiddleware } from '@adapters/http/RequestContext';
import { LeagueService } from './LeagueService';

View File

@@ -1,9 +1,9 @@
import { Provider } from '@nestjs/common';
// Import core interfaces
import { IAvatarGenerationRepository } from '@core/media/domain/repositories/IAvatarGenerationRepository';
import { IMediaRepository } from '@core/media/domain/repositories/IMediaRepository';
import { IAvatarRepository } from '@core/media/domain/repositories/IAvatarRepository';
import { IAvatarGenerationRepository } from '@core/media/domain/repositories/AvatarGenerationRepository';
import { IMediaRepository } from '@core/media/domain/repositories/MediaRepository';
import { IAvatarRepository } from '@core/media/domain/repositories/AvatarRepository';
import { FaceValidationPort } from '@core/media/application/ports/FaceValidationPort';
import { AvatarGenerationPort } from '@core/media/application/ports/AvatarGenerationPort';
import { MediaStoragePort } from '@core/media/application/ports/MediaStoragePort';

View File

@@ -1,5 +1,5 @@
import { describe, expect, it, vi } from 'vitest';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import { MediaService } from './MediaService';
describe('MediaService', () => {

View File

@@ -4,7 +4,7 @@ import type { Logger } from '@core/shared/application/Logger';
import { GetUnreadNotificationsUseCase } from '@core/notifications/application/use-cases/GetUnreadNotificationsUseCase';
import { GetAllNotificationsUseCase } from '@core/notifications/application/use-cases/GetAllNotificationsUseCase';
import { MarkNotificationReadUseCase } from '@core/notifications/application/use-cases/MarkNotificationReadUseCase';
import { INotificationRepository } from '@core/notifications/domain/repositories/INotificationRepository';
import { INotificationRepository } from '@core/notifications/domain/repositories/NotificationRepository';
import { NOTIFICATION_REPOSITORY_TOKEN } from '../../persistence/notifications/NotificationsPersistenceTokens';
import {
GET_UNREAD_NOTIFICATIONS_USE_CASE_TOKEN,

View File

@@ -1,10 +1,10 @@
import { Provider } from '@nestjs/common';
// Import core interfaces
import type { IPaymentRepository } from '@core/payments/domain/repositories/IPaymentRepository';
import type { IMembershipFeeRepository, IMemberPaymentRepository } from '@core/payments/domain/repositories/IMembershipFeeRepository';
import type { IPrizeRepository } from '@core/payments/domain/repositories/IPrizeRepository';
import type { IWalletRepository, ITransactionRepository } from '@core/payments/domain/repositories/IWalletRepository';
import type { IPaymentRepository } from '@core/payments/domain/repositories/PaymentRepository';
import type { IMembershipFeeRepository, IMemberPaymentRepository } from '@core/payments/domain/repositories/MembershipFeeRepository';
import type { IPrizeRepository } from '@core/payments/domain/repositories/PrizeRepository';
import type { IWalletRepository, ITransactionRepository } from '@core/payments/domain/repositories/WalletRepository';
// Import use cases
import { GetPaymentsUseCase } from '@core/payments/application/use-cases/GetPaymentsUseCase';

View File

@@ -1,5 +1,5 @@
import { describe, expect, it, vi } from 'vitest';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import { PaymentsService } from './PaymentsService';
describe('PaymentsService', () => {

View File

@@ -1,9 +1,9 @@
import { Provider } from '@nestjs/common';
// Import core interfaces
import type { ILeagueMembershipRepository } from '@core/racing/domain/repositories/ILeagueMembershipRepository';
import type { IProtestRepository } from '@core/racing/domain/repositories/IProtestRepository';
import type { IRaceRepository } from '@core/racing/domain/repositories/IRaceRepository';
import type { ILeagueMembershipRepository } from '@core/racing/domain/repositories/LeagueMembershipRepository';
import type { IProtestRepository } from '@core/racing/domain/repositories/ProtestRepository';
import type { IRaceRepository } from '@core/racing/domain/repositories/RaceRepository';
import type { Logger } from '@core/shared/application/Logger';
// Import concrete in-memory implementations

View File

@@ -1,5 +1,5 @@
import { describe, it, expect, beforeEach, vi, type MockedFunction } from 'vitest';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import type { Logger } from '@core/shared/application/Logger';
import type {
ReviewProtestUseCase,

View File

@@ -2,15 +2,15 @@ import type { Provider } from '@nestjs/common';
// Import core interfaces
import type { DriverRatingProvider } from '@core/racing/application/ports/DriverRatingProvider';
import type { IDriverRepository } from '@core/racing/domain/repositories/IDriverRepository';
import type { ILeagueMembershipRepository } from '@core/racing/domain/repositories/ILeagueMembershipRepository';
import type { ILeagueRepository } from '@core/racing/domain/repositories/ILeagueRepository';
import type { IPenaltyRepository } from '@core/racing/domain/repositories/IPenaltyRepository';
import type { IProtestRepository } from '@core/racing/domain/repositories/IProtestRepository';
import type { IRaceRegistrationRepository } from '@core/racing/domain/repositories/IRaceRegistrationRepository';
import type { IRaceRepository } from '@core/racing/domain/repositories/IRaceRepository';
import type { IResultRepository } from '@core/racing/domain/repositories/IResultRepository';
import type { IStandingRepository } from '@core/racing/domain/repositories/IStandingRepository';
import type { IDriverRepository } from '@core/racing/domain/repositories/DriverRepository';
import type { ILeagueMembershipRepository } from '@core/racing/domain/repositories/LeagueMembershipRepository';
import type { ILeagueRepository } from '@core/racing/domain/repositories/LeagueRepository';
import type { IPenaltyRepository } from '@core/racing/domain/repositories/PenaltyRepository';
import type { IProtestRepository } from '@core/racing/domain/repositories/ProtestRepository';
import type { IRaceRegistrationRepository } from '@core/racing/domain/repositories/RaceRegistrationRepository';
import type { IRaceRepository } from '@core/racing/domain/repositories/RaceRepository';
import type { IResultRepository } from '@core/racing/domain/repositories/ResultRepository';
import type { IStandingRepository } from '@core/racing/domain/repositories/StandingRepository';
import type { Logger } from '@core/shared/application/Logger';
// Import concrete in-memory implementations

View File

@@ -1,6 +1,6 @@
import { describe, expect, it, vi, type Mock } from 'vitest';
import { RaceService } from './RaceService';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
describe('RaceService', () => {
it('invokes each use case and returns the corresponding presenter', async () => {

View File

@@ -1,6 +1,6 @@
import type { GetRaceDetailResult } from '@core/racing/application/use-cases/GetRaceDetailUseCase';
import type { DriverRatingProvider } from '@core/racing/application/ports/DriverRatingProvider';
import type { IImageServicePort } from '@core/racing/application/ports/IImageServicePort';
import type { IImageServicePort } from '@core/racing/application/ports/ImageServicePort';
import type { GetRaceDetailParamsDTO } from '../dtos/GetRaceDetailParamsDTO';
import type { RaceDetailDTO } from '../dtos/RaceDetailDTO';
import type { RaceDetailRaceDTO } from '../dtos/RaceDetailRaceDTO';

View File

@@ -3,7 +3,7 @@ import type {
GetRaceResultsDetailResult,
GetRaceResultsDetailErrorCode,
} from '@core/racing/application/use-cases/GetRaceResultsDetailUseCase';
import type { IImageServicePort } from '@core/racing/application/ports/IImageServicePort';
import type { IImageServicePort } from '@core/racing/application/ports/ImageServicePort';
import type { RaceResultsDetailDTO } from '../dtos/RaceResultsDetailDTO';
import type { RaceResultDTO } from '../dtos/RaceResultDTO';

View File

@@ -3,17 +3,17 @@ import { SponsorService } from './SponsorService';
// Import core interfaces
import type { NotificationService } from '@core/notifications/application/ports/NotificationService';
import type { IPaymentRepository } from '@core/payments/domain/repositories/IPaymentRepository';
import type { IWalletRepository } from '@core/payments/domain/repositories/IWalletRepository';
import { ILeagueMembershipRepository } from '@core/racing/domain/repositories/ILeagueMembershipRepository';
import { ILeagueRepository } from '@core/racing/domain/repositories/ILeagueRepository';
import { ILeagueWalletRepository } from '@core/racing/domain/repositories/ILeagueWalletRepository';
import { IRaceRepository } from '@core/racing/domain/repositories/IRaceRepository';
import { ISeasonRepository } from '@core/racing/domain/repositories/ISeasonRepository';
import { ISeasonSponsorshipRepository } from '@core/racing/domain/repositories/ISeasonSponsorshipRepository';
import { ISponsorRepository } from '@core/racing/domain/repositories/ISponsorRepository';
import { ISponsorshipPricingRepository } from '@core/racing/domain/repositories/ISponsorshipPricingRepository';
import { ISponsorshipRequestRepository } from '@core/racing/domain/repositories/ISponsorshipRequestRepository';
import type { IPaymentRepository } from '@core/payments/domain/repositories/PaymentRepository';
import type { IWalletRepository } from '@core/payments/domain/repositories/WalletRepository';
import { ILeagueMembershipRepository } from '@core/racing/domain/repositories/LeagueMembershipRepository';
import { ILeagueRepository } from '@core/racing/domain/repositories/LeagueRepository';
import { ILeagueWalletRepository } from '@core/racing/domain/repositories/LeagueWalletRepository';
import { IRaceRepository } from '@core/racing/domain/repositories/RaceRepository';
import { ISeasonRepository } from '@core/racing/domain/repositories/SeasonRepository';
import { ISeasonSponsorshipRepository } from '@core/racing/domain/repositories/SeasonSponsorshipRepository';
import { ISponsorRepository } from '@core/racing/domain/repositories/SponsorRepository';
import { ISponsorshipPricingRepository } from '@core/racing/domain/repositories/SponsorshipPricingRepository';
import { ISponsorshipRequestRepository } from '@core/racing/domain/repositories/SponsorshipRequestRepository';
import type { Logger } from '@core/shared/application';
import { GetSponsorBillingUseCase } from '@core/payments/application/use-cases/GetSponsorBillingUseCase';

View File

@@ -9,7 +9,7 @@ import type { GetSponsorsUseCase } from '@core/racing/application/use-cases/GetS
import type { GetSponsorUseCase } from '@core/racing/application/use-cases/GetSponsorUseCase';
import type { RejectSponsorshipRequestUseCase } from '@core/racing/application/use-cases/RejectSponsorshipRequestUseCase';
import type { Logger } from '@core/shared/application';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import { beforeEach, describe, expect, it, Mock, vi } from 'vitest';
import type { CreateSponsorInputDTO } from './dtos/CreateSponsorInputDTO';
import { Sponsor } from '@core/racing/domain/entities/sponsor/Sponsor';

View File

@@ -33,10 +33,10 @@ export {
// Import core interfaces
import type { Logger } from '@core/shared/application/Logger';
import type { MediaResolverPort } from '@core/ports/media/MediaResolverPort';
import type { ITeamRepository } from '@core/racing/domain/repositories/ITeamRepository';
import type { ITeamMembershipRepository } from '@core/racing/domain/repositories/ITeamMembershipRepository';
import type { IDriverRepository } from '@core/racing/domain/repositories/IDriverRepository';
import type { ITeamStatsRepository } from '@core/racing/domain/repositories/ITeamStatsRepository';
import type { ITeamRepository } from '@core/racing/domain/repositories/TeamRepository';
import type { ITeamMembershipRepository } from '@core/racing/domain/repositories/TeamMembershipRepository';
import type { IDriverRepository } from '@core/racing/domain/repositories/DriverRepository';
import type { ITeamStatsRepository } from '@core/racing/domain/repositories/TeamStatsRepository';
// Import concrete implementations
import { InMemoryImageServiceAdapter } from '@adapters/media/ports/InMemoryImageServiceAdapter';

View File

@@ -1,6 +1,6 @@
import { beforeEach, describe, expect, it, vi, type Mock } from 'vitest';
import type { Logger } from '@core/shared/application/Logger';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import { GetAllTeamsUseCase } from '@core/racing/application/use-cases/GetAllTeamsUseCase';
import { GetTeamDetailsUseCase } from '@core/racing/application/use-cases/GetTeamDetailsUseCase';
import { GetTeamMembersUseCase } from '@core/racing/application/use-cases/GetTeamMembersUseCase';

View File

@@ -1,7 +1,7 @@
import { describe, expect, it, beforeEach } from 'vitest';
import { Test, TestingModule } from '@nestjs/testing';
import { ACHIEVEMENT_REPOSITORY_TOKEN } from './AchievementPersistenceTokens';
import type { IAchievementRepository } from '@core/identity/domain/repositories/IAchievementRepository';
import type { IAchievementRepository } from '@core/identity/domain/repositories/AchievementRepository';
describe('AchievementPersistenceModule', () => {
const originalEnv = { ...process.env };

View File

@@ -4,9 +4,9 @@ import { LoggingModule } from '../../domain/logging/LoggingModule';
import type { Logger } from '@core/shared/application/Logger';
import type { IEngagementRepository } from '@core/analytics/domain/repositories/IEngagementRepository';
import type { IAnalyticsSnapshotRepository } from '@core/analytics/domain/repositories/IAnalyticsSnapshotRepository';
import type { IPageViewRepository } from '@core/analytics/application/repositories/IPageViewRepository';
import type { IEngagementRepository } from '@core/analytics/domain/repositories/EngagementRepository';
import type { IAnalyticsSnapshotRepository } from '@core/analytics/domain/repositories/AnalyticsSnapshotRepository';
import type { IPageViewRepository } from '@core/analytics/application/repositories/PageViewRepository';
import { InMemoryAnalyticsSnapshotRepository } from '@adapters/analytics/persistence/inmemory/InMemoryAnalyticsSnapshotRepository';
import { InMemoryEngagementRepository } from '@adapters/analytics/persistence/inmemory/InMemoryEngagementRepository';

View File

@@ -4,7 +4,7 @@ import { LoggingModule } from '../../domain/logging/LoggingModule';
import type { Logger } from '@core/shared/application/Logger';
import type { IPasswordHashingService } from '@core/identity/domain/services/PasswordHashingService';
import type { StoredUser } from '@core/identity/domain/repositories/IUserRepository';
import type { StoredUser } from '@core/identity/domain/repositories/UserRepository';
import { InMemoryAuthRepository } from '@adapters/identity/persistence/inmemory/InMemoryAuthRepository';
import { InMemoryUserRepository } from '@adapters/identity/persistence/inmemory/InMemoryUserRepository';

View File

@@ -4,9 +4,9 @@ import { LoggingModule } from '../../domain/logging/LoggingModule';
import type { Logger } from '@core/shared/application/Logger';
import type { IAvatarGenerationRepository } from '@core/media/domain/repositories/IAvatarGenerationRepository';
import type { IMediaRepository } from '@core/media/domain/repositories/IMediaRepository';
import type { IAvatarRepository } from '@core/media/domain/repositories/IAvatarRepository';
import type { IAvatarGenerationRepository } from '@core/media/domain/repositories/AvatarGenerationRepository';
import type { IMediaRepository } from '@core/media/domain/repositories/MediaRepository';
import type { IAvatarRepository } from '@core/media/domain/repositories/AvatarRepository';
import { InMemoryAvatarGenerationRepository } from '@adapters/media/persistence/inmemory/InMemoryAvatarGenerationRepository';

View File

@@ -4,8 +4,8 @@ import { LoggingModule } from '../../domain/logging/LoggingModule';
import type { Logger } from '@core/shared/application/Logger';
import type { INotificationRepository } from '@core/notifications/domain/repositories/INotificationRepository';
import type { INotificationPreferenceRepository } from '@core/notifications/domain/repositories/INotificationPreferenceRepository';
import type { INotificationRepository } from '@core/notifications/domain/repositories/NotificationRepository';
import type { INotificationPreferenceRepository } from '@core/notifications/domain/repositories/NotificationPreferenceRepository';
import type { NotificationService } from '@core/notifications/application/ports/NotificationService';
import type { NotificationGatewayRegistry } from '@core/notifications/application/ports/NotificationGateway';

View File

@@ -4,13 +4,13 @@ import { LoggingModule } from '../../domain/logging/LoggingModule';
import type { Logger } from '@core/shared/application/Logger';
import type { IPaymentRepository } from '@core/payments/domain/repositories/IPaymentRepository';
import type { IPaymentRepository } from '@core/payments/domain/repositories/PaymentRepository';
import type {
IMemberPaymentRepository,
IMembershipFeeRepository,
} from '@core/payments/domain/repositories/IMembershipFeeRepository';
import type { IPrizeRepository } from '@core/payments/domain/repositories/IPrizeRepository';
import type { ITransactionRepository, IWalletRepository } from '@core/payments/domain/repositories/IWalletRepository';
} from '@core/payments/domain/repositories/MembershipFeeRepository';
import type { IPrizeRepository } from '@core/payments/domain/repositories/PrizeRepository';
import type { ITransactionRepository, IWalletRepository } from '@core/payments/domain/repositories/WalletRepository';
import { InMemoryMembershipFeeRepository, InMemoryMemberPaymentRepository } from '@adapters/payments/persistence/inmemory/InMemoryMembershipFeeRepository';
import { InMemoryPaymentRepository } from '@adapters/payments/persistence/inmemory/InMemoryPaymentRepository';

View File

@@ -4,29 +4,29 @@ import { LoggingModule } from '../../domain/logging/LoggingModule';
import type { Logger } from '@core/shared/application/Logger';
import type { IDriverRepository } from '@core/racing/domain/repositories/IDriverRepository';
import type { ILeagueRepository } from '@core/racing/domain/repositories/ILeagueRepository';
import type { IRaceRepository } from '@core/racing/domain/repositories/IRaceRepository';
import type { IResultRepository } from '@core/racing/domain/repositories/IResultRepository';
import type { IStandingRepository } from '@core/racing/domain/repositories/IStandingRepository';
import type { ILeagueMembershipRepository } from '@core/racing/domain/repositories/ILeagueMembershipRepository';
import type { IRaceRegistrationRepository } from '@core/racing/domain/repositories/IRaceRegistrationRepository';
import type { IPenaltyRepository } from '@core/racing/domain/repositories/IPenaltyRepository';
import type { IProtestRepository } from '@core/racing/domain/repositories/IProtestRepository';
import type { ISeasonRepository } from '@core/racing/domain/repositories/ISeasonRepository';
import type { ISeasonSponsorshipRepository } from '@core/racing/domain/repositories/ISeasonSponsorshipRepository';
import type { ILeagueScoringConfigRepository } from '@core/racing/domain/repositories/ILeagueScoringConfigRepository';
import type { IGameRepository } from '@core/racing/domain/repositories/IGameRepository';
import type { ILeagueWalletRepository } from '@core/racing/domain/repositories/ILeagueWalletRepository';
import type { ITransactionRepository } from '@core/racing/domain/repositories/ITransactionRepository';
import type { ISponsorRepository } from '@core/racing/domain/repositories/ISponsorRepository';
import type { ISponsorshipPricingRepository } from '@core/racing/domain/repositories/ISponsorshipPricingRepository';
import type { ISponsorshipRequestRepository } from '@core/racing/domain/repositories/ISponsorshipRequestRepository';
import type { ITeamRepository } from '@core/racing/domain/repositories/ITeamRepository';
import type { ITeamMembershipRepository } from '@core/racing/domain/repositories/ITeamMembershipRepository';
import type { IDriverStatsRepository } from '@core/racing/domain/repositories/IDriverStatsRepository';
import type { ITeamStatsRepository } from '@core/racing/domain/repositories/ITeamStatsRepository';
import type { IMediaRepository } from '@core/racing/domain/repositories/IMediaRepository';
import type { IDriverRepository } from '@core/racing/domain/repositories/DriverRepository';
import type { ILeagueRepository } from '@core/racing/domain/repositories/LeagueRepository';
import type { IRaceRepository } from '@core/racing/domain/repositories/RaceRepository';
import type { IResultRepository } from '@core/racing/domain/repositories/ResultRepository';
import type { IStandingRepository } from '@core/racing/domain/repositories/StandingRepository';
import type { ILeagueMembershipRepository } from '@core/racing/domain/repositories/LeagueMembershipRepository';
import type { IRaceRegistrationRepository } from '@core/racing/domain/repositories/RaceRegistrationRepository';
import type { IPenaltyRepository } from '@core/racing/domain/repositories/PenaltyRepository';
import type { IProtestRepository } from '@core/racing/domain/repositories/ProtestRepository';
import type { ISeasonRepository } from '@core/racing/domain/repositories/SeasonRepository';
import type { ISeasonSponsorshipRepository } from '@core/racing/domain/repositories/SeasonSponsorshipRepository';
import type { ILeagueScoringConfigRepository } from '@core/racing/domain/repositories/LeagueScoringConfigRepository';
import type { IGameRepository } from '@core/racing/domain/repositories/GameRepository';
import type { ILeagueWalletRepository } from '@core/racing/domain/repositories/LeagueWalletRepository';
import type { ITransactionRepository } from '@core/racing/domain/repositories/TransactionRepository';
import type { ISponsorRepository } from '@core/racing/domain/repositories/SponsorRepository';
import type { ISponsorshipPricingRepository } from '@core/racing/domain/repositories/SponsorshipPricingRepository';
import type { ISponsorshipRequestRepository } from '@core/racing/domain/repositories/SponsorshipRequestRepository';
import type { ITeamRepository } from '@core/racing/domain/repositories/TeamRepository';
import type { ITeamMembershipRepository } from '@core/racing/domain/repositories/TeamMembershipRepository';
import type { IDriverStatsRepository } from '@core/racing/domain/repositories/DriverStatsRepository';
import type { ITeamStatsRepository } from '@core/racing/domain/repositories/TeamStatsRepository';
import type { IMediaRepository } from '@core/racing/domain/repositories/MediaRepository';
import { getPointsSystems } from '@adapters/bootstrap/PointsSystems';

View File

@@ -4,8 +4,8 @@ import { LoggingModule } from '../../domain/logging/LoggingModule';
import type { Logger } from '@core/shared/application/Logger';
import type { IFeedRepository } from '@core/social/domain/repositories/IFeedRepository';
import type { ISocialGraphRepository } from '@core/social/domain/repositories/ISocialGraphRepository';
import type { IFeedRepository } from '@core/social/domain/repositories/FeedRepository';
import type { ISocialGraphRepository } from '@core/social/domain/repositories/SocialGraphRepository';
import {
InMemoryFeedRepository,

View File

@@ -5,8 +5,8 @@ import type { DataSource } from 'typeorm';
import type { Logger } from '@core/shared/application/Logger';
import type { NotificationService } from '@core/notifications/application/ports/NotificationService';
import type { NotificationGatewayRegistry } from '@core/notifications/application/ports/NotificationGateway';
import type { INotificationRepository } from '@core/notifications/domain/repositories/INotificationRepository';
import type { INotificationPreferenceRepository } from '@core/notifications/domain/repositories/INotificationPreferenceRepository';
import type { INotificationRepository } from '@core/notifications/domain/repositories/NotificationRepository';
import type { INotificationPreferenceRepository } from '@core/notifications/domain/repositories/NotificationPreferenceRepository';
import { NotificationOrmEntity } from '@adapters/notifications/persistence/typeorm/entities/NotificationOrmEntity';
import { NotificationPreferenceOrmEntity } from '@adapters/notifications/persistence/typeorm/entities/NotificationPreferenceOrmEntity';

View File

@@ -4,10 +4,10 @@ import type { DataSource } from 'typeorm';
import { LoggingModule } from '../../domain/logging/LoggingModule';
import type { IPaymentRepository } from '@core/payments/domain/repositories/IPaymentRepository';
import type { IMemberPaymentRepository, IMembershipFeeRepository } from '@core/payments/domain/repositories/IMembershipFeeRepository';
import type { IPrizeRepository } from '@core/payments/domain/repositories/IPrizeRepository';
import type { ITransactionRepository, IWalletRepository } from '@core/payments/domain/repositories/IWalletRepository';
import type { IPaymentRepository } from '@core/payments/domain/repositories/PaymentRepository';
import type { IMemberPaymentRepository, IMembershipFeeRepository } from '@core/payments/domain/repositories/MembershipFeeRepository';
import type { IPrizeRepository } from '@core/payments/domain/repositories/PrizeRepository';
import type { ITransactionRepository, IWalletRepository } from '@core/payments/domain/repositories/WalletRepository';
import { PaymentsMemberPaymentOrmEntity } from '@adapters/payments/persistence/typeorm/entities/PaymentsMemberPaymentOrmEntity';
import { PaymentsMembershipFeeOrmEntity } from '@adapters/payments/persistence/typeorm/entities/PaymentsMembershipFeeOrmEntity';

View File

@@ -10,8 +10,8 @@ import { DatabaseModule } from '../../domain/database/DatabaseModule';
import { PostgresSocialPersistenceModule } from '../postgres/PostgresSocialPersistenceModule';
import { SOCIAL_FEED_REPOSITORY_TOKEN, SOCIAL_GRAPH_REPOSITORY_TOKEN } from './SocialPersistenceTokens';
import type { IFeedRepository } from '@core/social/domain/repositories/IFeedRepository';
import type { ISocialGraphRepository } from '@core/social/domain/repositories/ISocialGraphRepository';
import type { IFeedRepository } from '@core/social/domain/repositories/FeedRepository';
import type { ISocialGraphRepository } from '@core/social/domain/repositories/SocialGraphRepository';
import { FeedItemOrmEntity } from '@adapters/social/persistence/typeorm/entities/FeedItemOrmEntity';
import { FriendshipOrmEntity } from '@adapters/social/persistence/typeorm/entities/FriendshipOrmEntity';

View File

@@ -1,6 +1,6 @@
import { AuthenticationState } from '../../domain/value-objects/AuthenticationState';
import { BrowserAuthenticationState } from '../../domain/value-objects/BrowserAuthenticationState';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
/**
* Port for authentication services implementing zero-knowledge login.

View File

@@ -1,4 +1,4 @@
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import { CheckoutConfirmation } from '../../domain/value-objects/CheckoutConfirmation';
import type { CheckoutConfirmationRequestDTO } from '../dto/CheckoutConfirmationRequestDTO';

View File

@@ -1,4 +1,4 @@
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import type { CheckoutInfoDTO } from '../dto/CheckoutInfoDTO';
export interface CheckoutServicePort {

View File

@@ -1,4 +1,4 @@
import type { Result } from '@core/shared/application/Result';
import type { Result } from '@core/shared/domain/Result';
export interface SessionValidatorPort {
validateSession(): Promise<Result<boolean>>;

View File

@@ -4,7 +4,7 @@ import { AutomationLifecycleEmitterPort, LifecycleCallback } from '../ports/Auto
import { LoggerPort } from '../ports/LoggerPort';
import type { IAsyncApplicationService } from '@core/shared/application';
import { OverlayAction, OverlaySyncPort } from '../ports/OverlaySyncPort';
import { ActionAck } from '../ports/IOverlaySyncPort';
import { ActionAck } from '../ports/OverlaySyncPort';
type ConstructorArgs = {
lifecycleEmitter: AutomationLifecycleEmitterPort

View File

@@ -1,6 +1,6 @@
import { AuthenticationState } from '../../domain/value-objects/AuthenticationState';
import type { Logger } from '@core/shared/application';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import type { AuthenticationServicePort } from '../ports/AuthenticationServicePort';
import { SessionLifetime } from '../../domain/value-objects/SessionLifetime';
import type { SessionValidatorPort } from '../ports/SessionValidatorPort';

View File

@@ -1,4 +1,4 @@
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import type { AuthenticationServicePort } from '../ports/AuthenticationServicePort';
import type { Logger } from '@core/shared/application';

View File

@@ -1,4 +1,4 @@
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import { RaceCreationResult } from '../../domain/value-objects/RaceCreationResult';
import type { CheckoutServicePort } from '../ports/CheckoutServicePort';
import type { Logger } from '@core/shared/application';

View File

@@ -1,4 +1,4 @@
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import type { Logger } from '@core/shared/application';
import type { CheckoutServicePort } from '../ports/CheckoutServicePort';
import type { CheckoutConfirmationPort } from '../ports/CheckoutConfirmationPort';

View File

@@ -1,4 +1,4 @@
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import type { AuthenticationServicePort } from '../ports/AuthenticationServicePort';
import type { Logger } from '@core/shared/application/Logger';

View File

@@ -1,5 +1,5 @@
import type { AuthenticationServicePort } from '../ports/AuthenticationServicePort';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import { BrowserAuthenticationState } from '../../domain/value-objects/BrowserAuthenticationState';
import type { Logger } from '@core/shared/application';

View File

@@ -1,5 +1,5 @@
import type { IDomainValidationService } from '@core/shared/domain';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
/**
* Configuration for page state validation.

View File

@@ -1,7 +1,7 @@
import { StepId } from '../value-objects/StepId';
import type { IDomainValidationService } from '@core/shared/domain';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import { SessionState } from '../value-objects/SessionState';
export interface ValidationResult {

View File

@@ -1,8 +1,8 @@
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import { CheckoutPrice } from '../../../domain/value-objects/CheckoutPrice';
import { CheckoutState } from '../../../domain/value-objects/CheckoutState';
import type { CheckoutInfoDTO } from '../../../application/dto/CheckoutInfoDTO';
import { IRACING_SELECTORS } from './dom/IRacingSelectors';
import { IRACING_SELECTORS } from './dom/RacingSelectors';
interface Page {
locator(_selector: string): Locator;

View File

@@ -1,7 +1,7 @@
import type { Page } from 'playwright';
import type { LoggerPort } from 'apps/companion/main/automation/application/ports/LoggerPort';
import type { IPlaywrightAuthFlow } from './PlaywrightAuthFlow';
import { IRACING_URLS, IRACING_SELECTORS, IRACING_TIMEOUTS } from '../dom/IRacingSelectors';
import { IRACING_URLS, IRACING_SELECTORS, IRACING_TIMEOUTS } from '../dom/RacingSelectors';
import { AuthenticationGuard } from './AuthenticationGuard';
export class IRacingPlaywrightAuthFlow implements IPlaywrightAuthFlow {

View File

@@ -5,7 +5,7 @@ import type { AuthenticationServicePort } from '../../../../application/ports/Au
import type { LoggerPort } from '../../../../application/ports/LoggerPort';
import { AuthenticationState } from '../../../../domain/value-objects/AuthenticationState';
import { BrowserAuthenticationState } from '../../../../domain/value-objects/BrowserAuthenticationState';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import { PlaywrightBrowserSession } from '../core/PlaywrightBrowserSession';
import { SessionCookieStore } from './SessionCookieStore';
import type { IPlaywrightAuthFlow } from './PlaywrightAuthFlow';

View File

@@ -2,7 +2,7 @@ import * as fs from 'fs/promises';
import * as path from 'path';
import { AuthenticationState } from '../../../../domain/value-objects/AuthenticationState';
import { CookieConfiguration } from '../../../../domain/value-objects/CookieConfiguration';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import type { LoggerPort } from '../../../../application/ports/LoggerPort';
interface Cookie {

View File

@@ -16,17 +16,17 @@ import type { ModalResultDTO } from '../../../../application/dto/ModalResultDTO'
import type { AutomationResultDTO } from '../../../../application/dto/AutomationResultDTO';
import type { AuthenticationServicePort } from '../../../../application/ports/AuthenticationServicePort';
import type { LoggerPort } from '../../../../application/ports/LoggerPort';
import { Result } from '@core/shared/application/Result';
import { IRACING_SELECTORS, IRACING_URLS, IRACING_TIMEOUTS, BLOCKED_KEYWORDS } from '../dom/IRacingSelectors';
import { Result } from '@core/shared/domain/Result';
import { IRACING_SELECTORS, IRACING_URLS, IRACING_TIMEOUTS, BLOCKED_KEYWORDS } from '../dom/RacingSelectors';
import { SessionCookieStore } from '../auth/SessionCookieStore';
import { PlaywrightBrowserSession } from './PlaywrightBrowserSession';
import { PageStateValidator, PageStateValidation, PageStateValidationResult } from 'apps/companion/main/automation/domain/services/PageStateValidator';
import { IRacingDomNavigator } from '../dom/IRacingDomNavigator';
import { IRacingDomNavigator } from '../dom/RacingDomNavigator';
import { SafeClickService } from '../dom/SafeClickService';
import { IRacingDomInteractor } from '../dom/IRacingDomInteractor';
import { IRacingDomInteractor } from '../dom/RacingDomInteractor';
import { PlaywrightAuthSessionService } from '../auth/PlaywrightAuthSessionService';
import { IRacingPlaywrightAuthFlow } from '../auth/IRacingPlaywrightAuthFlow';
import { IRacingPlaywrightAuthFlow } from '../auth/RacingPlaywrightAuthFlow';
import { WizardStepOrchestrator } from './WizardStepOrchestrator';

View File

@@ -10,15 +10,15 @@ import { CheckoutState } from '../../../../domain/value-objects/CheckoutState';
import { CheckoutConfirmation } from '../../../../domain/value-objects/CheckoutConfirmation';
import type { PlaywrightConfig } from './PlaywrightAutomationAdapter';
import { PlaywrightBrowserSession } from './PlaywrightBrowserSession';
import { IRacingDomNavigator } from '../dom/IRacingDomNavigator';
import { IRacingDomInteractor } from '../dom/IRacingDomInteractor';
import { IRACING_SELECTORS } from '../dom/IRacingSelectors';
import { IRacingDomNavigator } from '../dom/RacingDomNavigator';
import { IRacingDomInteractor } from '../dom/RacingDomInteractor';
import { IRACING_SELECTORS } from '../dom/RacingSelectors';
import type {
PageStateValidation,
PageStateValidationResult,
} from '../../../../domain/services/PageStateValidator';
import type { Result } from '@core/shared/application/Result';
import type { Result } from '@core/shared/domain/Result';
interface WizardStepOrchestratorDeps {
config: Required<PlaywrightConfig>;

View File

@@ -6,7 +6,7 @@ import type { ModalResultDTO } from '../../../../application/dto/ModalResultDTO'
import { StepId } from '../../../../domain/value-objects/StepId';
import type { PlaywrightConfig } from '../core/PlaywrightAutomationAdapter';
import { PlaywrightBrowserSession } from '../core/PlaywrightBrowserSession';
import { IRACING_SELECTORS, IRACING_TIMEOUTS } from './IRacingSelectors';
import { IRACING_SELECTORS, IRACING_TIMEOUTS } from './RacingSelectors';
import { SafeClickService } from './SafeClickService';

View File

@@ -4,7 +4,7 @@ import type { NavigationResultDTO } from '../../../../application/dto/Navigation
import type { WaitResultDTO } from '../../../../application/dto/WaitResultDTO';
import type { PlaywrightConfig } from '../core/PlaywrightAutomationAdapter';
import { PlaywrightBrowserSession } from '../core/PlaywrightBrowserSession';
import { IRACING_SELECTORS, IRACING_TIMEOUTS, IRACING_URLS } from './IRacingSelectors';
import { IRACING_SELECTORS, IRACING_TIMEOUTS, IRACING_URLS } from './RacingSelectors';
export class IRacingDomNavigator {
private static readonly STEP_TO_PAGE_MAP: Record<number, string> = {

View File

@@ -1,6 +1,6 @@
import type { Page } from 'playwright';
import type { LoggerPort } from 'apps/companion/main/automation/application/ports/LoggerPort';
import { IRACING_SELECTORS, BLOCKED_KEYWORDS } from './IRacingSelectors';
import { IRACING_SELECTORS, BLOCKED_KEYWORDS } from './RacingSelectors';
import type { PlaywrightConfig } from '../core/PlaywrightAutomationAdapter';
import { PlaywrightBrowserSession } from '../core/PlaywrightBrowserSession';

View File

@@ -6,7 +6,7 @@ import type { ClickResultDTO } from '../../../../application/dto/ClickResultDTO'
import type { WaitResultDTO } from '../../../../application/dto/WaitResultDTO';
import type { ModalResultDTO } from '../../../../application/dto/ModalResultDTO';
import type { AutomationResultDTO } from '../../../../application/dto/AutomationResultDTO';
import type { IAutomationLifecycleEmitter, LifecycleCallback } from '../../IAutomationLifecycleEmitter';
import type { IAutomationLifecycleEmitter, LifecycleCallback } from '../../AutomationLifecycleEmitter';
interface MockConfig {
simulateFailures?: boolean;

View File

@@ -5,7 +5,7 @@
import type { BrowserWindow } from 'electron';
import { ipcMain } from 'electron';
import { Result } from '@core/shared/application/Result';
import { Result } from '@core/shared/domain/Result';
import type { CheckoutConfirmationPort } from '../../../application/ports/CheckoutConfirmationPort';
import type { CheckoutConfirmationRequestDTO } from '../../../application/dto/CheckoutConfirmationRequestDTO';
import { CheckoutConfirmation } from '../../../domain/value-objects/CheckoutConfirmation';

View File

@@ -18,7 +18,7 @@ import { InitiateLoginUseCase } from 'apps/companion/main/automation/application
import { ClearSessionUseCase } from 'apps/companion/main/automation/application/use-cases/ClearSessionUseCase';
import { ConfirmCheckoutUseCase } from 'apps/companion/main/automation/application/use-cases/ConfirmCheckoutUseCase';
import { OverlaySyncService } from 'apps/companion/main/automation/application/services/OverlaySyncService';
import type { IAutomationLifecycleEmitter } from '@core/automation/infrastructure//IAutomationLifecycleEmitter';
import type { IAutomationLifecycleEmitter } from '@core/automation/infrastructure//AutomationLifecycleEmitter';
// Infrastructure
import { InMemorySessionRepository } from 'apps/companion/main/automation/infrastructure/repositories/InMemorySessionRepository';

View File

@@ -6,7 +6,7 @@ import { StepId } from 'apps/companion/main/automation/domain/value-objects/Step
import { AuthenticationState } from 'apps/companion/main/automation/domain/value-objects/AuthenticationState';
import { ElectronCheckoutConfirmationAdapter } from 'core/automation/infrastructure//ipc/ElectronCheckoutConfirmationAdapter';
import type { OverlayAction } from 'apps/companion/main/automation/application/ports/OverlaySyncPort';
import type { IAutomationLifecycleEmitter } from 'core/automation/infrastructure//IAutomationLifecycleEmitter';
import type { IAutomationLifecycleEmitter } from 'core/automation/infrastructure//AutomationLifecycleEmitter';
let progressMonitorInterval: NodeJS.Timeout | null = null;
let lifecycleSubscribed = false;