From 2e64fd62eeb41351388a584718fc8770ee14ff55 Mon Sep 17 00:00:00 2001 From: Qjuh <76154676+Qjuh@users.noreply.github.com> Date: Sun, 15 Sep 2024 19:49:31 +0200 Subject: [PATCH] feat: show default values in docs (#10465) --- .../src/generators/ApiModelGenerator.ts | 14 +++++++++++--- packages/scripts/src/generateSplitDocumentation.ts | 6 ++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/api-extractor/src/generators/ApiModelGenerator.ts b/packages/api-extractor/src/generators/ApiModelGenerator.ts index 4e7db18f3..f10b9e560 100644 --- a/packages/api-extractor/src/generators/ApiModelGenerator.ts +++ b/packages/api-extractor/src/generators/ApiModelGenerator.ts @@ -114,7 +114,7 @@ interface DocgenEventJson { } interface DocgenParamJson { - default?: string; + default?: boolean | number | string; description: string; name: string; nullable?: boolean; @@ -155,7 +155,7 @@ interface DocgenMethodJson { interface DocgenPropertyJson { abstract?: boolean; access?: DocgenAccess; - default?: string; + default?: boolean | number | string; deprecated?: DocgenDeprecated; description: string; meta: DocgenMetaJson; @@ -1744,6 +1744,14 @@ export class ApiModelGenerator { return sourceLocation; } + private _escapeSpecialChars(input: boolean | number | string) { + if (typeof input !== 'string') { + return input; + } + + return input.replaceAll(/(?[{}])/g, '\\$'); + } + private _fixLinkTags(input?: string): string | undefined { return input ?.replaceAll(linkRegEx, (_match, _p1, _p2, _p3, _p4, _p5, _offset, _string, groups) => { @@ -1819,7 +1827,7 @@ export class ApiModelGenerator { isOptional: Boolean(prop.nullable), isReadonly: Boolean(prop.readonly), docComment: this._tsDocParser.parseString( - `/**\n * ${this._fixLinkTags(prop.description) ?? ''}\n${ + `/**\n * ${this._fixLinkTags(prop.description) ?? ''}${prop.default ? ` (default: ${this._escapeSpecialChars(prop.default)})` : ''}\n${ prop.see?.map((see) => ` * @see ${see}\n`).join('') ?? '' }${prop.readonly ? ' * @readonly\n' : ''} */`, ).docComment, diff --git a/packages/scripts/src/generateSplitDocumentation.ts b/packages/scripts/src/generateSplitDocumentation.ts index a7ee97bb8..5a29893db 100644 --- a/packages/scripts/src/generateSplitDocumentation.ts +++ b/packages/scripts/src/generateSplitDocumentation.ts @@ -39,6 +39,7 @@ import { } from '@discordjs/api-extractor-model'; import { DocNodeKind, SelectorKind, StandardTags } from '@microsoft/tsdoc'; import type { + DocEscapedText, DocNode, DocNodeContainer, DocDeclarationReference, @@ -298,6 +299,11 @@ function itemTsDoc(item: DocNode, apiItem: ApiItem) { kind: DocNodeKind.PlainText, text: (node as DocPlainText).text, }; + case DocNodeKind.EscapedText: + return { + kind: DocNodeKind.PlainText, + text: (node as DocEscapedText).decodedText, + }; case DocNodeKind.Section: case DocNodeKind.Paragraph: return (node as DocNodeContainer).nodes.map((node) => createNode(node));