export class LineBuffer { private outBuffer: string = ''; public processOutput(chunk: string, cb: (line: string) => void) { this.outBuffer += chunk; let eolIndex = this.outBuffer.indexOf('\n'); while (eolIndex >= 0) { // line includes the EOL const line = this.outBuffer.slice(0, eolIndex + 1); cb(line); this.outBuffer = this.outBuffer.slice(eolIndex + 1); eolIndex = this.outBuffer.indexOf('\n'); } } }