@microsoft/api-documenter
Version:
Read JSON files from api-extractor, generate documentation pages
96 lines • 4.72 kB
TypeScript
import type { IYamlTocFile } from '../yaml/IYamlTocFile';
/**
* Typescript interface describing the config schema for toc.yml file format.
*/
export interface IConfigTableOfContents {
/**
* Represents the tree structure describing the toc.file format.
* Nodes that have an empty `items` array property or their name will be included in the
* {@link IConfigTableOfContents.nonEmptyCategoryNodeNames} will be filled with API items
* that are matched with the filters provided. Everything else will be placed under
* {@link IConfigTableOfContents.catchAllCategory} if provided, which is highly recommended.
*/
tocConfig: IYamlTocFile;
/**
* Optional category name that is recommended to be included along with
* one of the configs: {@link IConfigTableOfContents.categorizeByName} or
* {@link IConfigTableOfContents.categoryInlineTag}.
* Any items that are not matched according to the mentioned configuration options will be placed under this
* catchAll category. If none provided the items will not be included in the final toc.yml file.
*/
catchAllCategory?: string;
/**
* Toggle either categorization of the API items should be made based on category name presence
* in the API item's name. Useful when there are API items without an inline tag to categorize them,
* but still need to place the items under categories. Note: this type of categorization might place some items
* under wrong categories if the names are similar but belong to different categories.
* In case that {@link IConfigTableOfContents.categoryInlineTag} is provided it will try categorize by
* using it and only if it didn't, it will attempt to categorize by name.
*/
categorizeByName?: boolean;
/**
* Inline tag that will be used to categorize the API items. Will take precedence over the
* {@link IConfigTableOfContents.categorizeByName} flag in trying to place the API item according to the
* custom inline tag present in documentation of the source code.
*/
categoryInlineTag?: string;
/**
* Array of node names that might have already items injected at the time of creating the
* {@link IConfigTableOfContents.tocConfig} tree structure but are still needed to be included as category
* nodes where API items will be pushed during the categorization algorithm.
*/
nonEmptyCategoryNodeNames?: string[];
}
/**
* Describes plugin packages to be loaded, and which features to enable.
*/
export interface IConfigPlugin {
/**
* Specifies the name of an API Documenter plugin package to be loaded. By convention, the NPM package name
* should have the prefix `doc-plugin-`. Its main entry point should export an object named
* `apiDocumenterPluginManifest` which implements the {@link IApiDocumenterPluginManifest} interface.
*/
packageName: string;
/**
* A list of features to be enabled. The features are defined in {@link IApiDocumenterPluginManifest.features}.
* The `enabledFeatureNames` strings are matched with {@link IFeatureDefinition.featureName}.
*/
enabledFeatureNames: string[];
}
/**
* This interface represents the api-documenter.json file format.
*/
export interface IConfigFile {
/**
* Specifies the output target.
*/
outputTarget: 'docfx' | 'markdown';
/**
* Specifies what type of newlines API Documenter should use when writing output files.
*
* @remarks
* By default, the output files will be written with Windows-style newlines.
* To use POSIX-style newlines, specify "lf" instead.
* To use the OS's default newline kind, specify "os".
*/
newlineKind?: 'crlf' | 'lf' | 'os';
/**
* This enables an experimental feature that will be officially released with the next major version
* of API Documenter. It requires DocFX 2.46 or newer. It enables documentation for namespaces and
* adds them to the table of contents. This will also affect file layout as namespaced items will be nested
* under a directory for the namespace instead of just within the package.
*
* This setting currently only affects the 'docfx' output target. It is equivalent to the `--new-docfx-namespaces`
* command-line parameter.
*/
newDocfxNamespaces?: boolean;
/** {@inheritDoc IConfigPlugin} */
plugins?: IConfigPlugin[];
/** {@inheritDoc IConfigTableOfContents} */
tableOfContents?: IConfigTableOfContents;
/**
* Specifies whether inherited members should also be shown on an API item's page.
*/
showInheritedMembers?: boolean;
}
//# sourceMappingURL=IConfigFile.d.ts.map