Files
gridpilot.gg/apps/website/lib/contracts/builders/ViewDataBuilder.ts
2026-01-12 19:24:59 +01:00

25 lines
629 B
TypeScript

/**
* ViewData Builder Contract
*
* Purpose: Transform ViewModels into ViewData for templates
*
* Rules:
* - Deterministic and side-effect free
* - No HTTP/API calls
* - Input: ViewModel
* - Output: ViewData (JSON-serializable)
* - Must be in lib/builders/view-data/
* - Must be named *ViewDataBuilder
* - Must have 'use client' directive
* - Must implement static build() method
*/
export interface ViewDataBuilder<TInput, TOutput> {
/**
* Transform ViewModel into ViewData
*
* @param viewModel - Client-side ViewModel
* @returns ViewData for template
*/
build(viewModel: TInput): TOutput;
}