website refactor

This commit is contained in:
2026-01-14 02:02:24 +01:00
parent 8d7c709e0c
commit 4522d41aef
291 changed files with 12763 additions and 9309 deletions

View File

@@ -4,12 +4,10 @@ import { Container } from 'inversify';
import { ApiModule } from './modules/api.module';
import { AuthModule } from './modules/auth.module';
import { CoreModule } from './modules/core.module';
import { DashboardModule } from './modules/dashboard.module';
import { DriverModule } from './modules/driver.module';
import { LeagueModule } from './modules/league.module';
import { TeamModule } from './modules/team.module';
import { RaceModule } from './modules/race.module';
import { AnalyticsModule } from './modules/analytics.module';
import { LandingModule } from './modules/landing.module';
import { PolicyModule } from './modules/policy.module';
import { SponsorModule } from './modules/sponsor.module';
@@ -28,8 +26,6 @@ export function createContainer(): Container {
LeagueModule,
DriverModule,
TeamModule,
DashboardModule,
AnalyticsModule,
RaceModule,
LandingModule,
PolicyModule,

View File

@@ -11,11 +11,9 @@ export * from './hooks/useReactQueryWithApiError';
export * from './providers/ContainerProvider';
// Modules
export * from './modules/analytics.module';
export * from './modules/api.module';
export * from './modules/auth.module';
export * from './modules/core.module';
export * from './modules/dashboard.module';
export * from './modules/driver.module';
export * from './modules/league.module';
export * from './modules/race.module';

View File

@@ -1,15 +0,0 @@
import { AnalyticsApiClient } from '@/lib/api/analytics/AnalyticsApiClient';
import { DashboardService } from '@/lib/services/analytics/DashboardService';
import { ContainerModule } from 'inversify';
import { ANALYTICS_API_CLIENT_TOKEN, ANALYTICS_DASHBOARD_SERVICE_TOKEN } from '../tokens';
export const AnalyticsModule = new ContainerModule((options) => {
const bind = options.bind;
bind(ANALYTICS_DASHBOARD_SERVICE_TOKEN)
.toDynamicValue((ctx) => {
const apiClient = ctx.get<AnalyticsApiClient>(ANALYTICS_API_CLIENT_TOKEN);
return new DashboardService(apiClient);
})
.inSingletonScope();
});

View File

@@ -20,11 +20,8 @@ export const AuthModule = new ContainerModule((options) => {
})
.inSingletonScope();
// Auth Service
// Auth Service - now creates its own dependencies
bind<AuthService>(AUTH_SERVICE_TOKEN)
.toDynamicValue((ctx) => {
const authApiClient = ctx.get<AuthApiClient>(AUTH_API_CLIENT_TOKEN);
return new AuthService(authApiClient);
})
.to(AuthService)
.inSingletonScope();
});

View File

@@ -1,15 +0,0 @@
import { ContainerModule } from 'inversify';
import { DASHBOARD_SERVICE_TOKEN, DASHBOARD_API_CLIENT_TOKEN } from '../tokens';
import { DashboardService } from '@/lib/services/dashboard/DashboardService';
import { DashboardApiClient } from '@/lib/api/dashboard/DashboardApiClient';
export const DashboardModule = new ContainerModule((options) => {
const bind = options.bind;
bind(DASHBOARD_SERVICE_TOKEN)
.toDynamicValue((ctx) => {
const apiClient = ctx.get<DashboardApiClient>(DASHBOARD_API_CLIENT_TOKEN);
return new DashboardService(apiClient);
})
.inSingletonScope();
});

View File

@@ -1,6 +1,7 @@
import { ContainerModule } from 'inversify';
import { DRIVER_SERVICE_TOKEN, DRIVER_API_CLIENT_TOKEN } from '../tokens';
import { DRIVER_SERVICE_TOKEN, DRIVER_API_CLIENT_TOKEN, ONBOARDING_SERVICE_TOKEN } from '../tokens';
import { DriverService } from '@/lib/services/drivers/DriverService';
import { OnboardingService } from '@/lib/services/onboarding/OnboardingService';
import { DriversApiClient } from '@/lib/api/drivers/DriversApiClient';
export const DriverModule = new ContainerModule((options) => {
@@ -12,4 +13,10 @@ export const DriverModule = new ContainerModule((options) => {
return new DriverService(apiClient);
})
.inSingletonScope();
bind(ONBOARDING_SERVICE_TOKEN)
.toDynamicValue(() => {
return new OnboardingService();
})
.inSingletonScope();
});

View File

@@ -19,79 +19,58 @@ export const PAYMENT_API_CLIENT_TOKEN = Symbol.for('Api.PaymentClient');
export const WALLET_API_CLIENT_TOKEN = Symbol.for('Api.WalletClient');
export const AUTH_API_CLIENT_TOKEN = Symbol.for('Api.AuthClient');
export const ANALYTICS_API_CLIENT_TOKEN = Symbol.for('Api.AnalyticsClient');
export const DASHBOARD_API_CLIENT_TOKEN = Symbol.for('Api.DashboardClient');
export const SPONSOR_API_CLIENT_TOKEN = Symbol.for('Api.SponsorClient');
export const POLICY_API_CLIENT_TOKEN = Symbol.for('Api.PolicyClient');
export const PROTEST_API_CLIENT_TOKEN = Symbol.for('Api.ProtestClient');
export const PENALTY_API_CLIENT_TOKEN = Symbol.for('Api.PenaltyClient');
export const DASHBOARD_API_CLIENT_TOKEN = Symbol.for('Api.DashboardClient');
// Domain Services
import type { LeagueService } from '@/lib/services/leagues/LeagueService';
import type { LeagueSettingsService } from '@/lib/services/leagues/LeagueSettingsService';
import type { LeagueStewardingService } from '@/lib/services/leagues/LeagueStewardingService';
import type { LeagueWalletService } from '@/lib/services/leagues/LeagueWalletService';
import type { LeagueMembershipService } from '@/lib/services/leagues/LeagueMembershipService';
import type { LeagueWalletService } from '@/lib/services/leagues/LeagueWalletService';
import type { DriverService } from '@/lib/services/drivers/DriverService';
import type { DriverRegistrationService } from '@/lib/services/drivers/DriverRegistrationService';
import type { TeamService } from '@/lib/services/teams/TeamService';
import type { TeamJoinService } from '@/lib/services/teams/TeamJoinService';
import type { RaceService } from '@/lib/services/races/RaceService';
import type { RaceResultsService } from '@/lib/services/races/RaceResultsService';
import type { RaceStewardingService } from '@/lib/services/races/RaceStewardingService';
import type { SponsorService } from '@/lib/services/sponsors/SponsorService';
import type { SponsorshipService } from '@/lib/services/sponsors/SponsorshipService';
import type { PaymentService } from '@/lib/services/payments/PaymentService';
import type { WalletService } from '@/lib/services/payments/WalletService';
import type { MembershipFeeService } from '@/lib/services/payments/MembershipFeeService';
import type { MediaService } from '@/lib/services/media/MediaService';
import type { AvatarService } from '@/lib/services/media/AvatarService';
import type { AnalyticsService } from '@/lib/services/analytics/AnalyticsService';
import type { DashboardService as AnalyticsDashboardService } from '@/lib/services/analytics/DashboardService';
import type { DashboardService } from '@/lib/services/dashboard/DashboardService';
// These services are created as needed
import type { AuthService } from '@/lib/services/auth/AuthService';
import type { SessionService } from '@/lib/services/auth/SessionService';
import type { ProtestService } from '@/lib/services/protests/ProtestService';
import type { PenaltyService } from '@/lib/services/penalties/PenaltyService';
import type { OnboardingService } from '@/lib/services/onboarding/OnboardingService';
import type { PolicyService } from '@/lib/services/policy/PolicyService';
import type { LandingService } from '@/lib/services/landing/LandingService';
import type { AdminService } from '@/lib/services/admin/AdminService';
import type { OnboardingService } from '@/lib/services/onboarding/OnboardingService';
export const LEAGUE_SERVICE_TOKEN = Symbol.for('Service.League') as symbol & { type: LeagueService };
export const LEAGUE_SETTINGS_SERVICE_TOKEN = Symbol.for('Service.LeagueSettings') as symbol & { type: LeagueSettingsService };
export const LEAGUE_STEWARDING_SERVICE_TOKEN = Symbol.for('Service.LeagueStewarding') as symbol & { type: LeagueStewardingService };
export const LEAGUE_WALLET_SERVICE_TOKEN = Symbol.for('Service.LeagueWallet') as symbol & { type: LeagueWalletService };
export const LEAGUE_MEMBERSHIP_SERVICE_TOKEN = Symbol.for('Service.LeagueMembership') as symbol & { type: LeagueMembershipService };
export const LEAGUE_WALLET_SERVICE_TOKEN = Symbol.for('Service.LeagueWallet') as symbol & { type: LeagueWalletService };
export const DRIVER_SERVICE_TOKEN = Symbol.for('Service.Driver') as symbol & { type: DriverService };
export const DRIVER_REGISTRATION_SERVICE_TOKEN = Symbol.for('Service.DriverRegistration') as symbol & { type: DriverRegistrationService };
export const TEAM_SERVICE_TOKEN = Symbol.for('Service.Team') as symbol & { type: TeamService };
export const TEAM_JOIN_SERVICE_TOKEN = Symbol.for('Service.TeamJoin') as symbol & { type: TeamJoinService };
export const TEAM_SERVICE_TOKEN = Symbol.for('Service.Team');
export const RACE_SERVICE_TOKEN = Symbol.for('Service.Race') as symbol & { type: RaceService };
export const RACE_RESULTS_SERVICE_TOKEN = Symbol.for('Service.RaceResults') as symbol & { type: RaceResultsService };
export const RACE_STEWARDING_SERVICE_TOKEN = Symbol.for('Service.RaceStewarding') as symbol & { type: RaceStewardingService };
export const RACE_SERVICE_TOKEN = Symbol.for('Service.Race');
export const SPONSOR_SERVICE_TOKEN = Symbol.for('Service.Sponsor') as symbol & { type: SponsorService };
export const SPONSORSHIP_SERVICE_TOKEN = Symbol.for('Service.Sponsorship') as symbol & { type: SponsorshipService };
export const SPONSOR_SERVICE_TOKEN = Symbol.for('Service.Sponsor');
export const PAYMENT_SERVICE_TOKEN = Symbol.for('Service.Payment') as symbol & { type: PaymentService };
export const WALLET_SERVICE_TOKEN = Symbol.for('Service.Wallet') as symbol & { type: WalletService };
export const MEMBERSHIP_FEE_SERVICE_TOKEN = Symbol.for('Service.MembershipFee') as symbol & { type: MembershipFeeService };
export const PAYMENT_SERVICE_TOKEN = Symbol.for('Service.Payment');
export const WALLET_SERVICE_TOKEN = Symbol.for('Service.Wallet');
export const MEDIA_SERVICE_TOKEN = Symbol.for('Service.Media') as symbol & { type: MediaService };
export const AVATAR_SERVICE_TOKEN = Symbol.for('Service.Avatar') as symbol & { type: AvatarService };
export const ANALYTICS_SERVICE_TOKEN = Symbol.for('Service.Analytics') as symbol & { type: AnalyticsService };
export const ANALYTICS_DASHBOARD_SERVICE_TOKEN = Symbol.for('Service.AnalyticsDashboard') as symbol & { type: AnalyticsDashboardService };
export const DASHBOARD_SERVICE_TOKEN = Symbol.for('Service.Dashboard') as symbol & { type: DashboardService };
export const MEDIA_SERVICE_TOKEN = Symbol.for('Service.Media');
export const AUTH_SERVICE_TOKEN = Symbol.for('Service.Auth') as symbol & { type: AuthService };
export const SESSION_SERVICE_TOKEN = Symbol.for('Service.Session') as symbol & { type: SessionService };
export const PROTEST_SERVICE_TOKEN = Symbol.for('Service.Protest') as symbol & { type: ProtestService };
export const PENALTY_SERVICE_TOKEN = Symbol.for('Service.Penalty') as symbol & { type: PenaltyService };
export const PENALTY_SERVICE_TOKEN = Symbol.for('Service.Penalty');
export const ONBOARDING_SERVICE_TOKEN = Symbol.for('Service.Onboarding') as symbol & { type: OnboardingService };
export const POLICY_SERVICE_TOKEN = Symbol.for('Service.Policy') as symbol & { type: PolicyService };
export const LANDING_SERVICE_TOKEN = Symbol.for('Service.Landing') as symbol & { type: LandingService };
export const POLICY_SERVICE_TOKEN = Symbol.for('Service.Policy');
export const ADMIN_SERVICE_TOKEN = Symbol.for('Service.Admin') as symbol & { type: AdminService };
// Additional league services
export const LEAGUE_SETTINGS_SERVICE_TOKEN = Symbol.for('Service.LeagueSettings');
export const LEAGUE_STEWARDING_SERVICE_TOKEN = Symbol.for('Service.LeagueStewarding');
export const PROTEST_SERVICE_TOKEN = Symbol.for('Service.Protest');
export const RACE_RESULTS_SERVICE_TOKEN = Symbol.for('Service.RaceResults');
export const RACE_STEWARDING_SERVICE_TOKEN = Symbol.for('Service.RaceStewarding');
export const LANDING_SERVICE_TOKEN = Symbol.for('Service.Landing');
// Onboarding Services
export const ONBOARDING_SERVICE_TOKEN = Symbol.for('Service.Onboarding') as symbol & { type: OnboardingService };