From 5b030f2950a12838db807d2dce12a12e3b7d6e09 Mon Sep 17 00:00:00 2001 From: Hieu Le Date: Sun, 1 Nov 2026 07:37:05 +0100 Subject: [PATCH] perf(shared): strip plan prefixes in linear time --- packages/shared/src/proposedPlanText.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/shared/src/proposedPlanText.ts b/packages/shared/src/proposedPlanText.ts index 52d568898ed6b..76c5a8c31c2e2 100644 --- a/packages/shared/src/proposedPlanText.ts +++ b/packages/shared/src/proposedPlanText.ts @@ -5,16 +5,16 @@ export function proposedPlanTitle(planMarkdown: string): string | null { export function stripDisplayedPlanMarkdown(planMarkdown: string): string { const lines = planMarkdown.trimEnd().split(/\r?\n/); - const sourceLines = lines[0] && /^\s{0,3}#{1,6}\s+/.test(lines[0]) ? lines.slice(1) : [...lines]; - while (sourceLines[0]?.trim().length === 0) { - sourceLines.shift(); + let start = lines[0] && /^\s{0,3}#{1,6}\s+/.test(lines[0]) ? 1 : 0; + while (lines[start]?.trim().length === 0) { + start += 1; } - const firstHeadingMatch = sourceLines[0]?.match(/^\s{0,3}#{1,6}\s+(.+)$/); + const firstHeadingMatch = lines[start]?.match(/^\s{0,3}#{1,6}\s+(.+)$/); if (firstHeadingMatch?.[1]?.trim().toLowerCase() === "summary") { - sourceLines.shift(); - while (sourceLines[0]?.trim().length === 0) { - sourceLines.shift(); + start += 1; + while (lines[start]?.trim().length === 0) { + start += 1; } } - return sourceLines.join("\n"); + return lines.slice(start).join("\n"); }