import { Renderer, RenderContext } from './IGroupingRenderer'; export interface Pipeline { run(context: RenderContext): void; } export function buildPipeline(renderers: Renderer[]): Pipeline { // Link renderers for (let i = 0; i < renderers.length - 1; i++) { renderers[i].next = renderers[i + 1]; } const first = renderers[0] ?? null; return { run(context: RenderContext) { if (first) first.render(context); } }; }