website refactor
This commit is contained in:
25
apps/website/lib/contracts/builders/ViewModelBuilder.ts
Normal file
25
apps/website/lib/contracts/builders/ViewModelBuilder.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
/**
|
||||
* ViewModel Builder Contract
|
||||
*
|
||||
* Purpose: Transform API Transport DTOs into ViewModels
|
||||
*
|
||||
* Rules:
|
||||
* - Deterministic and side-effect free
|
||||
* - No HTTP/API calls
|
||||
* - Input: API Transport DTO
|
||||
* - Output: ViewModel
|
||||
* - Must be in lib/builders/view-models/
|
||||
* - Must be named *ViewModelBuilder
|
||||
* - Must have 'use client' directive
|
||||
* - Must implement static build() method
|
||||
*/
|
||||
|
||||
export interface ViewModelBuilder<TInput, TOutput> {
|
||||
/**
|
||||
* Transform DTO into ViewModel
|
||||
*
|
||||
* @param dto - API Transport DTO
|
||||
* @returns ViewModel
|
||||
*/
|
||||
build(dto: TInput): TOutput;
|
||||
}
|
||||
Reference in New Issue
Block a user