Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const tocItems: IYamlTocItem[] = [];
for (const apiItem of apiItems) {
let tocItem: IYamlTocItem;
if (apiItem.kind === ApiItemKind.Namespace) {
// Namespaces don't have nodes yet
tocItem = {
name: apiItem.displayName
};
} else {
if (this._shouldEmbed(apiItem.kind)) {
// Don't generate table of contents items for embedded definitions
continue;
}
if (apiItem.kind === ApiItemKind.Package) {
tocItem = {
name: PackageName.getUnscopedName(apiItem.displayName),
uid: this._getUid(apiItem)
};
} else {
tocItem = {
name: apiItem.displayName,
uid: this._getUid(apiItem)
};
this._filterItem(apiItem, tocItem);
}
}
tocItems.push(tocItem);
let children: ReadonlyArray;
this.onCustomizeYamlItem(yamlItem);
if (this._shouldEmbed(apiItem.kind)) {
if (!parentYamlFile) {
throw new InternalError('Missing file context');
}
parentYamlFile.items.push(yamlItem);
} else {
const newYamlFile: IYamlApiFile = {
items: []
};
newYamlFile.items.push(yamlItem);
let children: ReadonlyArray;
if (apiItem.kind === ApiItemKind.Package) {
// Skip over the entry point, since it's not part of the documentation hierarchy
children = apiItem.members[0].members;
} else {
children = apiItem.members;
}
const flattenedChildren: ApiItem[] = this._flattenNamespaces(children);
for (const child of flattenedChildren) {
if (child instanceof ApiDocumentedItem) {
if (this._visitApiItems(child, newYamlFile)) {
if (!yamlItem.children) {
yamlItem.children = [];
}
yamlItem.children.push(this._getUid(child));
}
const flattenedChildren: ApiItem[] = this._flattenNamespaces(children);
for (const child of flattenedChildren) {
if (child instanceof ApiDocumentedItem) {
if (this._visitApiItems(child, newYamlFile)) {
if (!yamlItem.children) {
yamlItem.children = [];
}
yamlItem.children.push(this._getUid(child));
}
}
}
const yamlFilePath: string = this._getYamlFilePath(apiItem);
if (apiItem.kind === ApiItemKind.Package) {
console.log('Writing ' + yamlFilePath);
}
this._writeYamlFile(newYamlFile, yamlFilePath, 'UniversalReference', yamlApiSchema);
if (parentYamlFile) {
if (!parentYamlFile.references) {
parentYamlFile.references = [];
}
parentYamlFile.references.push({
uid: this._getUid(apiItem),
name: this._getYamlItemName(apiItem)
});
}
}
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);
}
if (appendRemarks) {
this._writeRemarksSection(output, apiItem);
}
configuration,
headerTitles: ['Namespace', 'Description'],
});
const variablesTable: DocTable = new DocTable({
configuration,
headerTitles: ['Variable', 'Description'],
});
const typeAliasesTable: DocTable = new DocTable({
configuration,
headerTitles: ['Type Alias', 'Description'],
});
const apiMembers: ReadonlyArray =
apiContainer.kind === ApiItemKind.Package
? (apiContainer as ApiPackage).entryPoints[0].members
: (apiContainer as ApiNamespace).members;
for (const apiMember of apiMembers) {
const row: DocTableRow = new DocTableRow({ configuration }, [
this._createTitleCell(apiMember),
this._createDescriptionCell(apiMember),
]);
switch (apiMember.kind) {
case ApiItemKind.Class:
classesTable.addRow(row);
this._writeApiItemPage(apiMember);
break;
case ApiItemKind.Enum: