From 3b1a2467f88f576c37f0c426b86e7504395ec88d Mon Sep 17 00:00:00 2001 From: dynst <148708712+dynst@users.noreply.github.com> Date: Sun, 31 Aug 2025 00:00:00 +0000 Subject: [PATCH 1/5] make generateMarkdown code handle defaultValue=false --- .../tsconfig-reference/scripts/tsconfig/generateMarkdown.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tsconfig-reference/scripts/tsconfig/generateMarkdown.ts b/packages/tsconfig-reference/scripts/tsconfig/generateMarkdown.ts index 6c338f6f8966..0238c85158ba 100644 --- a/packages/tsconfig-reference/scripts/tsconfig/generateMarkdown.ts +++ b/packages/tsconfig-reference/scripts/tsconfig/generateMarkdown.ts @@ -248,7 +248,7 @@ languages.forEach((lang) => { mdTableRows.push(["Internal"]); } - if (option.defaultValue) { + if (option.defaultValue !== undefined) { mdTableRows.push(["Default", String(option.defaultValue)]); } From 6c05697b5e528bd1e84d9622b1c3029c8ce6f2d6 Mon Sep 17 00:00:00 2001 From: dynst <148708712+dynst@users.noreply.github.com> Date: Sun, 31 Aug 2025 00:00:00 +0000 Subject: [PATCH 2/5] handle all defaultValue types in cli/generateMarkdown --- packages/tsconfig-reference/scripts/cli/generateMarkdown.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tsconfig-reference/scripts/cli/generateMarkdown.ts b/packages/tsconfig-reference/scripts/cli/generateMarkdown.ts index 82ef44d058fa..8b26cd09688f 100644 --- a/packages/tsconfig-reference/scripts/cli/generateMarkdown.ts +++ b/packages/tsconfig-reference/scripts/cli/generateMarkdown.ts @@ -107,7 +107,7 @@ languages.forEach((lang) => { markdownChunks.push(` ${parseMarkdown(optType)}`); if (!opts?.noDefaults) { - markdownChunks.push(` ${parseMarkdown(option.defaultValue)}`); + markdownChunks.push(` ${parseMarkdown(JSON.stringify(option.defaultValue))}`); } markdownChunks.push(``); From 58af40031679077e6344d8f18a2a0c87d8c7e640 Mon Sep 17 00:00:00 2001 From: dynst <148708712+dynst@users.noreply.github.com> Date: Mon, 1 Sep 2025 00:00:00 +0000 Subject: [PATCH 3/5] fix type of defaultValue it only gets coerced to String in generateMarkdown.ts --- packages/tsconfig-reference/scripts/cli/generateJSON.ts | 2 +- packages/tsconfig-reference/scripts/tsconfig/generateJSON.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/tsconfig-reference/scripts/cli/generateJSON.ts b/packages/tsconfig-reference/scripts/cli/generateJSON.ts index 1af3baa73109..38d700e2cb7e 100644 --- a/packages/tsconfig-reference/scripts/cli/generateJSON.ts +++ b/packages/tsconfig-reference/scripts/cli/generateJSON.ts @@ -40,7 +40,7 @@ export interface CompilerOptionJSON extends CommandLineOptionBase { deprecated?: string; internal?: true; recommended?: true; - defaultValue?: string; + defaultValue?: string | number | boolean; hostObj: string; } diff --git a/packages/tsconfig-reference/scripts/tsconfig/generateJSON.ts b/packages/tsconfig-reference/scripts/tsconfig/generateJSON.ts index 397fde24d3d2..3cdb4a15f61e 100644 --- a/packages/tsconfig-reference/scripts/tsconfig/generateJSON.ts +++ b/packages/tsconfig-reference/scripts/tsconfig/generateJSON.ts @@ -48,7 +48,7 @@ export interface CompilerOptionJSON extends CommandLineOptionBase { deprecated?: string; internal?: true; recommended?: true; - defaultValue?: string; + defaultValue?: string | number | boolean; hostObj: string; } From 6f85316f3510deed309193c6ae4fac1891396b0d Mon Sep 17 00:00:00 2001 From: dynst <148708712+dynst@users.noreply.github.com> Date: Sun, 31 Aug 2025 00:00:00 +0000 Subject: [PATCH 4/5] document defaults for tsconfig watch options --- packages/tsconfig-reference/scripts/tsconfigRules.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tsconfig-reference/scripts/tsconfigRules.ts b/packages/tsconfig-reference/scripts/tsconfigRules.ts index 991666ba6a4e..53958289a3f9 100644 --- a/packages/tsconfig-reference/scripts/tsconfigRules.ts +++ b/packages/tsconfig-reference/scripts/tsconfigRules.ts @@ -202,7 +202,7 @@ function trueIf(name: string) { export const defaultsForOptions = { ...Object.fromEntries( - ts.optionDeclarations.map((option) => [ + [...ts.optionDeclarations, ...ts.optionsForWatch].map((option) => [ option.name, typeof option.defaultValueDescription === "object" ? option.defaultValueDescription.message From eb022fbfdd3ca87882aa25ad3a004b3facabaa34 Mon Sep 17 00:00:00 2001 From: dynst <148708712+dynst@users.noreply.github.com> Date: Mon, 1 Sep 2025 00:00:00 +0000 Subject: [PATCH 5/5] format strings as strings --- packages/tsconfig-reference/scripts/cli/generateMarkdown.ts | 4 ++-- .../tsconfig-reference/scripts/tsconfig/generateMarkdown.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/tsconfig-reference/scripts/cli/generateMarkdown.ts b/packages/tsconfig-reference/scripts/cli/generateMarkdown.ts index 8b26cd09688f..61946a2ae5f7 100644 --- a/packages/tsconfig-reference/scripts/cli/generateMarkdown.ts +++ b/packages/tsconfig-reference/scripts/cli/generateMarkdown.ts @@ -94,11 +94,11 @@ languages.forEach((lang) => { // @ts-ignore const or = new Intl.ListFormat(lang, { type: "disjunction" }); optType = or.format( - option.allowedValues.map((v) => v.replace(/^[-.0-9_a-z]+$/i, "`$&`")) + option.allowedValues.map((v) => v.replace(/^[-.0-9_a-z]+$/i, "`"$&"`")) ); } else { optType = option.allowedValues - .map((v) => v.replace(/^[-.0-9_a-z]+$/i, "`$&`")) + .map((v) => v.replace(/^[-.0-9_a-z]+$/i, "`"$&"`")) .join(", "); } } else { diff --git a/packages/tsconfig-reference/scripts/tsconfig/generateMarkdown.ts b/packages/tsconfig-reference/scripts/tsconfig/generateMarkdown.ts index 0238c85158ba..3bee64efb3c5 100644 --- a/packages/tsconfig-reference/scripts/tsconfig/generateMarkdown.ts +++ b/packages/tsconfig-reference/scripts/tsconfig/generateMarkdown.ts @@ -249,11 +249,11 @@ languages.forEach((lang) => { } if (option.defaultValue !== undefined) { - mdTableRows.push(["Default", String(option.defaultValue)]); + mdTableRows.push(["Default", JSON.stringify(option.defaultValue)]); } if (option.allowedValues) { - mdTableRows.push(["Allowed", option.allowedValues]); + mdTableRows.push(["Allowed", option.allowedValues.map(JSON.stringify)]); } if (option.related) {