From ebbdda28536728971cc1d87801bc14fcff38f9ad Mon Sep 17 00:00:00 2001 From: mitchell Date: Fri, 17 Apr 2026 03:28:51 -0400 Subject: [PATCH] refactor: renderStream to use switch --- src/render/index.ts | 70 ++++++++++++++++++++++++++++----------------- 1 file changed, 43 insertions(+), 27 deletions(-) diff --git a/src/render/index.ts b/src/render/index.ts index 581a3a8..a810e29 100644 --- a/src/render/index.ts +++ b/src/render/index.ts @@ -60,33 +60,49 @@ export default class StreamRenderer { this.resetCounts(); for await (const part of stream) { - if (part.type === "reasoning-start") { - if (supportsColorStderr) - this.write(`${styles.dim.open}${styles.italic.open}`, process.stderr); - this.write("\n", process.stderr); - } else if (part.type === "reasoning-delta") { - this.write(part.text, process.stderr); - reasoningWriter.write(part.text); - this.checkContainment(part.text, process.stderr); - } else if (part.type === "reasoning-end") { - if (supportsColorStderr) - this.write( - `${styles.italic.close}${styles.dim.close}`, - process.stderr, - ); - this.moveCursor(-this.lineCount - 1, process.stderr); - this.clearScreenDown(process.stderr); - this.resetCounts(); - reasoningWriter.end(); - } else if (part.type === "text-start") { - this.write("\n"); - } else if (part.type === "text-delta") { - this.write(part.text); - this.checkContainment(part.text); - } else if (part.type === "text-end") { - this.moveCursor(-this.lineCount - 1); - this.clearScreenDown(process.stderr); - this.resetCounts(); + switch (part.type) { + case "reasoning-start": { + if (supportsColorStderr) + this.write( + `${styles.dim.open}${styles.italic.open}`, + process.stderr, + ); + this.write("\n", process.stderr); + break; + } + case "reasoning-delta": { + this.write(part.text, process.stderr); + this.checkContainment(part.text, process.stderr); + reasoningWriter.write(part.text); + break; + } + case "reasoning-end": { + if (supportsColorStderr) + this.write( + `${styles.italic.close}${styles.dim.close}`, + process.stderr, + ); + this.moveCursor(-this.lineCount - 1, process.stderr); + this.clearScreenDown(process.stderr); + this.resetCounts(); + reasoningWriter.end(); + break; + } + case "text-start": { + this.write("\n"); + break; + } + case "text-delta": { + this.write(part.text); + this.checkContainment(part.text); + break; + } + case "text-end": { + this.moveCursor(-this.lineCount - 1); + this.clearScreenDown(process.stderr); + this.resetCounts(); + break; + } } while (!this.memOk) await Bun.sleep(10);