website refactor

This commit is contained in:
2026-01-16 15:20:25 +01:00
parent 7e02fc3ea5
commit 37b1aa626c
325 changed files with 2167 additions and 2782 deletions

View File

@@ -1,14 +1,10 @@
import { describe, it, expect, vi, type Mock } from 'vitest';
import { ForgotPasswordUseCase } from './ForgotPasswordUseCase';
import type { AuthRepository } from '../../domain/repositories/AuthRepository';
import type { MagicLinkRepository } from '../../domain/repositories/MagicLinkRepository';
import type { MagicLinkNotificationPort } from '../../domain/ports/MagicLinkNotificationPort';
import type { Logger } from '@core/shared/application';
import type { Logger } from '@core/shared/domain/Logger';
import { Result } from '@core/shared/domain/Result';
import { describe, expect, it, vi, type Mock } from 'vitest';
import { User } from '../../domain/entities/User';
import { UserId } from '../../domain/value-objects/UserId';
import { PasswordHash } from '../../domain/value-objects/PasswordHash';
import { EmailAddress } from '../../domain/value-objects/EmailAddress';
import { UserId } from '../../domain/value-objects/UserId';
import { ForgotPasswordUseCase } from './ForgotPasswordUseCase';
describe('ForgotPasswordUseCase', () => {
let authRepo: {

View File

@@ -1,9 +1,8 @@
import type { Logger } from '@core/shared/domain/Logger';
import { vi, type Mock } from 'vitest';
import { GetCurrentSessionUseCase } from './GetCurrentSessionUseCase';
import { User } from '../../domain/entities/User';
import { UserRepository, StoredUser } from '../../domain/repositories/UserRepository';
import type { Logger } from '@core/shared/application';
import { Result } from '@core/shared/domain/Result';
import { StoredUser } from '../../domain/repositories/UserRepository';
import { GetCurrentSessionUseCase } from './GetCurrentSessionUseCase';
describe('GetCurrentSessionUseCase', () => {
let useCase: GetCurrentSessionUseCase;

View File

@@ -1,8 +1,7 @@
import { User } from '../../domain/entities/User';
import { UserRepository } from '../../domain/repositories/UserRepository';
import { Result } from '@core/shared/domain/Result';
import { Result } from '@/shared/domain/Result';
import type { Logger } from '@core/shared/domain/Logger';
import type { ApplicationErrorCode } from '@core/shared/errors/ApplicationErrorCode';
import type { Logger } from '@core/shared/application';
import { User } from '../../domain/entities/User';
export type GetCurrentSessionInput = {
userId: string;

View File

@@ -1,8 +1,7 @@
import { describe, it, expect, vi, type Mock } from 'vitest';
import { GetCurrentUserSessionUseCase } from './GetCurrentUserSessionUseCase';
import type { Logger } from '@core/shared/domain/Logger';
import { describe, expect, it, vi, type Mock } from 'vitest';
import type { AuthSession, IdentitySessionPort } from '../ports/IdentitySessionPort';
import type { Logger } from '@core/shared/application';
import { Result } from '@core/shared/domain/Result';
import { GetCurrentUserSessionUseCase } from './GetCurrentUserSessionUseCase';
describe('GetCurrentUserSessionUseCase', () => {
let sessionPort: {

View File

@@ -1,7 +1,7 @@
import type { AuthSession, IdentitySessionPort } from '../ports/IdentitySessionPort';
import type { Logger } from '@core/shared/domain/Logger';
import { Result } from '@core/shared/domain/Result';
import type { ApplicationErrorCode } from '@core/shared/errors/ApplicationErrorCode';
import type { Logger } from '@core/shared/application';
import type { AuthSession, IdentitySessionPort } from '../ports/IdentitySessionPort';
export type GetCurrentUserSessionInput = void;

View File

@@ -1,12 +1,6 @@
import { describe, it, expect, vi, type Mock } from 'vitest';
import type { Logger } from '@core/shared/domain/Logger';
import { describe, expect, it, vi, type Mock } from 'vitest';
import { GetUserUseCase } from './GetUserUseCase';
import type { UserRepository } from '../../domain/repositories/UserRepository';
import type { Logger } from '@core/shared/application';
import { Result } from '@core/shared/domain/Result';
import { User } from '../../domain/entities/User';
import { UserId } from '../../domain/value-objects/UserId';
import { PasswordHash } from '../../domain/value-objects/PasswordHash';
import { EmailAddress } from '../../domain/value-objects/EmailAddress';
describe('GetUserUseCase', () => {
let userRepo: {

View File

@@ -1,9 +1,8 @@
import { describe, it, expect, vi, type Mock } from 'vitest';
import { HandleAuthCallbackUseCase } from './HandleAuthCallbackUseCase';
import type { Logger } from '@core/shared/domain/Logger';
import { describe, expect, it, vi, type Mock } from 'vitest';
import type { IdentityProviderPort } from '../ports/IdentityProviderPort';
import type { IdentitySessionPort } from '../ports/IdentitySessionPort';
import type { Logger } from '@core/shared/application';
import { Result } from '@core/shared/domain/Result';
import { HandleAuthCallbackUseCase } from './HandleAuthCallbackUseCase';
describe('HandleAuthCallbackUseCase', () => {
let provider: {

View File

@@ -1,8 +1,8 @@
import type { AuthCallbackCommand, AuthenticatedUser, IdentityProviderPort } from '../ports/IdentityProviderPort';
import type { AuthSession, IdentitySessionPort } from '../ports/IdentitySessionPort';
import type { Logger } from '@core/shared/domain/Logger';
import { Result } from '@core/shared/domain/Result';
import type { ApplicationErrorCode } from '@core/shared/errors/ApplicationErrorCode';
import type { Logger } from '@core/shared/application';
import type { AuthCallbackCommand, AuthenticatedUser, IdentityProviderPort } from '../ports/IdentityProviderPort';
import type { AuthSession, IdentitySessionPort } from '../ports/IdentitySessionPort';
export type HandleAuthCallbackInput = AuthCallbackCommand;

View File

@@ -1,13 +1,9 @@
import { describe, it, expect, vi, type Mock } from 'vitest';
import { LoginUseCase } from './LoginUseCase';
import type { AuthRepository } from '../../domain/repositories/AuthRepository';
import type { PasswordHashingService } from '../../domain/services/PasswordHashingService';
import type { Logger } from '@core/shared/application';
import { Result } from '@core/shared/domain/Result';
import type { Logger } from '@core/shared/domain/Logger';
import { describe, expect, it, vi, type Mock } from 'vitest';
import { User } from '../../domain/entities/User';
import { UserId } from '../../domain/value-objects/UserId';
import { PasswordHash } from '../../domain/value-objects/PasswordHash';
import { EmailAddress } from '../../domain/value-objects/EmailAddress';
import { UserId } from '../../domain/value-objects/UserId';
import { LoginUseCase } from './LoginUseCase';
describe('LoginUseCase', () => {
let authRepo: {

View File

@@ -1,8 +1,7 @@
import { describe, it, expect, vi, type Mock, beforeEach } from 'vitest';
import { LoginWithEmailUseCase } from './LoginWithEmailUseCase';
import type { UserRepository } from '../../domain/repositories/UserRepository';
import type { Logger } from '@core/shared/domain/Logger';
import { beforeEach, describe, expect, it, vi, type Mock } from 'vitest';
import type { IdentitySessionPort } from '../ports/IdentitySessionPort';
import type { Logger } from '@core/shared/application';
import { LoginWithEmailUseCase } from './LoginWithEmailUseCase';
// Mock the PasswordHash module
vi.mock('@core/identity/domain/value-objects/PasswordHash', () => ({

View File

@@ -4,12 +4,11 @@
* Authenticates a user with email and password.
*/
import type { UserRepository } from '../../domain/repositories/UserRepository';
import type { IdentitySessionPort } from '../ports/IdentitySessionPort';
import { PasswordHash } from '@/identity/domain/value-objects/PasswordHash';
import type { Logger } from '@core/shared/domain/Logger';
import { Result } from '@core/shared/domain/Result';
import type { ApplicationErrorCode } from '@core/shared/errors/ApplicationErrorCode';
import type { Logger } from '@core/shared/application';
import { PasswordHash } from '@core/identity/domain/value-objects/PasswordHash';
import type { IdentitySessionPort } from '../ports/IdentitySessionPort';
export type LoginWithEmailInput = {
email: string;

View File

@@ -1,8 +1,7 @@
import { describe, it, expect, vi, type Mock } from 'vitest';
import { LogoutUseCase } from './LogoutUseCase';
import type { Logger } from '@core/shared/domain/Logger';
import { describe, expect, it, vi, type Mock } from 'vitest';
import type { IdentitySessionPort } from '../ports/IdentitySessionPort';
import type { Logger } from '@core/shared/application';
import { Result } from '@core/shared/domain/Result';
import { LogoutUseCase } from './LogoutUseCase';
describe('LogoutUseCase', () => {
let sessionPort: {

View File

@@ -1,14 +1,9 @@
import { describe, it, expect, vi, type Mock } from 'vitest';
import { ResetPasswordUseCase } from './ResetPasswordUseCase';
import type { AuthRepository } from '../../domain/repositories/AuthRepository';
import type { MagicLinkRepository } from '../../domain/repositories/MagicLinkRepository';
import type { PasswordHashingService } from '../../domain/services/PasswordHashingService';
import type { Logger } from '@core/shared/application';
import { Result } from '@core/shared/domain/Result';
import type { Logger } from '@core/shared/domain/Logger';
import { describe, expect, it, vi, type Mock } from 'vitest';
import { User } from '../../domain/entities/User';
import { UserId } from '../../domain/value-objects/UserId';
import { PasswordHash } from '../../domain/value-objects/PasswordHash';
import { EmailAddress } from '../../domain/value-objects/EmailAddress';
import { UserId } from '../../domain/value-objects/UserId';
import { ResetPasswordUseCase } from './ResetPasswordUseCase';
describe('ResetPasswordUseCase', () => {
let authRepo: {

View File

@@ -1,10 +1,6 @@
import { describe, it, expect, vi, type Mock } from 'vitest';
import type { Logger } from '@core/shared/domain/Logger';
import { describe, expect, it, vi, type Mock } from 'vitest';
import { SignupSponsorUseCase } from './SignupSponsorUseCase';
import type { AuthRepository } from '../../domain/repositories/AuthRepository';
import type { CompanyRepository } from '../../domain/repositories/CompanyRepository';
import type { PasswordHashingService } from '../../domain/services/PasswordHashingService';
import type { Logger } from '@core/shared/application';
import { Result } from '@core/shared/domain/Result';
describe('SignupSponsorUseCase', () => {
let authRepo: {

View File

@@ -1,11 +1,9 @@
import { describe, it, expect, vi, type Mock } from 'vitest';
import { SignupUseCase } from './SignupUseCase';
import type { AuthRepository } from '../../domain/repositories/AuthRepository';
import type { PasswordHashingService } from '../../domain/services/PasswordHashingService';
import type { Logger } from '@core/shared/application';
import type { Logger } from '@core/shared/domain/Logger';
import { describe, expect, it, vi, type Mock } from 'vitest';
import { User } from '../../domain/entities/User';
import { UserId } from '../../domain/value-objects/UserId';
import { PasswordHash } from '../../domain/value-objects/PasswordHash';
import { UserId } from '../../domain/value-objects/UserId';
import { SignupUseCase } from './SignupUseCase';
describe('SignupUseCase', () => {
let authRepo: {

View File

@@ -1,9 +1,7 @@
import { describe, it, expect, vi, type Mock } from 'vitest';
import { SignupWithEmailUseCase } from './SignupWithEmailUseCase';
import type { UserRepository } from '../../domain/repositories/UserRepository';
import type { Logger } from '@core/shared/domain/Logger';
import { describe, expect, it, vi, type Mock } from 'vitest';
import type { IdentitySessionPort } from '../ports/IdentitySessionPort';
import type { Logger } from '@core/shared/application';
import { Result } from '@core/shared/domain/Result';
import { SignupWithEmailUseCase } from './SignupWithEmailUseCase';
describe('SignupWithEmailUseCase', () => {
let userRepository: {

View File

@@ -1,15 +1,8 @@
/**
* Signup with Email Use Case
*
* Creates a new user account with email and password.
*/
import type { UserRepository, StoredUser } from '../../domain/repositories/UserRepository';
import type { AuthenticatedUser } from '../ports/IdentityProviderPort';
import type { IdentitySessionPort } from '../ports/IdentitySessionPort';
import { Result } from '@core/shared/domain/Result';
import type { ApplicationErrorCode } from '@core/shared/errors/ApplicationErrorCode';
import type { Logger } from '@core/shared/application';
import type { StoredUser } from '../../domain/repositories/UserRepository';
import type { AuthenticatedUser } from '../ports/IdentityProviderPort';
import type { IdentitySessionPort } from '../ports/IdentitySessionPort';
export type SignupWithEmailInput = {
email: string;

View File

@@ -1,8 +1,7 @@
import { describe, it, expect, vi, type Mock } from 'vitest';
import { StartAuthUseCase } from './StartAuthUseCase';
import type { Logger } from '@core/shared/domain/Logger';
import { describe, expect, it, vi, type Mock } from 'vitest';
import type { IdentityProviderPort } from '../ports/IdentityProviderPort';
import type { Logger } from '@core/shared/application';
import { Result } from '@core/shared/domain/Result';
import { StartAuthUseCase } from './StartAuthUseCase';
describe('StartAuthUseCase', () => {
let provider: {

View File

@@ -1,7 +1,7 @@
import type { IdentityProviderPort, AuthProvider, StartAuthCommand } from '../ports/IdentityProviderPort';
import type { Logger } from '@core/shared/domain/Logger';
import { Result } from '@core/shared/domain/Result';
import type { ApplicationErrorCode } from '@core/shared/errors/ApplicationErrorCode';
import type { Logger } from '@core/shared/application';
import type { AuthProvider, IdentityProviderPort, StartAuthCommand } from '../ports/IdentityProviderPort';
export type StartAuthInput = {
provider: AuthProvider;

View File

@@ -1,8 +1,6 @@
import { describe, it, expect, vi, type Mock } from 'vitest';
import type { Logger } from '@core/shared/domain/Logger';
import { describe, expect, it, vi, type Mock } from 'vitest';
import { CreateAchievementUseCase, type IAchievementRepository } from './CreateAchievementUseCase';
import type { Logger } from '@core/shared/application';
import { Result } from '@core/shared/domain/Result';
import { Achievement } from '@core/identity/domain/entities/Achievement';
describe('CreateAchievementUseCase', () => {
let achievementRepository: {

View File

@@ -1,7 +1,7 @@
import { Achievement, AchievementProps } from '@core/identity/domain/entities/Achievement';
import type { Logger } from '@core/shared/domain/Logger';
import { Result } from '@core/shared/domain/Result';
import type { ApplicationErrorCode } from '@core/shared/errors/ApplicationErrorCode';
import type { Logger } from '@core/shared/application';
export interface AchievementRepository {
save(achievement: Achievement): Promise<void>;

View File

@@ -5,7 +5,7 @@
* Achievements are categorized by role (driver, steward, admin) and type.
*/
import type { Entity } from '@core/shared/domain';
import type { Entity } from '@core/shared/domain/Entity';
export type AchievementCategory = 'driver' | 'steward' | 'admin' | 'community';

View File

@@ -1,5 +1,5 @@
import type { Entity } from '@core/shared/domain';
import { IdentityDomainValidationError, IdentityDomainInvariantError } from '../errors/IdentityDomainError';
import type { Entity, IEntity } from '@core/shared/domain/Entity';
import { IdentityDomainInvariantError, IdentityDomainValidationError } from '../errors/IdentityDomainError';
export interface AdminVote {
voterId: string;

View File

@@ -1,4 +1,4 @@
import { Entity } from '@core/shared/domain';
import { Entity } from '@core/shared/domain/Entity';
import { UserId } from '../value-objects/UserId';
import { GameKey } from '../value-objects/GameKey';
import { ExternalRating } from '../value-objects/ExternalRating';

View File

@@ -1,8 +1,8 @@
import type { Entity } from '@core/shared/domain';
import { RatingEventId } from '../value-objects/RatingEventId';
import { RatingDimensionKey } from '../value-objects/RatingDimensionKey';
import type { Entity, IEntity } from '@core/shared/domain/Entity';
import { IdentityDomainInvariantError, IdentityDomainValidationError } from '../errors/IdentityDomainError';
import { RatingDelta } from '../value-objects/RatingDelta';
import { IdentityDomainValidationError, IdentityDomainInvariantError } from '../errors/IdentityDomainError';
import { RatingDimensionKey } from '../value-objects/RatingDimensionKey';
import { RatingEventId } from '../value-objects/RatingEventId';
export interface RatingEventSource {
type: 'race' | 'penalty' | 'vote' | 'adminAction' | 'manualAdjustment';

View File

@@ -4,7 +4,7 @@
* Represents an achievement earned by a specific user.
*/
import type { Entity } from '@core/shared/domain';
import type { Entity } from '@core/shared/domain/Entity';
export interface UserAchievementProps {
id: string;