From 4f1e8735dbb6400d51e65cf7fe722ef470a66c0a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 14 Aug 2026 16:27:49 +0000 Subject: [PATCH 1/2] Generate plain-text compiler summaries Co-authored-by: jakebailey <5341706+jakebailey@users.noreply.github.com> --- .../scripts/tsconfig/generateMarkdown.ts | 3 ++- .../scripts/tsconfigRules.ts | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/packages/tsconfig-reference/scripts/tsconfig/generateMarkdown.ts b/packages/tsconfig-reference/scripts/tsconfig/generateMarkdown.ts index a72b51173444..49127f428b5e 100644 --- a/packages/tsconfig-reference/scripts/tsconfig/generateMarkdown.ts +++ b/packages/tsconfig-reference/scripts/tsconfig/generateMarkdown.ts @@ -34,6 +34,7 @@ import { watchOptionCompilerOptNames, rootOptNames, parseMarkdown, + parseMarkdownToPlainText, } from "../tsconfigRules.js"; const options: CompilerOptionJSON[] = JSON.parse(readFileSync(join("data", "tsconfigOpts.json"), "utf8")); @@ -219,7 +220,7 @@ languages.forEach((lang) => { optionsSummary.push({ id: optionName, display: optionFile.data.display, - oneliner: String(parseMarkdown(optionFile.data.oneline)), + oneliner: parseMarkdownToPlainText(optionFile.data.oneline), categoryID: categoryID, categoryDisplay: categoryName, }); diff --git a/packages/tsconfig-reference/scripts/tsconfigRules.ts b/packages/tsconfig-reference/scripts/tsconfigRules.ts index e710dea44e0f..5a0353fafcec 100644 --- a/packages/tsconfig-reference/scripts/tsconfigRules.ts +++ b/packages/tsconfig-reference/scripts/tsconfigRules.ts @@ -473,3 +473,21 @@ export const parseMarkdown = (value: string | string[]): string => .use(remarkHTML) .processSync(String(value).replace(/^[-.0-9_a-z]+$/i, "`$&`")) .toString(); + +type MarkdownNode = { + type: string; + value?: unknown; + alt?: unknown; + children?: MarkdownNode[]; +}; + +const markdownNodeToPlainText = (node: MarkdownNode): string => { + if (node.type === "image" && typeof node.alt === "string") return node.alt; + if (typeof node.value === "string") return node.value; + return node.children?.map(markdownNodeToPlainText).join("") ?? ""; +}; + +export const parseMarkdownToPlainText = (value: string | string[]): string => + Array.isArray(value) + ? value.map(parseMarkdownToPlainText).join(" ") + : markdownNodeToPlainText(remark().parse(String(value)) as MarkdownNode); From 2e062c9760130a6904d483c21e2c0c9dfe5bef71 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 14 Aug 2026 16:28:32 +0000 Subject: [PATCH 2/2] Handle summary input as text Co-authored-by: jakebailey <5341706+jakebailey@users.noreply.github.com> --- .../tsconfig-reference/scripts/tsconfig/generateMarkdown.ts | 2 +- packages/tsconfig-reference/scripts/tsconfigRules.ts | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/tsconfig-reference/scripts/tsconfig/generateMarkdown.ts b/packages/tsconfig-reference/scripts/tsconfig/generateMarkdown.ts index 49127f428b5e..77de2e7907fe 100644 --- a/packages/tsconfig-reference/scripts/tsconfig/generateMarkdown.ts +++ b/packages/tsconfig-reference/scripts/tsconfig/generateMarkdown.ts @@ -220,7 +220,7 @@ languages.forEach((lang) => { optionsSummary.push({ id: optionName, display: optionFile.data.display, - oneliner: parseMarkdownToPlainText(optionFile.data.oneline), + oneliner: parseMarkdownToPlainText(String(optionFile.data.oneline)), categoryID: categoryID, categoryDisplay: categoryName, }); diff --git a/packages/tsconfig-reference/scripts/tsconfigRules.ts b/packages/tsconfig-reference/scripts/tsconfigRules.ts index 5a0353fafcec..f1093b1e0b40 100644 --- a/packages/tsconfig-reference/scripts/tsconfigRules.ts +++ b/packages/tsconfig-reference/scripts/tsconfigRules.ts @@ -487,7 +487,5 @@ const markdownNodeToPlainText = (node: MarkdownNode): string => { return node.children?.map(markdownNodeToPlainText).join("") ?? ""; }; -export const parseMarkdownToPlainText = (value: string | string[]): string => - Array.isArray(value) - ? value.map(parseMarkdownToPlainText).join(" ") - : markdownNodeToPlainText(remark().parse(String(value)) as MarkdownNode); +export const parseMarkdownToPlainText = (value: string): string => + markdownNodeToPlainText(remark().parse(value) as MarkdownNode);