@microsoft/api-documenter 7.18.4 → 7.19.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/tsdoc-metadata.json +1 -1
  2. package/lib/documenters/DocumenterConfig.d.ts +2 -2
  3. package/lib/documenters/DocumenterConfig.js +2 -2
  4. package/lib/documenters/DocumenterConfig.js.map +1 -1
  5. package/lib/documenters/IConfigFile.d.ts +4 -0
  6. package/lib/documenters/IConfigFile.d.ts.map +1 -1
  7. package/lib/documenters/IConfigFile.js.map +1 -1
  8. package/lib/documenters/MarkdownDocumenter.d.ts +1 -0
  9. package/lib/documenters/MarkdownDocumenter.d.ts.map +1 -1
  10. package/lib/documenters/MarkdownDocumenter.js +86 -42
  11. package/lib/documenters/MarkdownDocumenter.js.map +1 -1
  12. package/lib/documenters/YamlDocumenter.js +12 -12
  13. package/lib/documenters/YamlDocumenter.js.map +1 -1
  14. package/lib/markdown/CustomMarkdownEmitter.js +4 -4
  15. package/lib/markdown/CustomMarkdownEmitter.js.map +1 -1
  16. package/lib/nodes/CustomDocNodeKind.js +11 -11
  17. package/lib/nodes/CustomDocNodeKind.js.map +1 -1
  18. package/lib/nodes/DocEmphasisSpan.js +1 -1
  19. package/lib/nodes/DocEmphasisSpan.js.map +1 -1
  20. package/lib/nodes/DocHeading.js +1 -1
  21. package/lib/nodes/DocHeading.js.map +1 -1
  22. package/lib/nodes/DocNoteBox.js +1 -1
  23. package/lib/nodes/DocNoteBox.js.map +1 -1
  24. package/lib/nodes/DocTable.js +1 -1
  25. package/lib/nodes/DocTable.js.map +1 -1
  26. package/lib/nodes/DocTableCell.js +1 -1
  27. package/lib/nodes/DocTableCell.js.map +1 -1
  28. package/lib/nodes/DocTableRow.js +1 -1
  29. package/lib/nodes/DocTableRow.js.map +1 -1
  30. package/lib/schemas/api-documenter-template.json +7 -0
  31. package/lib/schemas/api-documenter.schema.json +5 -0
  32. package/package.json +7 -7
@@ -5,7 +5,7 @@
5
5
  "toolPackages": [
6
6
  {
7
7
  "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.28.4"
8
+ "packageVersion": "7.28.7"
9
9
  }
10
10
  ]
11
11
  }
@@ -14,11 +14,11 @@ export declare class DocumenterConfig {
14
14
  */
15
15
  readonly newlineKind: NewlineKind;
16
16
  /**
17
- * The JSON Schema for API Extractor config file (api-extractor.schema.json).
17
+ * The JSON Schema for API Documenter config file (api-documenter.schema.json).
18
18
  */
19
19
  static readonly jsonSchema: JsonSchema;
20
20
  /**
21
- * The config file name "api-extractor.json".
21
+ * The config file name "api-documenter.json".
22
22
  */
23
23
  static readonly FILENAME: string;
24
24
  private constructor();
@@ -59,11 +59,11 @@ class DocumenterConfig {
59
59
  }
60
60
  exports.DocumenterConfig = DocumenterConfig;
61
61
  /**
62
- * The JSON Schema for API Extractor config file (api-extractor.schema.json).
62
+ * The JSON Schema for API Documenter config file (api-documenter.schema.json).
63
63
  */
64
64
  DocumenterConfig.jsonSchema = node_core_library_1.JsonSchema.fromFile(path.join(__dirname, '..', 'schemas', 'api-documenter.schema.json'));
65
65
  /**
66
- * The config file name "api-extractor.json".
66
+ * The config file name "api-documenter.json".
67
67
  */
68
68
  DocumenterConfig.FILENAME = 'api-documenter.json';
69
69
  //# sourceMappingURL=DocumenterConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DocumenterConfig.js","sourceRoot":"","sources":["../../src/documenters/DocumenterConfig.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;;;;;;;;;;;;;;;;;;;;;;;;AAE3D,2CAA6B;AAC7B,oEAAiF;AAGjF;;;;GAIG;AACH,MAAa,gBAAgB;IAsB3B,YAAoB,QAAgB,EAAE,UAAuB;QAC3D,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,QAAQ,UAAU,CAAC,WAAW,EAAE;YAC9B,KAAK,IAAI;gBACP,IAAI,CAAC,WAAW,GAAG,+BAAW,CAAC,EAAE,CAAC;gBAClC,MAAM;YACR,KAAK,IAAI;gBACP,IAAI,CAAC,WAAW,GAAG,+BAAW,CAAC,SAAS,CAAC;gBACzC,MAAM;YACR;gBACE,IAAI,CAAC,WAAW,GAAG,+BAAW,CAAC,IAAI,CAAC;gBACpC,MAAM;SACT;IACH,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,QAAQ,CAAC,cAAsB;QAC3C,MAAM,UAAU,GAAgB,4BAAQ,CAAC,eAAe,CAAC,cAAc,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAEtG,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC;IACxE,CAAC;;AA9CH,4CA+CC;AArCC;;GAEG;AACoB,2BAAU,GAAe,8BAAU,CAAC,QAAQ,CACjE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,4BAA4B,CAAC,CACpE,CAAC;AAEF;;GAEG;AACoB,yBAAQ,GAAW,qBAAqB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport * as path from 'path';\nimport { JsonSchema, JsonFile, NewlineKind } from '@rushstack/node-core-library';\nimport { IConfigFile } from './IConfigFile';\n\n/**\n * Helper for loading the api-documenter.json file format. Later when the schema is more mature,\n * this class will be used to represent the validated and normalized configuration, whereas `IConfigFile`\n * represents the raw JSON file structure.\n */\nexport class DocumenterConfig {\n public readonly configFilePath: string;\n public readonly configFile: IConfigFile;\n\n /**\n * Specifies what type of newlines API Documenter should use when writing output files. By default, the output files\n * will be written with Windows-style newlines.\n */\n public readonly newlineKind: NewlineKind;\n\n /**\n * The JSON Schema for API Extractor config file (api-extractor.schema.json).\n */\n public static readonly jsonSchema: JsonSchema = JsonSchema.fromFile(\n path.join(__dirname, '..', 'schemas', 'api-documenter.schema.json')\n );\n\n /**\n * The config file name \"api-extractor.json\".\n */\n public static readonly FILENAME: string = 'api-documenter.json';\n\n private constructor(filePath: string, configFile: IConfigFile) {\n this.configFilePath = filePath;\n this.configFile = configFile;\n\n switch (configFile.newlineKind) {\n case 'lf':\n this.newlineKind = NewlineKind.Lf;\n break;\n case 'os':\n this.newlineKind = NewlineKind.OsDefault;\n break;\n default:\n this.newlineKind = NewlineKind.CrLf;\n break;\n }\n }\n\n /**\n * Load and validate an api-documenter.json file.\n */\n public static loadFile(configFilePath: string): DocumenterConfig {\n const configFile: IConfigFile = JsonFile.loadAndValidate(configFilePath, DocumenterConfig.jsonSchema);\n\n return new DocumenterConfig(path.resolve(configFilePath), configFile);\n }\n}\n"]}
1
+ {"version":3,"file":"DocumenterConfig.js","sourceRoot":"","sources":["../../src/documenters/DocumenterConfig.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;;;;;;;;;;;;;;;;;;;;;;;;AAE3D,2CAA6B;AAC7B,oEAAiF;AAGjF;;;;GAIG;AACH,MAAa,gBAAgB;IAsB3B,YAAoB,QAAgB,EAAE,UAAuB;QAC3D,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,QAAQ,UAAU,CAAC,WAAW,EAAE;YAC9B,KAAK,IAAI;gBACP,IAAI,CAAC,WAAW,GAAG,+BAAW,CAAC,EAAE,CAAC;gBAClC,MAAM;YACR,KAAK,IAAI;gBACP,IAAI,CAAC,WAAW,GAAG,+BAAW,CAAC,SAAS,CAAC;gBACzC,MAAM;YACR;gBACE,IAAI,CAAC,WAAW,GAAG,+BAAW,CAAC,IAAI,CAAC;gBACpC,MAAM;SACT;IACH,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,QAAQ,CAAC,cAAsB;QAC3C,MAAM,UAAU,GAAgB,4BAAQ,CAAC,eAAe,CAAC,cAAc,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAEtG,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC;IACxE,CAAC;;AA9CH,4CA+CC;AArCC;;GAEG;AACoB,2BAAU,GAAe,8BAAU,CAAC,QAAQ,CACjE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,4BAA4B,CAAC,CACpE,CAAC;AAEF;;GAEG;AACoB,yBAAQ,GAAW,qBAAqB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport * as path from 'path';\nimport { JsonSchema, JsonFile, NewlineKind } from '@rushstack/node-core-library';\nimport { IConfigFile } from './IConfigFile';\n\n/**\n * Helper for loading the api-documenter.json file format. Later when the schema is more mature,\n * this class will be used to represent the validated and normalized configuration, whereas `IConfigFile`\n * represents the raw JSON file structure.\n */\nexport class DocumenterConfig {\n public readonly configFilePath: string;\n public readonly configFile: IConfigFile;\n\n /**\n * Specifies what type of newlines API Documenter should use when writing output files. By default, the output files\n * will be written with Windows-style newlines.\n */\n public readonly newlineKind: NewlineKind;\n\n /**\n * The JSON Schema for API Documenter config file (api-documenter.schema.json).\n */\n public static readonly jsonSchema: JsonSchema = JsonSchema.fromFile(\n path.join(__dirname, '..', 'schemas', 'api-documenter.schema.json')\n );\n\n /**\n * The config file name \"api-documenter.json\".\n */\n public static readonly FILENAME: string = 'api-documenter.json';\n\n private constructor(filePath: string, configFile: IConfigFile) {\n this.configFilePath = filePath;\n this.configFile = configFile;\n\n switch (configFile.newlineKind) {\n case 'lf':\n this.newlineKind = NewlineKind.Lf;\n break;\n case 'os':\n this.newlineKind = NewlineKind.OsDefault;\n break;\n default:\n this.newlineKind = NewlineKind.CrLf;\n break;\n }\n }\n\n /**\n * Load and validate an api-documenter.json file.\n */\n public static loadFile(configFilePath: string): DocumenterConfig {\n const configFile: IConfigFile = JsonFile.loadAndValidate(configFilePath, DocumenterConfig.jsonSchema);\n\n return new DocumenterConfig(path.resolve(configFilePath), configFile);\n }\n}\n"]}
@@ -88,5 +88,9 @@ export interface IConfigFile {
88
88
  plugins?: IConfigPlugin[];
89
89
  /** {@inheritDoc IConfigTableOfContents} */
90
90
  tableOfContents?: IConfigTableOfContents;
91
+ /**
92
+ * Specifies whether inherited members should also be shown on an API item's page.
93
+ */
94
+ showInheritedMembers?: boolean;
91
95
  }
92
96
  //# sourceMappingURL=IConfigFile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IConfigFile.d.ts","sourceRoot":"","sources":["../../src/documenters/IConfigFile.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;;;OAMG;IACH,SAAS,EAAE,YAAY,CAAC;IAExB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,YAAY,EAAE,OAAO,GAAG,UAAU,CAAC;IAEnC;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAEnC;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,kCAAkC;IAClC,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAE1B,2CAA2C;IAC3C,eAAe,CAAC,EAAE,sBAAsB,CAAC;CAC1C"}
1
+ {"version":3,"file":"IConfigFile.d.ts","sourceRoot":"","sources":["../../src/documenters/IConfigFile.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;;;OAMG;IACH,SAAS,EAAE,YAAY,CAAC;IAExB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,YAAY,EAAE,OAAO,GAAG,UAAU,CAAC;IAEnC;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAEnC;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B,kCAAkC;IAClC,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAE1B,2CAA2C;IAC3C,eAAe,CAAC,EAAE,sBAAsB,CAAC;IAEzC;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC"}
@@ -1 +1 @@
1
- {"version":3,"file":"IConfigFile.js","sourceRoot":"","sources":["../../src/documenters/IConfigFile.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport { IYamlTocFile } from '../yaml/IYamlTocFile';\n\n/**\n * Typescript interface describing the config schema for toc.yml file format.\n */\nexport interface IConfigTableOfContents {\n /**\n * Represents the tree structure describing the toc.file format.\n * Nodes that have an empty `items` array property or their name will be included in the\n * {@link IConfigTableOfContents.nonEmptyCategoryNodeNames} will be filled with API items\n * that are matched with the filters provided. Everything else will be placed under\n * {@link IConfigTableOfContents.catchAllCategory} if provided, which is highly recommended.\n */\n tocConfig: IYamlTocFile;\n\n /**\n * Optional category name that is recommended to be included along with\n * one of the configs: {@link IConfigTableOfContents.categorizeByName} or\n * {@link IConfigTableOfContents.categoryInlineTag}.\n * Any items that are not matched according to the mentioned configuration options will be placed under this\n * catchAll category. If none provided the items will not be included in the final toc.yml file.\n */\n catchAllCategory?: string;\n\n /**\n * Toggle either categorization of the API items should be made based on category name presence\n * in the API item's name. Useful when there are API items without an inline tag to categorize them,\n * but still need to place the items under categories. Note: this type of categorization might place some items\n * under wrong categories if the names are similar but belong to different categories.\n * In case that {@link IConfigTableOfContents.categoryInlineTag} is provided it will try categorize by\n * using it and only if it didn't, it will attempt to categorize by name.\n */\n categorizeByName?: boolean;\n\n /**\n * Inline tag that will be used to categorize the API items. Will take precedence over the\n * {@link IConfigTableOfContents.categorizeByName} flag in trying to place the API item according to the\n * custom inline tag present in documentation of the source code.\n */\n categoryInlineTag?: string;\n\n /**\n * Array of node names that might have already items injected at the time of creating the\n * {@link IConfigTableOfContents.tocConfig} tree structure but are still needed to be included as category\n * nodes where API items will be pushed during the categorization algorithm.\n */\n nonEmptyCategoryNodeNames?: string[];\n}\n\n/**\n * Describes plugin packages to be loaded, and which features to enable.\n */\nexport interface IConfigPlugin {\n /**\n * Specifies the name of an API Documenter plugin package to be loaded. By convention, the NPM package name\n * should have the prefix `doc-plugin-`. Its main entry point should export an object named\n * `apiDocumenterPluginManifest` which implements the {@link IApiDocumenterPluginManifest} interface.\n */\n packageName: string;\n\n /**\n * A list of features to be enabled. The features are defined in {@link IApiDocumenterPluginManifest.features}.\n * The `enabledFeatureNames` strings are matched with {@link IFeatureDefinition.featureName}.\n */\n enabledFeatureNames: string[];\n}\n\n/**\n * This interface represents the api-documenter.json file format.\n */\nexport interface IConfigFile {\n /**\n * Specifies the output target.\n */\n outputTarget: 'docfx' | 'markdown';\n\n /**\n * Specifies what type of newlines API Documenter should use when writing output files.\n *\n * @remarks\n * By default, the output files will be written with Windows-style newlines.\n * To use POSIX-style newlines, specify \"lf\" instead.\n * To use the OS's default newline kind, specify \"os\".\n */\n newlineKind?: 'crlf' | 'lf' | 'os';\n\n /**\n * This enables an experimental feature that will be officially released with the next major version\n * of API Documenter. It requires DocFX 2.46 or newer. It enables documentation for namespaces and\n * adds them to the table of contents. This will also affect file layout as namespaced items will be nested\n * under a directory for the namespace instead of just within the package.\n *\n * This setting currently only affects the 'docfx' output target. It is equivalent to the `--new-docfx-namespaces`\n * command-line parameter.\n */\n newDocfxNamespaces?: boolean;\n\n /** {@inheritDoc IConfigPlugin} */\n plugins?: IConfigPlugin[];\n\n /** {@inheritDoc IConfigTableOfContents} */\n tableOfContents?: IConfigTableOfContents;\n}\n"]}
1
+ {"version":3,"file":"IConfigFile.js","sourceRoot":"","sources":["../../src/documenters/IConfigFile.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport { IYamlTocFile } from '../yaml/IYamlTocFile';\n\n/**\n * Typescript interface describing the config schema for toc.yml file format.\n */\nexport interface IConfigTableOfContents {\n /**\n * Represents the tree structure describing the toc.file format.\n * Nodes that have an empty `items` array property or their name will be included in the\n * {@link IConfigTableOfContents.nonEmptyCategoryNodeNames} will be filled with API items\n * that are matched with the filters provided. Everything else will be placed under\n * {@link IConfigTableOfContents.catchAllCategory} if provided, which is highly recommended.\n */\n tocConfig: IYamlTocFile;\n\n /**\n * Optional category name that is recommended to be included along with\n * one of the configs: {@link IConfigTableOfContents.categorizeByName} or\n * {@link IConfigTableOfContents.categoryInlineTag}.\n * Any items that are not matched according to the mentioned configuration options will be placed under this\n * catchAll category. If none provided the items will not be included in the final toc.yml file.\n */\n catchAllCategory?: string;\n\n /**\n * Toggle either categorization of the API items should be made based on category name presence\n * in the API item's name. Useful when there are API items without an inline tag to categorize them,\n * but still need to place the items under categories. Note: this type of categorization might place some items\n * under wrong categories if the names are similar but belong to different categories.\n * In case that {@link IConfigTableOfContents.categoryInlineTag} is provided it will try categorize by\n * using it and only if it didn't, it will attempt to categorize by name.\n */\n categorizeByName?: boolean;\n\n /**\n * Inline tag that will be used to categorize the API items. Will take precedence over the\n * {@link IConfigTableOfContents.categorizeByName} flag in trying to place the API item according to the\n * custom inline tag present in documentation of the source code.\n */\n categoryInlineTag?: string;\n\n /**\n * Array of node names that might have already items injected at the time of creating the\n * {@link IConfigTableOfContents.tocConfig} tree structure but are still needed to be included as category\n * nodes where API items will be pushed during the categorization algorithm.\n */\n nonEmptyCategoryNodeNames?: string[];\n}\n\n/**\n * Describes plugin packages to be loaded, and which features to enable.\n */\nexport interface IConfigPlugin {\n /**\n * Specifies the name of an API Documenter plugin package to be loaded. By convention, the NPM package name\n * should have the prefix `doc-plugin-`. Its main entry point should export an object named\n * `apiDocumenterPluginManifest` which implements the {@link IApiDocumenterPluginManifest} interface.\n */\n packageName: string;\n\n /**\n * A list of features to be enabled. The features are defined in {@link IApiDocumenterPluginManifest.features}.\n * The `enabledFeatureNames` strings are matched with {@link IFeatureDefinition.featureName}.\n */\n enabledFeatureNames: string[];\n}\n\n/**\n * This interface represents the api-documenter.json file format.\n */\nexport interface IConfigFile {\n /**\n * Specifies the output target.\n */\n outputTarget: 'docfx' | 'markdown';\n\n /**\n * Specifies what type of newlines API Documenter should use when writing output files.\n *\n * @remarks\n * By default, the output files will be written with Windows-style newlines.\n * To use POSIX-style newlines, specify \"lf\" instead.\n * To use the OS's default newline kind, specify \"os\".\n */\n newlineKind?: 'crlf' | 'lf' | 'os';\n\n /**\n * This enables an experimental feature that will be officially released with the next major version\n * of API Documenter. It requires DocFX 2.46 or newer. It enables documentation for namespaces and\n * adds them to the table of contents. This will also affect file layout as namespaced items will be nested\n * under a directory for the namespace instead of just within the package.\n *\n * This setting currently only affects the 'docfx' output target. It is equivalent to the `--new-docfx-namespaces`\n * command-line parameter.\n */\n newDocfxNamespaces?: boolean;\n\n /** {@inheritDoc IConfigPlugin} */\n plugins?: IConfigPlugin[];\n\n /** {@inheritDoc IConfigTableOfContents} */\n tableOfContents?: IConfigTableOfContents;\n\n /**\n * Specifies whether inherited members should also be shown on an API item's page.\n */\n showInheritedMembers?: boolean;\n}\n"]}
@@ -65,6 +65,7 @@ export declare class MarkdownDocumenter {
65
65
  private _writeBetaWarning;
66
66
  private _appendSection;
67
67
  private _appendAndMergeSection;
68
+ private _getMembersAndWriteIncompleteWarning;
68
69
  private _getFilenameForApiItem;
69
70
  private _getLinkFilenameForApiItem;
70
71
  private _deleteOldOutputFiles;
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownDocumenter.d.ts","sourceRoot":"","sources":["../../src/documenters/MarkdownDocumenter.ts"],"names":[],"mappings":"AAoBA,OAAO,EACL,QAAQ,EAyBT,MAAM,gCAAgC,CAAC;AAgBxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC/C,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA+B;IACjE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqB;IACzD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAwB;IACzD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;gBAE1B,OAAO,EAAE,0BAA0B;IAU/C,aAAa,IAAI,IAAI;IAyB5B,OAAO,CAAC,iBAAiB;IAiNzB,OAAO,CAAC,mBAAmB;IAmF3B,OAAO,CAAC,oBAAoB;IA8B5B,OAAO,CAAC,mBAAmB;IAsB3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA4BxB;;OAEG;IACH,OAAO,CAAC,8BAA8B;IA0HtC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiGzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA8BxB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA2E7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA+D7B,OAAO,CAAC,8BAA8B;IActC,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,iCAAiC;IAgCzC,OAAO,CAAC,gBAAgB;IAoBxB;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;IAkC9B,OAAO,CAAC,oBAAoB;IAgC5B,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,gBAAgB;IAmCxB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,sBAAsB;IAgC9B,OAAO,CAAC,0BAA0B;IAIlC,OAAO,CAAC,qBAAqB;CAI9B"}
1
+ {"version":3,"file":"MarkdownDocumenter.d.ts","sourceRoot":"","sources":["../../src/documenters/MarkdownDocumenter.ts"],"names":[],"mappings":"AAoBA,OAAO,EACL,QAAQ,EA0BT,MAAM,gCAAgC,CAAC;AAgBxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC/C,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA+B;IACjE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqB;IACzD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAwB;IACzD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;gBAE1B,OAAO,EAAE,0BAA0B;IAU/C,aAAa,IAAI,IAAI;IAyB5B,OAAO,CAAC,iBAAiB;IAiNzB,OAAO,CAAC,mBAAmB;IAmF3B,OAAO,CAAC,oBAAoB;IAgC5B,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA4BxB;;OAEG;IACH,OAAO,CAAC,8BAA8B;IA0HtC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAmGzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA4BxB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA6E7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA+D7B,OAAO,CAAC,8BAA8B;IActC,OAAO,CAAC,4BAA4B;IAMpC,OAAO,CAAC,iCAAiC;IAgCzC,OAAO,CAAC,gBAAgB;IAoBxB;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;IAiD9B,OAAO,CAAC,oBAAoB;IAgC5B,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,gBAAgB;IAqCxB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,oCAAoC;IAkC5C,OAAO,CAAC,sBAAsB;IAgC9B,OAAO,CAAC,0BAA0B;IAIlC,OAAO,CAAC,qBAAqB;CAI9B"}
@@ -78,7 +78,7 @@ class MarkdownDocumenter {
78
78
  }
79
79
  _writeApiItemPage(apiItem) {
80
80
  const configuration = this._tsdocConfiguration;
81
- const output = new tsdoc_1.DocSection({ configuration: this._tsdocConfiguration });
81
+ const output = new tsdoc_1.DocSection({ configuration });
82
82
  this._writeBreadcrumb(output, apiItem);
83
83
  const scopedName = apiItem.getScopedNameWithinPackage();
84
84
  switch (apiItem.kind) {
@@ -137,10 +137,10 @@ class MarkdownDocumenter {
137
137
  if (tsdocComment) {
138
138
  decoratorBlocks.push(...tsdocComment.customBlocks.filter((block) => block.blockTag.tagNameWithUpperCase === tsdoc_1.StandardTags.decorator.tagNameWithUpperCase));
139
139
  if (tsdocComment.deprecatedBlock) {
140
- output.appendNode(new DocNoteBox_1.DocNoteBox({ configuration: this._tsdocConfiguration }, [
141
- new tsdoc_1.DocParagraph({ configuration: this._tsdocConfiguration }, [
140
+ output.appendNode(new DocNoteBox_1.DocNoteBox({ configuration }, [
141
+ new tsdoc_1.DocParagraph({ configuration }, [
142
142
  new tsdoc_1.DocPlainText({
143
- configuration: this._tsdocConfiguration,
143
+ configuration,
144
144
  text: 'Warning: This API is now obsolete. '
145
145
  })
146
146
  ]),
@@ -262,7 +262,7 @@ class MarkdownDocumenter {
262
262
  output.appendNode(extendsParagraph);
263
263
  }
264
264
  if (apiItem.implementsTypes.length > 0) {
265
- const extendsParagraph = new tsdoc_1.DocParagraph({ configuration }, [
265
+ const implementsParagraph = new tsdoc_1.DocParagraph({ configuration }, [
266
266
  new DocEmphasisSpan_1.DocEmphasisSpan({ configuration, bold: true }, [
267
267
  new tsdoc_1.DocPlainText({ configuration, text: 'Implements: ' })
268
268
  ])
@@ -270,12 +270,12 @@ class MarkdownDocumenter {
270
270
  let needsComma = false;
271
271
  for (const implementsType of apiItem.implementsTypes) {
272
272
  if (needsComma) {
273
- extendsParagraph.appendNode(new tsdoc_1.DocPlainText({ configuration, text: ', ' }));
273
+ implementsParagraph.appendNode(new tsdoc_1.DocPlainText({ configuration, text: ', ' }));
274
274
  }
275
- this._appendExcerptWithHyperlinks(extendsParagraph, implementsType.excerpt);
275
+ this._appendExcerptWithHyperlinks(implementsParagraph, implementsType.excerpt);
276
276
  needsComma = true;
277
277
  }
278
- output.appendNode(extendsParagraph);
278
+ output.appendNode(implementsParagraph);
279
279
  }
280
280
  }
281
281
  if (apiItem instanceof api_extractor_model_1.ApiInterface) {
@@ -324,12 +324,13 @@ class MarkdownDocumenter {
324
324
  }
325
325
  }
326
326
  _writeRemarksSection(output, apiItem) {
327
+ const configuration = this._tsdocConfiguration;
327
328
  if (apiItem instanceof api_extractor_model_1.ApiDocumentedItem) {
328
329
  const tsdocComment = apiItem.tsdocComment;
329
330
  if (tsdocComment) {
330
331
  // Write the @remarks block
331
332
  if (tsdocComment.remarksBlock) {
332
- output.appendNode(new DocHeading_1.DocHeading({ configuration: this._tsdocConfiguration, title: 'Remarks' }));
333
+ output.appendNode(new DocHeading_1.DocHeading({ configuration, title: 'Remarks' }));
333
334
  this._appendSection(output, tsdocComment.remarksBlock.content);
334
335
  }
335
336
  // Write the @example blocks
@@ -337,7 +338,7 @@ class MarkdownDocumenter {
337
338
  let exampleNumber = 1;
338
339
  for (const exampleBlock of exampleBlocks) {
339
340
  const heading = exampleBlocks.length > 1 ? `Example ${exampleNumber}` : 'Example';
340
- output.appendNode(new DocHeading_1.DocHeading({ configuration: this._tsdocConfiguration, title: heading }));
341
+ output.appendNode(new DocHeading_1.DocHeading({ configuration, title: heading }));
341
342
  this._appendSection(output, exampleBlock.content);
342
343
  ++exampleNumber;
343
344
  }
@@ -345,6 +346,7 @@ class MarkdownDocumenter {
345
346
  }
346
347
  }
347
348
  _writeThrowsSection(output, apiItem) {
349
+ const configuration = this._tsdocConfiguration;
348
350
  if (apiItem instanceof api_extractor_model_1.ApiDocumentedItem) {
349
351
  const tsdocComment = apiItem.tsdocComment;
350
352
  if (tsdocComment) {
@@ -352,7 +354,7 @@ class MarkdownDocumenter {
352
354
  const throwsBlocks = tsdocComment.customBlocks.filter((x) => x.blockTag.tagNameWithUpperCase === tsdoc_1.StandardTags.throws.tagNameWithUpperCase);
353
355
  if (throwsBlocks.length > 0) {
354
356
  const heading = 'Exceptions';
355
- output.appendNode(new DocHeading_1.DocHeading({ configuration: this._tsdocConfiguration, title: heading }));
357
+ output.appendNode(new DocHeading_1.DocHeading({ configuration, title: heading }));
356
358
  for (const throwsBlock of throwsBlocks) {
357
359
  this._appendSection(output, throwsBlock.content);
358
360
  }
@@ -382,7 +384,7 @@ class MarkdownDocumenter {
382
384
  }
383
385
  }
384
386
  if (packagesTable.rows.length > 0) {
385
- output.appendNode(new DocHeading_1.DocHeading({ configuration: this._tsdocConfiguration, title: 'Packages' }));
387
+ output.appendNode(new DocHeading_1.DocHeading({ configuration, title: 'Packages' }));
386
388
  output.appendNode(packagesTable);
387
389
  }
388
390
  }
@@ -459,31 +461,31 @@ class MarkdownDocumenter {
459
461
  }
460
462
  }
461
463
  if (classesTable.rows.length > 0) {
462
- output.appendNode(new DocHeading_1.DocHeading({ configuration: this._tsdocConfiguration, title: 'Classes' }));
464
+ output.appendNode(new DocHeading_1.DocHeading({ configuration, title: 'Classes' }));
463
465
  output.appendNode(classesTable);
464
466
  }
465
467
  if (enumerationsTable.rows.length > 0) {
466
- output.appendNode(new DocHeading_1.DocHeading({ configuration: this._tsdocConfiguration, title: 'Enumerations' }));
468
+ output.appendNode(new DocHeading_1.DocHeading({ configuration, title: 'Enumerations' }));
467
469
  output.appendNode(enumerationsTable);
468
470
  }
469
471
  if (functionsTable.rows.length > 0) {
470
- output.appendNode(new DocHeading_1.DocHeading({ configuration: this._tsdocConfiguration, title: 'Functions' }));
472
+ output.appendNode(new DocHeading_1.DocHeading({ configuration, title: 'Functions' }));
471
473
  output.appendNode(functionsTable);
472
474
  }
473
475
  if (interfacesTable.rows.length > 0) {
474
- output.appendNode(new DocHeading_1.DocHeading({ configuration: this._tsdocConfiguration, title: 'Interfaces' }));
476
+ output.appendNode(new DocHeading_1.DocHeading({ configuration, title: 'Interfaces' }));
475
477
  output.appendNode(interfacesTable);
476
478
  }
477
479
  if (namespacesTable.rows.length > 0) {
478
- output.appendNode(new DocHeading_1.DocHeading({ configuration: this._tsdocConfiguration, title: 'Namespaces' }));
480
+ output.appendNode(new DocHeading_1.DocHeading({ configuration, title: 'Namespaces' }));
479
481
  output.appendNode(namespacesTable);
480
482
  }
481
483
  if (variablesTable.rows.length > 0) {
482
- output.appendNode(new DocHeading_1.DocHeading({ configuration: this._tsdocConfiguration, title: 'Variables' }));
484
+ output.appendNode(new DocHeading_1.DocHeading({ configuration, title: 'Variables' }));
483
485
  output.appendNode(variablesTable);
484
486
  }
485
487
  if (typeAliasesTable.rows.length > 0) {
486
- output.appendNode(new DocHeading_1.DocHeading({ configuration: this._tsdocConfiguration, title: 'Type Aliases' }));
488
+ output.appendNode(new DocHeading_1.DocHeading({ configuration, title: 'Type Aliases' }));
487
489
  output.appendNode(typeAliasesTable);
488
490
  }
489
491
  }
@@ -508,13 +510,15 @@ class MarkdownDocumenter {
508
510
  configuration,
509
511
  headerTitles: ['Method', 'Modifiers', 'Description']
510
512
  });
511
- for (const apiMember of apiClass.members) {
513
+ const apiMembers = this._getMembersAndWriteIncompleteWarning(apiClass, output);
514
+ for (const apiMember of apiMembers) {
515
+ const isInherited = apiMember.parent !== apiClass;
512
516
  switch (apiMember.kind) {
513
517
  case api_extractor_model_1.ApiItemKind.Constructor: {
514
518
  constructorsTable.addRow(new DocTableRow_1.DocTableRow({ configuration }, [
515
519
  this._createTitleCell(apiMember),
516
520
  this._createModifiersCell(apiMember),
517
- this._createDescriptionCell(apiMember)
521
+ this._createDescriptionCell(apiMember, isInherited)
518
522
  ]));
519
523
  this._writeApiItemPage(apiMember);
520
524
  break;
@@ -523,7 +527,7 @@ class MarkdownDocumenter {
523
527
  methodsTable.addRow(new DocTableRow_1.DocTableRow({ configuration }, [
524
528
  this._createTitleCell(apiMember),
525
529
  this._createModifiersCell(apiMember),
526
- this._createDescriptionCell(apiMember)
530
+ this._createDescriptionCell(apiMember, isInherited)
527
531
  ]));
528
532
  this._writeApiItemPage(apiMember);
529
533
  break;
@@ -534,7 +538,7 @@ class MarkdownDocumenter {
534
538
  this._createTitleCell(apiMember),
535
539
  this._createModifiersCell(apiMember),
536
540
  this._createPropertyTypeCell(apiMember),
537
- this._createDescriptionCell(apiMember)
541
+ this._createDescriptionCell(apiMember, isInherited)
538
542
  ]));
539
543
  }
540
544
  else {
@@ -542,7 +546,7 @@ class MarkdownDocumenter {
542
546
  this._createTitleCell(apiMember),
543
547
  this._createModifiersCell(apiMember),
544
548
  this._createPropertyTypeCell(apiMember),
545
- this._createDescriptionCell(apiMember)
549
+ this._createDescriptionCell(apiMember, isInherited)
546
550
  ]));
547
551
  }
548
552
  this._writeApiItemPage(apiMember);
@@ -551,19 +555,19 @@ class MarkdownDocumenter {
551
555
  }
552
556
  }
553
557
  if (eventsTable.rows.length > 0) {
554
- output.appendNode(new DocHeading_1.DocHeading({ configuration: this._tsdocConfiguration, title: 'Events' }));
558
+ output.appendNode(new DocHeading_1.DocHeading({ configuration, title: 'Events' }));
555
559
  output.appendNode(eventsTable);
556
560
  }
557
561
  if (constructorsTable.rows.length > 0) {
558
- output.appendNode(new DocHeading_1.DocHeading({ configuration: this._tsdocConfiguration, title: 'Constructors' }));
562
+ output.appendNode(new DocHeading_1.DocHeading({ configuration, title: 'Constructors' }));
559
563
  output.appendNode(constructorsTable);
560
564
  }
561
565
  if (propertiesTable.rows.length > 0) {
562
- output.appendNode(new DocHeading_1.DocHeading({ configuration: this._tsdocConfiguration, title: 'Properties' }));
566
+ output.appendNode(new DocHeading_1.DocHeading({ configuration, title: 'Properties' }));
563
567
  output.appendNode(propertiesTable);
564
568
  }
565
569
  if (methodsTable.rows.length > 0) {
566
- output.appendNode(new DocHeading_1.DocHeading({ configuration: this._tsdocConfiguration, title: 'Methods' }));
570
+ output.appendNode(new DocHeading_1.DocHeading({ configuration, title: 'Methods' }));
567
571
  output.appendNode(methodsTable);
568
572
  }
569
573
  }
@@ -588,14 +592,14 @@ class MarkdownDocumenter {
588
592
  ]));
589
593
  }
590
594
  if (enumMembersTable.rows.length > 0) {
591
- output.appendNode(new DocHeading_1.DocHeading({ configuration: this._tsdocConfiguration, title: 'Enumeration Members' }));
595
+ output.appendNode(new DocHeading_1.DocHeading({ configuration, title: 'Enumeration Members' }));
592
596
  output.appendNode(enumMembersTable);
593
597
  }
594
598
  }
595
599
  /**
596
600
  * GENERATE PAGE: INTERFACE
597
601
  */
598
- _writeInterfaceTables(output, apiClass) {
602
+ _writeInterfaceTables(output, apiInterface) {
599
603
  const configuration = this._tsdocConfiguration;
600
604
  const eventsTable = new DocTable_1.DocTable({
601
605
  configuration,
@@ -609,13 +613,15 @@ class MarkdownDocumenter {
609
613
  configuration,
610
614
  headerTitles: ['Method', 'Description']
611
615
  });
612
- for (const apiMember of apiClass.members) {
616
+ const apiMembers = this._getMembersAndWriteIncompleteWarning(apiInterface, output);
617
+ for (const apiMember of apiMembers) {
618
+ const isInherited = apiMember.parent !== apiInterface;
613
619
  switch (apiMember.kind) {
614
620
  case api_extractor_model_1.ApiItemKind.ConstructSignature:
615
621
  case api_extractor_model_1.ApiItemKind.MethodSignature: {
616
622
  methodsTable.addRow(new DocTableRow_1.DocTableRow({ configuration }, [
617
623
  this._createTitleCell(apiMember),
618
- this._createDescriptionCell(apiMember)
624
+ this._createDescriptionCell(apiMember, isInherited)
619
625
  ]));
620
626
  this._writeApiItemPage(apiMember);
621
627
  break;
@@ -626,7 +632,7 @@ class MarkdownDocumenter {
626
632
  this._createTitleCell(apiMember),
627
633
  this._createModifiersCell(apiMember),
628
634
  this._createPropertyTypeCell(apiMember),
629
- this._createDescriptionCell(apiMember)
635
+ this._createDescriptionCell(apiMember, isInherited)
630
636
  ]));
631
637
  }
632
638
  else {
@@ -634,7 +640,7 @@ class MarkdownDocumenter {
634
640
  this._createTitleCell(apiMember),
635
641
  this._createModifiersCell(apiMember),
636
642
  this._createPropertyTypeCell(apiMember),
637
- this._createDescriptionCell(apiMember)
643
+ this._createDescriptionCell(apiMember, isInherited)
638
644
  ]));
639
645
  }
640
646
  this._writeApiItemPage(apiMember);
@@ -643,15 +649,15 @@ class MarkdownDocumenter {
643
649
  }
644
650
  }
645
651
  if (eventsTable.rows.length > 0) {
646
- output.appendNode(new DocHeading_1.DocHeading({ configuration: this._tsdocConfiguration, title: 'Events' }));
652
+ output.appendNode(new DocHeading_1.DocHeading({ configuration, title: 'Events' }));
647
653
  output.appendNode(eventsTable);
648
654
  }
649
655
  if (propertiesTable.rows.length > 0) {
650
- output.appendNode(new DocHeading_1.DocHeading({ configuration: this._tsdocConfiguration, title: 'Properties' }));
656
+ output.appendNode(new DocHeading_1.DocHeading({ configuration, title: 'Properties' }));
651
657
  output.appendNode(propertiesTable);
652
658
  }
653
659
  if (methodsTable.rows.length > 0) {
654
- output.appendNode(new DocHeading_1.DocHeading({ configuration: this._tsdocConfiguration, title: 'Methods' }));
660
+ output.appendNode(new DocHeading_1.DocHeading({ configuration, title: 'Methods' }));
655
661
  output.appendNode(methodsTable);
656
662
  }
657
663
  }
@@ -690,7 +696,7 @@ class MarkdownDocumenter {
690
696
  ]));
691
697
  }
692
698
  if (parametersTable.rows.length > 0) {
693
- output.appendNode(new DocHeading_1.DocHeading({ configuration: this._tsdocConfiguration, title: 'Parameters' }));
699
+ output.appendNode(new DocHeading_1.DocHeading({ configuration, title: 'Parameters' }));
694
700
  output.appendNode(parametersTable);
695
701
  }
696
702
  if (api_extractor_model_1.ApiReturnTypeMixin.isBaseClassOf(apiParameterListMixin)) {
@@ -770,7 +776,7 @@ class MarkdownDocumenter {
770
776
  * We mostly assume that the input is an ApiDocumentedItem, but it's easier to perform this as a runtime
771
777
  * check than to have each caller perform a type cast.
772
778
  */
773
- _createDescriptionCell(apiItem) {
779
+ _createDescriptionCell(apiItem, isInherited = false) {
774
780
  const configuration = this._tsdocConfiguration;
775
781
  const section = new tsdoc_1.DocSection({ configuration });
776
782
  if (api_extractor_model_1.ApiReleaseTagMixin.isBaseClassOf(apiItem)) {
@@ -796,6 +802,18 @@ class MarkdownDocumenter {
796
802
  this._appendAndMergeSection(section, apiItem.tsdocComment.summarySection);
797
803
  }
798
804
  }
805
+ if (isInherited && apiItem.parent) {
806
+ section.appendNode(new tsdoc_1.DocParagraph({ configuration }, [
807
+ new tsdoc_1.DocPlainText({ configuration, text: '(Inherited from ' }),
808
+ new tsdoc_1.DocLinkTag({
809
+ configuration,
810
+ tagName: '@link',
811
+ linkText: apiItem.parent.displayName,
812
+ urlDestination: this._getLinkFilenameForApiItem(apiItem.parent)
813
+ }),
814
+ new tsdoc_1.DocPlainText({ configuration, text: ')' })
815
+ ]));
816
+ }
799
817
  return new DocTableCell_1.DocTableCell({ configuration }, section.nodes);
800
818
  }
801
819
  _createModifiersCell(apiItem) {
@@ -837,8 +855,9 @@ class MarkdownDocumenter {
837
855
  return new DocTableCell_1.DocTableCell({ configuration }, section.nodes);
838
856
  }
839
857
  _writeBreadcrumb(output, apiItem) {
858
+ const configuration = this._tsdocConfiguration;
840
859
  output.appendNodeInParagraph(new tsdoc_1.DocLinkTag({
841
- configuration: this._tsdocConfiguration,
860
+ configuration,
842
861
  tagName: '@link',
843
862
  linkText: 'Home',
844
863
  urlDestination: this._getLinkFilenameForApiItem(this._apiModel)
@@ -854,11 +873,11 @@ class MarkdownDocumenter {
854
873
  default:
855
874
  output.appendNodesInParagraph([
856
875
  new tsdoc_1.DocPlainText({
857
- configuration: this._tsdocConfiguration,
876
+ configuration,
858
877
  text: ' > '
859
878
  }),
860
879
  new tsdoc_1.DocLinkTag({
861
- configuration: this._tsdocConfiguration,
880
+ configuration,
862
881
  tagName: '@link',
863
882
  linkText: hierarchyItem.displayName,
864
883
  urlDestination: this._getLinkFilenameForApiItem(hierarchyItem)
@@ -894,6 +913,31 @@ class MarkdownDocumenter {
894
913
  output.appendNode(node);
895
914
  }
896
915
  }
916
+ _getMembersAndWriteIncompleteWarning(apiClassOrInterface, output) {
917
+ var _a;
918
+ const configuration = this._tsdocConfiguration;
919
+ const showInheritedMembers = !!((_a = this._documenterConfig) === null || _a === void 0 ? void 0 : _a.configFile.showInheritedMembers);
920
+ if (!showInheritedMembers) {
921
+ return apiClassOrInterface.members;
922
+ }
923
+ const result = apiClassOrInterface.findMembersWithInheritance();
924
+ // If the result is potentially incomplete, write a short warning communicating this.
925
+ if (result.maybeIncompleteResult) {
926
+ output.appendNode(new tsdoc_1.DocParagraph({ configuration }, [
927
+ new DocEmphasisSpan_1.DocEmphasisSpan({ configuration, italic: true }, [
928
+ new tsdoc_1.DocPlainText({
929
+ configuration,
930
+ text: '(Some inherited members may not be shown because they are not represented in the documentation.)'
931
+ })
932
+ ])
933
+ ]));
934
+ }
935
+ // Log the messages for diagnostic purposes.
936
+ for (const message of result.messages) {
937
+ console.log(`Diagnostic message for findMembersWithInheritance: ${message.text}`);
938
+ }
939
+ return result.items;
940
+ }
897
941
  _getFilenameForApiItem(apiItem) {
898
942
  if (apiItem.kind === api_extractor_model_1.ApiItemKind.Model) {
899
943
  return 'index.md';