Files
gridpilot.gg/apps/website/lib/contracts/builders/ViewDataBuilder.ts
Marc Mintel 18133aef4c
Some checks failed
Contract Testing / contract-tests (pull_request) Failing after 5m42s
Contract Testing / contract-snapshot (pull_request) Has been skipped
view data fixes
2026-01-22 23:40:38 +01:00

28 lines
823 B
TypeScript

/**
* ViewData Builder Contract
*
* Purpose: Transform API Transport DTOs into ViewData for templates
*
* Rules:
* - Deterministic and side-effect free
* - No HTTP/API calls
* - Input: API Transport DTO (must be JSON-serializable)
* - Output: ViewData (JSON-serializable template-ready data)
* - Must be in lib/builders/view-data/
* - Must be named *ViewDataBuilder
* - Must have 'use client' directive
* - Must implement static build() method
*/
import { JsonValue } from '../types/primitives';
import { ViewData } from '../view-data/ViewData';
export interface ViewDataBuilder<TDTO extends JsonValue, TViewData extends ViewData> {
/**
* Transform DTO into ViewData
*
* @param dto - API Transport DTO (JSON-serializable)
* @returns ViewData for template
*/
build(dto: TDTO): TViewData;
}