/** * Auth Request Mapper * * Transforms plain credential objects to auth request schemas. * Auth is a special case - no domain object for credentials, accepts plain objects. * * @layer Infrastructure - API Client */ import { loginRequestSchema, registerRequestSchema, type LoginRequest, type RegisterRequest, } from '@archer/api-interface'; /** * User Registration Data * * Plain object for user registration */ export interface UserRegistrationData { email: string; password: string; fullName?: string; } /** * Login Credentials * * Plain object for login credentials */ export interface LoginCredentials { email: string; password: string; totpCode?: string; } /** * AuthRequestMapper * * Maps plain credential objects to auth request schemas. * Validates with Zod before returning. */ export class AuthRequestMapper { /** * Maps plain login credentials to LoginRequest schema * * @param credentials - Plain login credentials object * @returns Validated LoginRequest schema * @throws ZodError if validation fails */ static toLoginRequest(credentials: LoginCredentials): LoginRequest { return loginRequestSchema.parse({ email: credentials.email, password: credentials.password, totpCode: credentials.totpCode, }); } /** * Maps user registration data to RegisterRequest schema * * @param data - Plain registration data object * @returns Validated RegisterRequest schema * @throws ZodError if validation fails */ static toRegisterRequest(data: UserRegistrationData): RegisterRequest { return registerRequestSchema.parse({ email: data.email, password: data.password, fullName: data.fullName, }); } }