From bc9b487eb1ae324d7cb48aadf644a5a95fb9c507 Mon Sep 17 00:00:00 2001 From: Qjuh <76154676+Qjuh@users.noreply.github.com> Date: Sun, 4 Feb 2024 01:39:00 +0100 Subject: [PATCH] fix(website): always link in TypeAlias (#10105) * fix(website): always link in TypeAlias * fix: use div instead span for DocParagraph --- .../section/UnionMembersSection.tsx | 2 +- .../components/documentation/tsdoc/TSDoc.tsx | 4 +-- .../src/components/model/TypeAlias.tsx | 12 ++------ .../src/generators/ApiModelGenerator.ts | 28 ++++++++++--------- 4 files changed, 21 insertions(+), 25 deletions(-) diff --git a/apps/website/src/components/documentation/section/UnionMembersSection.tsx b/apps/website/src/components/documentation/section/UnionMembersSection.tsx index 7daa29901..2a736c3de 100644 --- a/apps/website/src/components/documentation/section/UnionMembersSection.tsx +++ b/apps/website/src/components/documentation/section/UnionMembersSection.tsx @@ -4,7 +4,7 @@ import { useMemo } from 'react'; import { ExcerptText } from '~/components/ExcerptText'; import { DocumentationSection } from './DocumentationSection'; -export type UnionMember = ExcerptToken[]; +export type UnionMember = readonly ExcerptToken[]; export function UnionMembersSection({ item, diff --git a/apps/website/src/components/documentation/tsdoc/TSDoc.tsx b/apps/website/src/components/documentation/tsdoc/TSDoc.tsx index f09e370e6..589c11184 100644 --- a/apps/website/src/components/documentation/tsdoc/TSDoc.tsx +++ b/apps/website/src/components/documentation/tsdoc/TSDoc.tsx @@ -25,9 +25,9 @@ export function TSDoc({ item, tsdoc }: { readonly item: ApiItem; readonly tsdoc: case DocNodeKind.Section: case DocNodeKind.Paragraph: return ( - +
{(tsdoc as DocNodeContainer).nodes.map((node, idx) => createNode(node, idx))} - +
); case DocNodeKind.SoftBreak: return ; diff --git a/apps/website/src/components/model/TypeAlias.tsx b/apps/website/src/components/model/TypeAlias.tsx index 02d6d3882..d15f861b4 100644 --- a/apps/website/src/components/model/TypeAlias.tsx +++ b/apps/website/src/components/model/TypeAlias.tsx @@ -13,16 +13,10 @@ export function TypeAlias({ item }: { readonly item: ApiTypeAlias }) { let depth = 0; for (const token of item.typeExcerpt.spannedTokens) { if (token.text.includes('?')) { - return []; + return [item.typeExcerpt.spannedTokens]; } - if (token.text.includes('<')) { - depth++; - } - - if (token.text.includes('>')) { - depth--; - } + depth += token.text.split('<').length - token.text.split('>').length; if (token.text.trim() === '|' && depth === 0) { if (currentUnionMember.length) { @@ -47,7 +41,7 @@ export function TypeAlias({ item }: { readonly item: ApiTypeAlias }) { } } - if (currentUnionMember.length && union.length) { + if (currentUnionMember.length) { union.push(currentUnionMember); } diff --git a/packages/api-extractor/src/generators/ApiModelGenerator.ts b/packages/api-extractor/src/generators/ApiModelGenerator.ts index e343ba8fc..551a3f630 100644 --- a/packages/api-extractor/src/generators/ApiModelGenerator.ts +++ b/packages/api-extractor/src/generators/ApiModelGenerator.ts @@ -1690,20 +1690,22 @@ export class ApiModelGenerator { } private _fixLinkTags(input?: string): string | undefined { - return input?.replaceAll(linkRegEx, (_match, _p1, _p2, _p3, _p4, _p5, _offset, _string, groups) => { - let target = groups.class ?? groups.url; - const external = this._jsDocJson?.externals.find((external) => groups.class && external.name === groups.class); - const match = /discord-api-types-(?[^#]*?)(?:#|\/(?[^#/]*)\/)(?[^/}]*)}$/.exec( - external?.see?.[0] ?? '', - ); - if (match) { - target = `discord-api-types#(${match.groups!.name}:${ - /^v\d+$/.test(match.groups!.type!) ? match.groups!.kind : 'type' - })`; - } + return input + ?.replaceAll(linkRegEx, (_match, _p1, _p2, _p3, _p4, _p5, _offset, _string, groups) => { + let target = groups.class ?? groups.url; + const external = this._jsDocJson?.externals.find((external) => groups.class && external.name === groups.class); + const match = /discord-api-types-(?[^#]*?)(?:#|\/(?[^#/]*)\/)(?[^/}]*)}$/.exec( + external?.see?.[0] ?? '', + ); + if (match) { + target = `discord-api-types#(${match.groups!.name}:${ + /^v\d+$/.test(match.groups!.type!) ? match.groups!.kind : 'type' + })`; + } - return `{@link ${target}${groups.prop ? `.${groups.prop}` : ''}${groups.name ? ` |${groups.name}` : ''}}`; - }); + return `{@link ${target}${groups.prop ? `.${groups.prop}` : ''}${groups.name ? ` |${groups.name}` : ''}}`; + }) + .replaceAll('* ', '\n * * '); } private _mapVarType(typey: DocgenVarTypeJson): IExcerptToken[] {