feat(website): show descriptions for @typeParam blocks (#8523)

This commit is contained in:
Suneet Tipirneni
2022-08-19 04:55:43 -04:00
committed by GitHub
parent 673262d38c
commit e475b63f25
18 changed files with 126 additions and 62 deletions

View File

@@ -10,7 +10,6 @@ import {
type ApiPropertyItem,
type ExcerptToken,
type Parameter,
type TypeParameter,
ApiFunction,
} from '@microsoft/api-extractor-model';
import type { DocNode, DocParagraph, DocPlainText } from '@microsoft/tsdoc';
@@ -25,7 +24,7 @@ export function findPackage(model: ApiModel, name: string): ApiPackage | undefin
}
export function generatePath(items: readonly ApiItem[]) {
let path = '/docs/main/packages/';
let path = '/docs/main/packages';
for (const item of items) {
switch (item.kind) {
case ApiItemKind.Model:
@@ -33,17 +32,24 @@ export function generatePath(items: readonly ApiItem[]) {
case ApiItemKind.EnumMember:
break;
case ApiItemKind.Package:
path += `${item.displayName}/`;
path += `/${item.displayName}`;
break;
case ApiItemKind.Function:
// eslint-disable-next-line no-case-declarations
const functionItem = item as ApiFunction;
path += `${functionItem.displayName}${
path += `/${functionItem.displayName}${
functionItem.overloadIndex && functionItem.overloadIndex > 1 ? `:${functionItem.overloadIndex}` : ''
}/`;
}`;
break;
case ApiItemKind.Property:
case ApiItemKind.Method:
case ApiItemKind.MethodSignature:
case ApiItemKind.PropertySignature:
// TODO: Take overloads into account
path += `#${item.displayName}`;
break;
default:
path += `${item.displayName}/`;
path += `/${item.displayName}`;
}
}
@@ -213,22 +219,3 @@ export function getMembers(pkg: ApiPackage) {
overloadIndex: member.kind === 'Function' ? (member as ApiFunction).overloadIndex : null,
}));
}
export interface TypeParameterData {
name: string;
constraintTokens: TokenDocumentation[];
defaultTokens: TokenDocumentation[];
optional: boolean;
}
export function generateTypeParamData(model: ApiModel, typeParam: TypeParameter): TypeParameterData {
const constraintTokens = typeParam.constraintExcerpt.spannedTokens.map((token) => genToken(model, token));
const defaultTokens = typeParam.defaultTypeExcerpt.spannedTokens.map((token) => genToken(model, token));
return {
name: typeParam.name,
constraintTokens,
defaultTokens,
optional: typeParam.isOptional,
};
}