export interface LogEntry { render: () => string[]; } export class LogLines implements LogEntry { lines: string[] constructor (...lines: string[]) { this.lines = lines } render (): string[] { return this.lines } } export class CompositeLog implements LogEntry { entries: LogEntry[] constructor (...entries: LogEntry[]) { this.entries = entries } render (): string[] { return this.entries.flatMap(e => e.render()) } }