Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
}
let baseName: string = '';
for (const hierarchyItem of apiItem.getHierarchy()) {
// For overloaded methods, add a suffix such as "MyClass.myMethod_2".
let qualifiedName: string = Utilities.getSafeFilenameForName(hierarchyItem.displayName);
if (ApiParameterListMixin.isBaseClassOf(hierarchyItem)) {
if (hierarchyItem.overloadIndex > 1) {
// Subtract one for compatibility with earlier releases of API Documenter.
// (This will get revamped when we fix GitHub issue #1308)
qualifiedName += `_${hierarchyItem.overloadIndex - 1}`;
}
}
switch (hierarchyItem.kind) {
case ApiItemKind.Model:
case ApiItemKind.EntryPoint:
break;
case ApiItemKind.Package:
baseName = Utilities.getSafeFilenameForName(PackageName.getUnscopedName(hierarchyItem.displayName));
break;
default:
baseName += '.' + qualifiedName;
}
}
return baseName + '.md';
}
private _writeBreadcrumb(output: DocSection, apiItem: ApiItem): void {
output.appendNodeInParagraph(
new DocLinkTag({
configuration: this._tsdocConfiguration,
tagName: '@link',
linkText: 'Home',
urlDestination: '/api',
}),
);
for (const hierarchyItem of apiItem.getHierarchy()) {
switch (hierarchyItem.kind) {
case ApiItemKind.Model:
case ApiItemKind.EntryPoint:
// We don't show the model as part of the breadcrumb because it is the root-level container.
// We don't show the entry point because today API Extractor doesn't support multiple entry points;
// this may change in the future.
break;
default:
output.appendNodesInParagraph([
new DocPlainText({
configuration: this._tsdocConfiguration,
text: ' > ',
}),
new DocLinkTag({
configuration: this._tsdocConfiguration,
tagName: '@link',
linkText: hierarchyItem.displayName,
urlDestination: this._getLinkFilenameForApiItem(hierarchyItem),
private _getYamlFilePath(apiItem: ApiItem): string {
let result: string = '';
for (const current of apiItem.getHierarchy()) {
switch (current.kind) {
case ApiItemKind.Model:
case ApiItemKind.EntryPoint:
break;
case ApiItemKind.Package:
result += PackageName.getUnscopedName(current.displayName);
break;
default:
if (current.parent && current.parent.kind === ApiItemKind.EntryPoint) {
result += '/';
} else {
result += '.';
}
result += current.displayName;
break;
}
}
return path.join(this._outputFolder, result.toLowerCase() + '.yml');
break;
case ApiItemKind.Interface:
this._writeInterfaceTables(output, apiItem as ApiInterface);
break;
case ApiItemKind.Constructor:
case ApiItemKind.ConstructSignature:
case ApiItemKind.Method:
case ApiItemKind.MethodSignature:
case ApiItemKind.Function:
this._writeParameterTables(output, apiItem as ApiParameterListMixin);
this._writeThrowsSection(output, apiItem);
break;
case ApiItemKind.Namespace:
this._writePackageOrNamespaceTables(output, apiItem as ApiNamespace);
break;
case ApiItemKind.Model:
this._writeModelTable(output, apiItem as ApiModel);
break;
case ApiItemKind.Package:
this._writePackageOrNamespaceTables(output, apiItem as ApiPackage);
break;
case ApiItemKind.Property:
case ApiItemKind.PropertySignature:
break;
case ApiItemKind.TypeAlias:
break;
case ApiItemKind.Variable:
break;
default:
throw new Error('Unsupported API item kind: ' + apiItem.kind);
}