@microsoft/api-documenter 7.18.4 → 7.19.0

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.
@@ -5,7 +5,7 @@
5
5
  "toolPackages": [
6
6
  {
7
7
  "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.28.4"
8
+ "packageVersion": "7.28.5"
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';
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownDocumenter.js","sourceRoot":"","sources":["../../src/documenters/MarkdownDocumenter.ts"],"names":[],"mappings":"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","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 { PackageName, FileSystem, NewlineKind } from '@rushstack/node-core-library';\nimport {\n DocSection,\n DocPlainText,\n DocLinkTag,\n TSDocConfiguration,\n StringBuilder,\n DocNodeKind,\n DocParagraph,\n DocCodeSpan,\n DocFencedCode,\n StandardTags,\n DocBlock,\n DocComment,\n DocNodeContainer\n} from '@microsoft/tsdoc';\nimport {\n ApiModel,\n ApiItem,\n ApiEnum,\n ApiPackage,\n ApiItemKind,\n ApiReleaseTagMixin,\n ApiDocumentedItem,\n ApiClass,\n ReleaseTag,\n ApiStaticMixin,\n ApiPropertyItem,\n ApiInterface,\n Excerpt,\n ApiParameterListMixin,\n ApiReturnTypeMixin,\n ApiDeclaredItem,\n ApiNamespace,\n ExcerptTokenKind,\n IResolveDeclarationReferenceResult,\n ApiTypeAlias,\n ExcerptToken,\n ApiOptionalMixin,\n ApiInitializerMixin,\n ApiProtectedMixin,\n ApiReadonlyMixin\n} from '@microsoft/api-extractor-model';\n\nimport { CustomDocNodes } from '../nodes/CustomDocNodeKind';\nimport { DocHeading } from '../nodes/DocHeading';\nimport { DocTable } from '../nodes/DocTable';\nimport { DocEmphasisSpan } from '../nodes/DocEmphasisSpan';\nimport { DocTableRow } from '../nodes/DocTableRow';\nimport { DocTableCell } from '../nodes/DocTableCell';\nimport { DocNoteBox } from '../nodes/DocNoteBox';\nimport { Utilities } from '../utils/Utilities';\nimport { CustomMarkdownEmitter } from '../markdown/CustomMarkdownEmitter';\nimport { PluginLoader } from '../plugin/PluginLoader';\nimport {\n IMarkdownDocumenterFeatureOnBeforeWritePageArgs,\n MarkdownDocumenterFeatureContext\n} from '../plugin/MarkdownDocumenterFeature';\nimport { DocumenterConfig } from './DocumenterConfig';\nimport { MarkdownDocumenterAccessor } from '../plugin/MarkdownDocumenterAccessor';\n\nexport interface IMarkdownDocumenterOptions {\n apiModel: ApiModel;\n documenterConfig: DocumenterConfig | undefined;\n outputFolder: string;\n}\n\n/**\n * Renders API documentation in the Markdown file format.\n * For more info: https://en.wikipedia.org/wiki/Markdown\n */\nexport class MarkdownDocumenter {\n private readonly _apiModel: ApiModel;\n private readonly _documenterConfig: DocumenterConfig | undefined;\n private readonly _tsdocConfiguration: TSDocConfiguration;\n private readonly _markdownEmitter: CustomMarkdownEmitter;\n private readonly _outputFolder: string;\n private readonly _pluginLoader: PluginLoader;\n\n public constructor(options: IMarkdownDocumenterOptions) {\n this._apiModel = options.apiModel;\n this._documenterConfig = options.documenterConfig;\n this._outputFolder = options.outputFolder;\n this._tsdocConfiguration = CustomDocNodes.configuration;\n this._markdownEmitter = new CustomMarkdownEmitter(this._apiModel);\n\n this._pluginLoader = new PluginLoader();\n }\n\n public generateFiles(): void {\n if (this._documenterConfig) {\n this._pluginLoader.load(this._documenterConfig, () => {\n return new MarkdownDocumenterFeatureContext({\n apiModel: this._apiModel,\n outputFolder: this._outputFolder,\n documenter: new MarkdownDocumenterAccessor({\n getLinkForApiItem: (apiItem: ApiItem) => {\n return this._getLinkFilenameForApiItem(apiItem);\n }\n })\n });\n });\n }\n\n console.log();\n this._deleteOldOutputFiles();\n\n this._writeApiItemPage(this._apiModel);\n\n if (this._pluginLoader.markdownDocumenterFeature) {\n this._pluginLoader.markdownDocumenterFeature.onFinished({});\n }\n }\n\n private _writeApiItemPage(apiItem: ApiItem): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n const output: DocSection = new DocSection({ configuration: this._tsdocConfiguration });\n\n this._writeBreadcrumb(output, apiItem);\n\n const scopedName: string = apiItem.getScopedNameWithinPackage();\n\n switch (apiItem.kind) {\n case ApiItemKind.Class:\n output.appendNode(new DocHeading({ configuration, title: `${scopedName} class` }));\n break;\n case ApiItemKind.Enum:\n output.appendNode(new DocHeading({ configuration, title: `${scopedName} enum` }));\n break;\n case ApiItemKind.Interface:\n output.appendNode(new DocHeading({ configuration, title: `${scopedName} interface` }));\n break;\n case ApiItemKind.Constructor:\n case ApiItemKind.ConstructSignature:\n output.appendNode(new DocHeading({ configuration, title: scopedName }));\n break;\n case ApiItemKind.Method:\n case ApiItemKind.MethodSignature:\n output.appendNode(new DocHeading({ configuration, title: `${scopedName} method` }));\n break;\n case ApiItemKind.Function:\n output.appendNode(new DocHeading({ configuration, title: `${scopedName} function` }));\n break;\n case ApiItemKind.Model:\n output.appendNode(new DocHeading({ configuration, title: `API Reference` }));\n break;\n case ApiItemKind.Namespace:\n output.appendNode(new DocHeading({ configuration, title: `${scopedName} namespace` }));\n break;\n case ApiItemKind.Package:\n console.log(`Writing ${apiItem.displayName} package`);\n const unscopedPackageName: string = PackageName.getUnscopedName(apiItem.displayName);\n output.appendNode(new DocHeading({ configuration, title: `${unscopedPackageName} package` }));\n break;\n case ApiItemKind.Property:\n case ApiItemKind.PropertySignature:\n output.appendNode(new DocHeading({ configuration, title: `${scopedName} property` }));\n break;\n case ApiItemKind.TypeAlias:\n output.appendNode(new DocHeading({ configuration, title: `${scopedName} type` }));\n break;\n case ApiItemKind.Variable:\n output.appendNode(new DocHeading({ configuration, title: `${scopedName} variable` }));\n break;\n default:\n throw new Error('Unsupported API item kind: ' + apiItem.kind);\n }\n\n if (ApiReleaseTagMixin.isBaseClassOf(apiItem)) {\n if (apiItem.releaseTag === ReleaseTag.Beta) {\n this._writeBetaWarning(output);\n }\n }\n\n const decoratorBlocks: DocBlock[] = [];\n\n if (apiItem instanceof ApiDocumentedItem) {\n const tsdocComment: DocComment | undefined = apiItem.tsdocComment;\n\n if (tsdocComment) {\n decoratorBlocks.push(\n ...tsdocComment.customBlocks.filter(\n (block) => block.blockTag.tagNameWithUpperCase === StandardTags.decorator.tagNameWithUpperCase\n )\n );\n\n if (tsdocComment.deprecatedBlock) {\n output.appendNode(\n new DocNoteBox({ configuration: this._tsdocConfiguration }, [\n new DocParagraph({ configuration: this._tsdocConfiguration }, [\n new DocPlainText({\n configuration: this._tsdocConfiguration,\n text: 'Warning: This API is now obsolete. '\n })\n ]),\n ...tsdocComment.deprecatedBlock.content.nodes\n ])\n );\n }\n\n this._appendSection(output, tsdocComment.summarySection);\n }\n }\n\n if (apiItem instanceof ApiDeclaredItem) {\n if (apiItem.excerpt.text.length > 0) {\n output.appendNode(\n new DocParagraph({ configuration }, [\n new DocEmphasisSpan({ configuration, bold: true }, [\n new DocPlainText({ configuration, text: 'Signature:' })\n ])\n ])\n );\n output.appendNode(\n new DocFencedCode({\n configuration,\n code: apiItem.getExcerptWithModifiers(),\n language: 'typescript'\n })\n );\n }\n\n this._writeHeritageTypes(output, apiItem);\n }\n\n if (decoratorBlocks.length > 0) {\n output.appendNode(\n new DocParagraph({ configuration }, [\n new DocEmphasisSpan({ configuration, bold: true }, [\n new DocPlainText({ configuration, text: 'Decorators:' })\n ])\n ])\n );\n for (const decoratorBlock of decoratorBlocks) {\n output.appendNodes(decoratorBlock.content.nodes);\n }\n }\n\n let appendRemarks: boolean = true;\n switch (apiItem.kind) {\n case ApiItemKind.Class:\n case ApiItemKind.Interface:\n case ApiItemKind.Namespace:\n case ApiItemKind.Package:\n this._writeRemarksSection(output, apiItem);\n appendRemarks = false;\n break;\n }\n\n switch (apiItem.kind) {\n case ApiItemKind.Class:\n this._writeClassTables(output, apiItem as ApiClass);\n break;\n case ApiItemKind.Enum:\n this._writeEnumTables(output, apiItem as ApiEnum);\n break;\n case ApiItemKind.Interface:\n this._writeInterfaceTables(output, apiItem as ApiInterface);\n break;\n case ApiItemKind.Constructor:\n case ApiItemKind.ConstructSignature:\n case ApiItemKind.Method:\n case ApiItemKind.MethodSignature:\n case ApiItemKind.Function:\n this._writeParameterTables(output, apiItem as ApiParameterListMixin);\n this._writeThrowsSection(output, apiItem);\n break;\n case ApiItemKind.Namespace:\n this._writePackageOrNamespaceTables(output, apiItem as ApiNamespace);\n break;\n case ApiItemKind.Model:\n this._writeModelTable(output, apiItem as ApiModel);\n break;\n case ApiItemKind.Package:\n this._writePackageOrNamespaceTables(output, apiItem as ApiPackage);\n break;\n case ApiItemKind.Property:\n case ApiItemKind.PropertySignature:\n break;\n case ApiItemKind.TypeAlias:\n break;\n case ApiItemKind.Variable:\n break;\n default:\n throw new Error('Unsupported API item kind: ' + apiItem.kind);\n }\n\n if (appendRemarks) {\n this._writeRemarksSection(output, apiItem);\n }\n\n const filename: string = path.join(this._outputFolder, this._getFilenameForApiItem(apiItem));\n const stringBuilder: StringBuilder = new StringBuilder();\n\n stringBuilder.append(\n '<!-- Do not edit this file. It is automatically generated by API Documenter. -->\\n\\n'\n );\n\n this._markdownEmitter.emit(stringBuilder, output, {\n contextApiItem: apiItem,\n onGetFilenameForApiItem: (apiItemForFilename: ApiItem) => {\n return this._getLinkFilenameForApiItem(apiItemForFilename);\n }\n });\n\n let pageContent: string = stringBuilder.toString();\n\n if (this._pluginLoader.markdownDocumenterFeature) {\n // Allow the plugin to customize the pageContent\n const eventArgs: IMarkdownDocumenterFeatureOnBeforeWritePageArgs = {\n apiItem: apiItem,\n outputFilename: filename,\n pageContent: pageContent\n };\n this._pluginLoader.markdownDocumenterFeature.onBeforeWritePage(eventArgs);\n pageContent = eventArgs.pageContent;\n }\n\n FileSystem.writeFile(filename, pageContent, {\n convertLineEndings: this._documenterConfig ? this._documenterConfig.newlineKind : NewlineKind.CrLf\n });\n }\n\n private _writeHeritageTypes(output: DocSection, apiItem: ApiDeclaredItem): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n if (apiItem instanceof ApiClass) {\n if (apiItem.extendsType) {\n const extendsParagraph: DocParagraph = new DocParagraph({ configuration }, [\n new DocEmphasisSpan({ configuration, bold: true }, [\n new DocPlainText({ configuration, text: 'Extends: ' })\n ])\n ]);\n this._appendExcerptWithHyperlinks(extendsParagraph, apiItem.extendsType.excerpt);\n output.appendNode(extendsParagraph);\n }\n if (apiItem.implementsTypes.length > 0) {\n const extendsParagraph: DocParagraph = new DocParagraph({ configuration }, [\n new DocEmphasisSpan({ configuration, bold: true }, [\n new DocPlainText({ configuration, text: 'Implements: ' })\n ])\n ]);\n let needsComma: boolean = false;\n for (const implementsType of apiItem.implementsTypes) {\n if (needsComma) {\n extendsParagraph.appendNode(new DocPlainText({ configuration, text: ', ' }));\n }\n this._appendExcerptWithHyperlinks(extendsParagraph, implementsType.excerpt);\n needsComma = true;\n }\n output.appendNode(extendsParagraph);\n }\n }\n\n if (apiItem instanceof ApiInterface) {\n if (apiItem.extendsTypes.length > 0) {\n const extendsParagraph: DocParagraph = new DocParagraph({ configuration }, [\n new DocEmphasisSpan({ configuration, bold: true }, [\n new DocPlainText({ configuration, text: 'Extends: ' })\n ])\n ]);\n let needsComma: boolean = false;\n for (const extendsType of apiItem.extendsTypes) {\n if (needsComma) {\n extendsParagraph.appendNode(new DocPlainText({ configuration, text: ', ' }));\n }\n this._appendExcerptWithHyperlinks(extendsParagraph, extendsType.excerpt);\n needsComma = true;\n }\n output.appendNode(extendsParagraph);\n }\n }\n\n if (apiItem instanceof ApiTypeAlias) {\n const refs: ExcerptToken[] = apiItem.excerptTokens.filter(\n (token) =>\n token.kind === ExcerptTokenKind.Reference &&\n token.canonicalReference &&\n this._apiModel.resolveDeclarationReference(token.canonicalReference, undefined).resolvedApiItem\n );\n if (refs.length > 0) {\n const referencesParagraph: DocParagraph = new DocParagraph({ configuration }, [\n new DocEmphasisSpan({ configuration, bold: true }, [\n new DocPlainText({ configuration, text: 'References: ' })\n ])\n ]);\n let needsComma: boolean = false;\n const visited: Set<string> = new Set();\n for (const ref of refs) {\n if (visited.has(ref.text)) {\n continue;\n }\n visited.add(ref.text);\n\n if (needsComma) {\n referencesParagraph.appendNode(new DocPlainText({ configuration, text: ', ' }));\n }\n\n this._appendExcerptTokenWithHyperlinks(referencesParagraph, ref);\n needsComma = true;\n }\n output.appendNode(referencesParagraph);\n }\n }\n }\n\n private _writeRemarksSection(output: DocSection, apiItem: ApiItem): void {\n if (apiItem instanceof ApiDocumentedItem) {\n const tsdocComment: DocComment | undefined = apiItem.tsdocComment;\n\n if (tsdocComment) {\n // Write the @remarks block\n if (tsdocComment.remarksBlock) {\n output.appendNode(new DocHeading({ configuration: this._tsdocConfiguration, title: 'Remarks' }));\n this._appendSection(output, tsdocComment.remarksBlock.content);\n }\n\n // Write the @example blocks\n const exampleBlocks: DocBlock[] = tsdocComment.customBlocks.filter(\n (x) => x.blockTag.tagNameWithUpperCase === StandardTags.example.tagNameWithUpperCase\n );\n\n let exampleNumber: number = 1;\n for (const exampleBlock of exampleBlocks) {\n const heading: string = exampleBlocks.length > 1 ? `Example ${exampleNumber}` : 'Example';\n\n output.appendNode(new DocHeading({ configuration: this._tsdocConfiguration, title: heading }));\n\n this._appendSection(output, exampleBlock.content);\n\n ++exampleNumber;\n }\n }\n }\n }\n\n private _writeThrowsSection(output: DocSection, apiItem: ApiItem): void {\n if (apiItem instanceof ApiDocumentedItem) {\n const tsdocComment: DocComment | undefined = apiItem.tsdocComment;\n\n if (tsdocComment) {\n // Write the @throws blocks\n const throwsBlocks: DocBlock[] = tsdocComment.customBlocks.filter(\n (x) => x.blockTag.tagNameWithUpperCase === StandardTags.throws.tagNameWithUpperCase\n );\n\n if (throwsBlocks.length > 0) {\n const heading: string = 'Exceptions';\n output.appendNode(new DocHeading({ configuration: this._tsdocConfiguration, title: heading }));\n\n for (const throwsBlock of throwsBlocks) {\n this._appendSection(output, throwsBlock.content);\n }\n }\n }\n }\n }\n\n /**\n * GENERATE PAGE: MODEL\n */\n private _writeModelTable(output: DocSection, apiModel: ApiModel): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n const packagesTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Package', 'Description']\n });\n\n for (const apiMember of apiModel.members) {\n const row: DocTableRow = new DocTableRow({ configuration }, [\n this._createTitleCell(apiMember),\n this._createDescriptionCell(apiMember)\n ]);\n\n switch (apiMember.kind) {\n case ApiItemKind.Package:\n packagesTable.addRow(row);\n this._writeApiItemPage(apiMember);\n break;\n }\n }\n\n if (packagesTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration: this._tsdocConfiguration, title: 'Packages' }));\n output.appendNode(packagesTable);\n }\n }\n\n /**\n * GENERATE PAGE: PACKAGE or NAMESPACE\n */\n private _writePackageOrNamespaceTables(output: DocSection, apiContainer: ApiPackage | ApiNamespace): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n const classesTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Class', 'Description']\n });\n\n const enumerationsTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Enumeration', 'Description']\n });\n\n const functionsTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Function', 'Description']\n });\n\n const interfacesTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Interface', 'Description']\n });\n\n const namespacesTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Namespace', 'Description']\n });\n\n const variablesTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Variable', 'Description']\n });\n\n const typeAliasesTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Type Alias', 'Description']\n });\n\n const apiMembers: ReadonlyArray<ApiItem> =\n apiContainer.kind === ApiItemKind.Package\n ? (apiContainer as ApiPackage).entryPoints[0].members\n : (apiContainer as ApiNamespace).members;\n\n for (const apiMember of apiMembers) {\n const row: DocTableRow = new DocTableRow({ configuration }, [\n this._createTitleCell(apiMember),\n this._createDescriptionCell(apiMember)\n ]);\n\n switch (apiMember.kind) {\n case ApiItemKind.Class:\n classesTable.addRow(row);\n this._writeApiItemPage(apiMember);\n break;\n\n case ApiItemKind.Enum:\n enumerationsTable.addRow(row);\n this._writeApiItemPage(apiMember);\n break;\n\n case ApiItemKind.Interface:\n interfacesTable.addRow(row);\n this._writeApiItemPage(apiMember);\n break;\n\n case ApiItemKind.Namespace:\n namespacesTable.addRow(row);\n this._writeApiItemPage(apiMember);\n break;\n\n case ApiItemKind.Function:\n functionsTable.addRow(row);\n this._writeApiItemPage(apiMember);\n break;\n\n case ApiItemKind.TypeAlias:\n typeAliasesTable.addRow(row);\n this._writeApiItemPage(apiMember);\n break;\n\n case ApiItemKind.Variable:\n variablesTable.addRow(row);\n this._writeApiItemPage(apiMember);\n break;\n }\n }\n\n if (classesTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration: this._tsdocConfiguration, title: 'Classes' }));\n output.appendNode(classesTable);\n }\n\n if (enumerationsTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration: this._tsdocConfiguration, title: 'Enumerations' }));\n output.appendNode(enumerationsTable);\n }\n if (functionsTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration: this._tsdocConfiguration, title: 'Functions' }));\n output.appendNode(functionsTable);\n }\n\n if (interfacesTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration: this._tsdocConfiguration, title: 'Interfaces' }));\n output.appendNode(interfacesTable);\n }\n\n if (namespacesTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration: this._tsdocConfiguration, title: 'Namespaces' }));\n output.appendNode(namespacesTable);\n }\n\n if (variablesTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration: this._tsdocConfiguration, title: 'Variables' }));\n output.appendNode(variablesTable);\n }\n\n if (typeAliasesTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration: this._tsdocConfiguration, title: 'Type Aliases' }));\n output.appendNode(typeAliasesTable);\n }\n }\n\n /**\n * GENERATE PAGE: CLASS\n */\n private _writeClassTables(output: DocSection, apiClass: ApiClass): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n const eventsTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Property', 'Modifiers', 'Type', 'Description']\n });\n\n const constructorsTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Constructor', 'Modifiers', 'Description']\n });\n\n const propertiesTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Property', 'Modifiers', 'Type', 'Description']\n });\n\n const methodsTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Method', 'Modifiers', 'Description']\n });\n\n for (const apiMember of apiClass.members) {\n switch (apiMember.kind) {\n case ApiItemKind.Constructor: {\n constructorsTable.addRow(\n new DocTableRow({ configuration }, [\n this._createTitleCell(apiMember),\n this._createModifiersCell(apiMember),\n this._createDescriptionCell(apiMember)\n ])\n );\n\n this._writeApiItemPage(apiMember);\n break;\n }\n case ApiItemKind.Method: {\n methodsTable.addRow(\n new DocTableRow({ configuration }, [\n this._createTitleCell(apiMember),\n this._createModifiersCell(apiMember),\n this._createDescriptionCell(apiMember)\n ])\n );\n\n this._writeApiItemPage(apiMember);\n break;\n }\n case ApiItemKind.Property: {\n if ((apiMember as ApiPropertyItem).isEventProperty) {\n eventsTable.addRow(\n new DocTableRow({ configuration }, [\n this._createTitleCell(apiMember),\n this._createModifiersCell(apiMember),\n this._createPropertyTypeCell(apiMember),\n this._createDescriptionCell(apiMember)\n ])\n );\n } else {\n propertiesTable.addRow(\n new DocTableRow({ configuration }, [\n this._createTitleCell(apiMember),\n this._createModifiersCell(apiMember),\n this._createPropertyTypeCell(apiMember),\n this._createDescriptionCell(apiMember)\n ])\n );\n }\n\n this._writeApiItemPage(apiMember);\n break;\n }\n }\n }\n\n if (eventsTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration: this._tsdocConfiguration, title: 'Events' }));\n output.appendNode(eventsTable);\n }\n\n if (constructorsTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration: this._tsdocConfiguration, title: 'Constructors' }));\n output.appendNode(constructorsTable);\n }\n\n if (propertiesTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration: this._tsdocConfiguration, title: 'Properties' }));\n output.appendNode(propertiesTable);\n }\n\n if (methodsTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration: this._tsdocConfiguration, title: 'Methods' }));\n output.appendNode(methodsTable);\n }\n }\n\n /**\n * GENERATE PAGE: ENUM\n */\n private _writeEnumTables(output: DocSection, apiEnum: ApiEnum): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n const enumMembersTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Member', 'Value', 'Description']\n });\n\n for (const apiEnumMember of apiEnum.members) {\n enumMembersTable.addRow(\n new DocTableRow({ configuration }, [\n new DocTableCell({ configuration }, [\n new DocParagraph({ configuration }, [\n new DocPlainText({ configuration, text: Utilities.getConciseSignature(apiEnumMember) })\n ])\n ]),\n this._createInitializerCell(apiEnumMember),\n this._createDescriptionCell(apiEnumMember)\n ])\n );\n }\n\n if (enumMembersTable.rows.length > 0) {\n output.appendNode(\n new DocHeading({ configuration: this._tsdocConfiguration, title: 'Enumeration Members' })\n );\n output.appendNode(enumMembersTable);\n }\n }\n\n /**\n * GENERATE PAGE: INTERFACE\n */\n private _writeInterfaceTables(output: DocSection, apiClass: ApiInterface): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n const eventsTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Property', 'Modifiers', 'Type', 'Description']\n });\n\n const propertiesTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Property', 'Modifiers', 'Type', 'Description']\n });\n\n const methodsTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Method', 'Description']\n });\n\n for (const apiMember of apiClass.members) {\n switch (apiMember.kind) {\n case ApiItemKind.ConstructSignature:\n case ApiItemKind.MethodSignature: {\n methodsTable.addRow(\n new DocTableRow({ configuration }, [\n this._createTitleCell(apiMember),\n this._createDescriptionCell(apiMember)\n ])\n );\n\n this._writeApiItemPage(apiMember);\n break;\n }\n case ApiItemKind.PropertySignature: {\n if ((apiMember as ApiPropertyItem).isEventProperty) {\n eventsTable.addRow(\n new DocTableRow({ configuration }, [\n this._createTitleCell(apiMember),\n this._createModifiersCell(apiMember),\n this._createPropertyTypeCell(apiMember),\n this._createDescriptionCell(apiMember)\n ])\n );\n } else {\n propertiesTable.addRow(\n new DocTableRow({ configuration }, [\n this._createTitleCell(apiMember),\n this._createModifiersCell(apiMember),\n this._createPropertyTypeCell(apiMember),\n this._createDescriptionCell(apiMember)\n ])\n );\n }\n\n this._writeApiItemPage(apiMember);\n break;\n }\n }\n }\n\n if (eventsTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration: this._tsdocConfiguration, title: 'Events' }));\n output.appendNode(eventsTable);\n }\n\n if (propertiesTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration: this._tsdocConfiguration, title: 'Properties' }));\n output.appendNode(propertiesTable);\n }\n\n if (methodsTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration: this._tsdocConfiguration, title: 'Methods' }));\n output.appendNode(methodsTable);\n }\n }\n\n /**\n * GENERATE PAGE: FUNCTION-LIKE\n */\n private _writeParameterTables(output: DocSection, apiParameterListMixin: ApiParameterListMixin): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n const parametersTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Parameter', 'Type', 'Description']\n });\n for (const apiParameter of apiParameterListMixin.parameters) {\n const parameterDescription: DocSection = new DocSection({ configuration });\n\n if (apiParameter.isOptional) {\n parameterDescription.appendNodesInParagraph([\n new DocEmphasisSpan({ configuration, italic: true }, [\n new DocPlainText({ configuration, text: '(Optional)' })\n ]),\n new DocPlainText({ configuration, text: ' ' })\n ]);\n }\n\n if (apiParameter.tsdocParamBlock) {\n this._appendAndMergeSection(parameterDescription, apiParameter.tsdocParamBlock.content);\n }\n\n parametersTable.addRow(\n new DocTableRow({ configuration }, [\n new DocTableCell({ configuration }, [\n new DocParagraph({ configuration }, [\n new DocPlainText({ configuration, text: apiParameter.name })\n ])\n ]),\n new DocTableCell({ configuration }, [\n this._createParagraphForTypeExcerpt(apiParameter.parameterTypeExcerpt)\n ]),\n new DocTableCell({ configuration }, parameterDescription.nodes)\n ])\n );\n }\n\n if (parametersTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration: this._tsdocConfiguration, title: 'Parameters' }));\n output.appendNode(parametersTable);\n }\n\n if (ApiReturnTypeMixin.isBaseClassOf(apiParameterListMixin)) {\n const returnTypeExcerpt: Excerpt = apiParameterListMixin.returnTypeExcerpt;\n output.appendNode(\n new DocParagraph({ configuration }, [\n new DocEmphasisSpan({ configuration, bold: true }, [\n new DocPlainText({ configuration, text: 'Returns:' })\n ])\n ])\n );\n\n output.appendNode(this._createParagraphForTypeExcerpt(returnTypeExcerpt));\n\n if (apiParameterListMixin instanceof ApiDocumentedItem) {\n if (apiParameterListMixin.tsdocComment && apiParameterListMixin.tsdocComment.returnsBlock) {\n this._appendSection(output, apiParameterListMixin.tsdocComment.returnsBlock.content);\n }\n }\n }\n }\n\n private _createParagraphForTypeExcerpt(excerpt: Excerpt): DocParagraph {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n const paragraph: DocParagraph = new DocParagraph({ configuration });\n\n if (!excerpt.text.trim()) {\n paragraph.appendNode(new DocPlainText({ configuration, text: '(not declared)' }));\n } else {\n this._appendExcerptWithHyperlinks(paragraph, excerpt);\n }\n\n return paragraph;\n }\n\n private _appendExcerptWithHyperlinks(docNodeContainer: DocNodeContainer, excerpt: Excerpt): void {\n for (const token of excerpt.spannedTokens) {\n this._appendExcerptTokenWithHyperlinks(docNodeContainer, token);\n }\n }\n\n private _appendExcerptTokenWithHyperlinks(docNodeContainer: DocNodeContainer, token: ExcerptToken): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n // Markdown doesn't provide a standardized syntax for hyperlinks inside code spans, so we will render\n // the type expression as DocPlainText. Instead of creating multiple DocParagraphs, we can simply\n // discard any newlines and let the renderer do normal word-wrapping.\n const unwrappedTokenText: string = token.text.replace(/[\\r\\n]+/g, ' ');\n\n // If it's hyperlinkable, then append a DocLinkTag\n if (token.kind === ExcerptTokenKind.Reference && token.canonicalReference) {\n const apiItemResult: IResolveDeclarationReferenceResult = this._apiModel.resolveDeclarationReference(\n token.canonicalReference,\n undefined\n );\n\n if (apiItemResult.resolvedApiItem) {\n docNodeContainer.appendNode(\n new DocLinkTag({\n configuration,\n tagName: '@link',\n linkText: unwrappedTokenText,\n urlDestination: this._getLinkFilenameForApiItem(apiItemResult.resolvedApiItem)\n })\n );\n return;\n }\n }\n\n // Otherwise append non-hyperlinked text\n docNodeContainer.appendNode(new DocPlainText({ configuration, text: unwrappedTokenText }));\n }\n\n private _createTitleCell(apiItem: ApiItem): DocTableCell {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n let linkText: string = Utilities.getConciseSignature(apiItem);\n if (ApiOptionalMixin.isBaseClassOf(apiItem) && apiItem.isOptional) {\n linkText += '?';\n }\n\n return new DocTableCell({ configuration }, [\n new DocParagraph({ configuration }, [\n new DocLinkTag({\n configuration,\n tagName: '@link',\n linkText: linkText,\n urlDestination: this._getLinkFilenameForApiItem(apiItem)\n })\n ])\n ]);\n }\n\n /**\n * This generates a DocTableCell for an ApiItem including the summary section and \"(BETA)\" annotation.\n *\n * @remarks\n * We mostly assume that the input is an ApiDocumentedItem, but it's easier to perform this as a runtime\n * check than to have each caller perform a type cast.\n */\n private _createDescriptionCell(apiItem: ApiItem): DocTableCell {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n const section: DocSection = new DocSection({ configuration });\n\n if (ApiReleaseTagMixin.isBaseClassOf(apiItem)) {\n if (apiItem.releaseTag === ReleaseTag.Beta) {\n section.appendNodesInParagraph([\n new DocEmphasisSpan({ configuration, bold: true, italic: true }, [\n new DocPlainText({ configuration, text: '(BETA)' })\n ]),\n new DocPlainText({ configuration, text: ' ' })\n ]);\n }\n }\n\n if (ApiOptionalMixin.isBaseClassOf(apiItem) && apiItem.isOptional) {\n section.appendNodesInParagraph([\n new DocEmphasisSpan({ configuration, italic: true }, [\n new DocPlainText({ configuration, text: '(Optional)' })\n ]),\n new DocPlainText({ configuration, text: ' ' })\n ]);\n }\n\n if (apiItem instanceof ApiDocumentedItem) {\n if (apiItem.tsdocComment !== undefined) {\n this._appendAndMergeSection(section, apiItem.tsdocComment.summarySection);\n }\n }\n\n return new DocTableCell({ configuration }, section.nodes);\n }\n\n private _createModifiersCell(apiItem: ApiItem): DocTableCell {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n const section: DocSection = new DocSection({ configuration });\n\n if (ApiProtectedMixin.isBaseClassOf(apiItem)) {\n if (apiItem.isProtected) {\n section.appendNode(\n new DocParagraph({ configuration }, [new DocCodeSpan({ configuration, code: 'protected' })])\n );\n }\n }\n\n if (ApiReadonlyMixin.isBaseClassOf(apiItem)) {\n if (apiItem.isReadonly) {\n section.appendNode(\n new DocParagraph({ configuration }, [new DocCodeSpan({ configuration, code: 'readonly' })])\n );\n }\n }\n\n if (ApiStaticMixin.isBaseClassOf(apiItem)) {\n if (apiItem.isStatic) {\n section.appendNode(\n new DocParagraph({ configuration }, [new DocCodeSpan({ configuration, code: 'static' })])\n );\n }\n }\n\n return new DocTableCell({ configuration }, section.nodes);\n }\n\n private _createPropertyTypeCell(apiItem: ApiItem): DocTableCell {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n const section: DocSection = new DocSection({ configuration });\n\n if (apiItem instanceof ApiPropertyItem) {\n section.appendNode(this._createParagraphForTypeExcerpt(apiItem.propertyTypeExcerpt));\n }\n\n return new DocTableCell({ configuration }, section.nodes);\n }\n\n private _createInitializerCell(apiItem: ApiItem): DocTableCell {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n const section: DocSection = new DocSection({ configuration });\n\n if (ApiInitializerMixin.isBaseClassOf(apiItem)) {\n if (apiItem.initializerExcerpt) {\n section.appendNodeInParagraph(\n new DocCodeSpan({ configuration, code: apiItem.initializerExcerpt.text })\n );\n }\n }\n\n return new DocTableCell({ configuration }, section.nodes);\n }\n\n private _writeBreadcrumb(output: DocSection, apiItem: ApiItem): void {\n output.appendNodeInParagraph(\n new DocLinkTag({\n configuration: this._tsdocConfiguration,\n tagName: '@link',\n linkText: 'Home',\n urlDestination: this._getLinkFilenameForApiItem(this._apiModel)\n })\n );\n\n for (const hierarchyItem of apiItem.getHierarchy()) {\n switch (hierarchyItem.kind) {\n case ApiItemKind.Model:\n case ApiItemKind.EntryPoint:\n // We don't show the model as part of the breadcrumb because it is the root-level container.\n // We don't show the entry point because today API Extractor doesn't support multiple entry points;\n // this may change in the future.\n break;\n default:\n output.appendNodesInParagraph([\n new DocPlainText({\n configuration: this._tsdocConfiguration,\n text: ' > '\n }),\n new DocLinkTag({\n configuration: this._tsdocConfiguration,\n tagName: '@link',\n linkText: hierarchyItem.displayName,\n urlDestination: this._getLinkFilenameForApiItem(hierarchyItem)\n })\n ]);\n }\n }\n }\n\n private _writeBetaWarning(output: DocSection): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n const betaWarning: string =\n 'This API is provided as a preview for developers and may change' +\n ' based on feedback that we receive. Do not use this API in a production environment.';\n output.appendNode(\n new DocNoteBox({ configuration }, [\n new DocParagraph({ configuration }, [new DocPlainText({ configuration, text: betaWarning })])\n ])\n );\n }\n\n private _appendSection(output: DocSection, docSection: DocSection): void {\n for (const node of docSection.nodes) {\n output.appendNode(node);\n }\n }\n\n private _appendAndMergeSection(output: DocSection, docSection: DocSection): void {\n let firstNode: boolean = true;\n for (const node of docSection.nodes) {\n if (firstNode) {\n if (node.kind === DocNodeKind.Paragraph) {\n output.appendNodesInParagraph(node.getChildNodes());\n firstNode = false;\n continue;\n }\n }\n firstNode = false;\n\n output.appendNode(node);\n }\n }\n\n private _getFilenameForApiItem(apiItem: ApiItem): string {\n if (apiItem.kind === ApiItemKind.Model) {\n return 'index.md';\n }\n\n let baseName: string = '';\n for (const hierarchyItem of apiItem.getHierarchy()) {\n // For overloaded methods, add a suffix such as \"MyClass.myMethod_2\".\n let qualifiedName: string = Utilities.getSafeFilenameForName(hierarchyItem.displayName);\n if (ApiParameterListMixin.isBaseClassOf(hierarchyItem)) {\n if (hierarchyItem.overloadIndex > 1) {\n // Subtract one for compatibility with earlier releases of API Documenter.\n // (This will get revamped when we fix GitHub issue #1308)\n qualifiedName += `_${hierarchyItem.overloadIndex - 1}`;\n }\n }\n\n switch (hierarchyItem.kind) {\n case ApiItemKind.Model:\n case ApiItemKind.EntryPoint:\n case ApiItemKind.EnumMember:\n break;\n case ApiItemKind.Package:\n baseName = Utilities.getSafeFilenameForName(PackageName.getUnscopedName(hierarchyItem.displayName));\n break;\n default:\n baseName += '.' + qualifiedName;\n }\n }\n return baseName + '.md';\n }\n\n private _getLinkFilenameForApiItem(apiItem: ApiItem): string {\n return './' + this._getFilenameForApiItem(apiItem);\n }\n\n private _deleteOldOutputFiles(): void {\n console.log('Deleting old output from ' + this._outputFolder);\n FileSystem.ensureEmptyFolder(this._outputFolder);\n }\n}\n"]}
1
+ {"version":3,"file":"MarkdownDocumenter.js","sourceRoot":"","sources":["../../src/documenters/MarkdownDocumenter.ts"],"names":[],"mappings":"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","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 { PackageName, FileSystem, NewlineKind } from '@rushstack/node-core-library';\nimport {\n DocSection,\n DocPlainText,\n DocLinkTag,\n TSDocConfiguration,\n StringBuilder,\n DocNodeKind,\n DocParagraph,\n DocCodeSpan,\n DocFencedCode,\n StandardTags,\n DocBlock,\n DocComment,\n DocNodeContainer\n} from '@microsoft/tsdoc';\nimport {\n ApiModel,\n ApiItem,\n ApiEnum,\n ApiPackage,\n ApiItemKind,\n ApiReleaseTagMixin,\n ApiDocumentedItem,\n ApiClass,\n ReleaseTag,\n ApiStaticMixin,\n ApiPropertyItem,\n ApiInterface,\n Excerpt,\n ApiParameterListMixin,\n ApiReturnTypeMixin,\n ApiDeclaredItem,\n ApiNamespace,\n ExcerptTokenKind,\n IResolveDeclarationReferenceResult,\n ApiTypeAlias,\n ExcerptToken,\n ApiOptionalMixin,\n ApiInitializerMixin,\n ApiProtectedMixin,\n ApiReadonlyMixin,\n IFindApiItemsResult\n} from '@microsoft/api-extractor-model';\n\nimport { CustomDocNodes } from '../nodes/CustomDocNodeKind';\nimport { DocHeading } from '../nodes/DocHeading';\nimport { DocTable } from '../nodes/DocTable';\nimport { DocEmphasisSpan } from '../nodes/DocEmphasisSpan';\nimport { DocTableRow } from '../nodes/DocTableRow';\nimport { DocTableCell } from '../nodes/DocTableCell';\nimport { DocNoteBox } from '../nodes/DocNoteBox';\nimport { Utilities } from '../utils/Utilities';\nimport { CustomMarkdownEmitter } from '../markdown/CustomMarkdownEmitter';\nimport { PluginLoader } from '../plugin/PluginLoader';\nimport {\n IMarkdownDocumenterFeatureOnBeforeWritePageArgs,\n MarkdownDocumenterFeatureContext\n} from '../plugin/MarkdownDocumenterFeature';\nimport { DocumenterConfig } from './DocumenterConfig';\nimport { MarkdownDocumenterAccessor } from '../plugin/MarkdownDocumenterAccessor';\n\nexport interface IMarkdownDocumenterOptions {\n apiModel: ApiModel;\n documenterConfig: DocumenterConfig | undefined;\n outputFolder: string;\n}\n\n/**\n * Renders API documentation in the Markdown file format.\n * For more info: https://en.wikipedia.org/wiki/Markdown\n */\nexport class MarkdownDocumenter {\n private readonly _apiModel: ApiModel;\n private readonly _documenterConfig: DocumenterConfig | undefined;\n private readonly _tsdocConfiguration: TSDocConfiguration;\n private readonly _markdownEmitter: CustomMarkdownEmitter;\n private readonly _outputFolder: string;\n private readonly _pluginLoader: PluginLoader;\n\n public constructor(options: IMarkdownDocumenterOptions) {\n this._apiModel = options.apiModel;\n this._documenterConfig = options.documenterConfig;\n this._outputFolder = options.outputFolder;\n this._tsdocConfiguration = CustomDocNodes.configuration;\n this._markdownEmitter = new CustomMarkdownEmitter(this._apiModel);\n\n this._pluginLoader = new PluginLoader();\n }\n\n public generateFiles(): void {\n if (this._documenterConfig) {\n this._pluginLoader.load(this._documenterConfig, () => {\n return new MarkdownDocumenterFeatureContext({\n apiModel: this._apiModel,\n outputFolder: this._outputFolder,\n documenter: new MarkdownDocumenterAccessor({\n getLinkForApiItem: (apiItem: ApiItem) => {\n return this._getLinkFilenameForApiItem(apiItem);\n }\n })\n });\n });\n }\n\n console.log();\n this._deleteOldOutputFiles();\n\n this._writeApiItemPage(this._apiModel);\n\n if (this._pluginLoader.markdownDocumenterFeature) {\n this._pluginLoader.markdownDocumenterFeature.onFinished({});\n }\n }\n\n private _writeApiItemPage(apiItem: ApiItem): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n const output: DocSection = new DocSection({ configuration });\n\n this._writeBreadcrumb(output, apiItem);\n\n const scopedName: string = apiItem.getScopedNameWithinPackage();\n\n switch (apiItem.kind) {\n case ApiItemKind.Class:\n output.appendNode(new DocHeading({ configuration, title: `${scopedName} class` }));\n break;\n case ApiItemKind.Enum:\n output.appendNode(new DocHeading({ configuration, title: `${scopedName} enum` }));\n break;\n case ApiItemKind.Interface:\n output.appendNode(new DocHeading({ configuration, title: `${scopedName} interface` }));\n break;\n case ApiItemKind.Constructor:\n case ApiItemKind.ConstructSignature:\n output.appendNode(new DocHeading({ configuration, title: scopedName }));\n break;\n case ApiItemKind.Method:\n case ApiItemKind.MethodSignature:\n output.appendNode(new DocHeading({ configuration, title: `${scopedName} method` }));\n break;\n case ApiItemKind.Function:\n output.appendNode(new DocHeading({ configuration, title: `${scopedName} function` }));\n break;\n case ApiItemKind.Model:\n output.appendNode(new DocHeading({ configuration, title: `API Reference` }));\n break;\n case ApiItemKind.Namespace:\n output.appendNode(new DocHeading({ configuration, title: `${scopedName} namespace` }));\n break;\n case ApiItemKind.Package:\n console.log(`Writing ${apiItem.displayName} package`);\n const unscopedPackageName: string = PackageName.getUnscopedName(apiItem.displayName);\n output.appendNode(new DocHeading({ configuration, title: `${unscopedPackageName} package` }));\n break;\n case ApiItemKind.Property:\n case ApiItemKind.PropertySignature:\n output.appendNode(new DocHeading({ configuration, title: `${scopedName} property` }));\n break;\n case ApiItemKind.TypeAlias:\n output.appendNode(new DocHeading({ configuration, title: `${scopedName} type` }));\n break;\n case ApiItemKind.Variable:\n output.appendNode(new DocHeading({ configuration, title: `${scopedName} variable` }));\n break;\n default:\n throw new Error('Unsupported API item kind: ' + apiItem.kind);\n }\n\n if (ApiReleaseTagMixin.isBaseClassOf(apiItem)) {\n if (apiItem.releaseTag === ReleaseTag.Beta) {\n this._writeBetaWarning(output);\n }\n }\n\n const decoratorBlocks: DocBlock[] = [];\n\n if (apiItem instanceof ApiDocumentedItem) {\n const tsdocComment: DocComment | undefined = apiItem.tsdocComment;\n\n if (tsdocComment) {\n decoratorBlocks.push(\n ...tsdocComment.customBlocks.filter(\n (block) => block.blockTag.tagNameWithUpperCase === StandardTags.decorator.tagNameWithUpperCase\n )\n );\n\n if (tsdocComment.deprecatedBlock) {\n output.appendNode(\n new DocNoteBox({ configuration }, [\n new DocParagraph({ configuration }, [\n new DocPlainText({\n configuration,\n text: 'Warning: This API is now obsolete. '\n })\n ]),\n ...tsdocComment.deprecatedBlock.content.nodes\n ])\n );\n }\n\n this._appendSection(output, tsdocComment.summarySection);\n }\n }\n\n if (apiItem instanceof ApiDeclaredItem) {\n if (apiItem.excerpt.text.length > 0) {\n output.appendNode(\n new DocParagraph({ configuration }, [\n new DocEmphasisSpan({ configuration, bold: true }, [\n new DocPlainText({ configuration, text: 'Signature:' })\n ])\n ])\n );\n output.appendNode(\n new DocFencedCode({\n configuration,\n code: apiItem.getExcerptWithModifiers(),\n language: 'typescript'\n })\n );\n }\n\n this._writeHeritageTypes(output, apiItem);\n }\n\n if (decoratorBlocks.length > 0) {\n output.appendNode(\n new DocParagraph({ configuration }, [\n new DocEmphasisSpan({ configuration, bold: true }, [\n new DocPlainText({ configuration, text: 'Decorators:' })\n ])\n ])\n );\n for (const decoratorBlock of decoratorBlocks) {\n output.appendNodes(decoratorBlock.content.nodes);\n }\n }\n\n let appendRemarks: boolean = true;\n switch (apiItem.kind) {\n case ApiItemKind.Class:\n case ApiItemKind.Interface:\n case ApiItemKind.Namespace:\n case ApiItemKind.Package:\n this._writeRemarksSection(output, apiItem);\n appendRemarks = false;\n break;\n }\n\n switch (apiItem.kind) {\n case ApiItemKind.Class:\n this._writeClassTables(output, apiItem as ApiClass);\n break;\n case ApiItemKind.Enum:\n this._writeEnumTables(output, apiItem as ApiEnum);\n break;\n case ApiItemKind.Interface:\n this._writeInterfaceTables(output, apiItem as ApiInterface);\n break;\n case ApiItemKind.Constructor:\n case ApiItemKind.ConstructSignature:\n case ApiItemKind.Method:\n case ApiItemKind.MethodSignature:\n case ApiItemKind.Function:\n this._writeParameterTables(output, apiItem as ApiParameterListMixin);\n this._writeThrowsSection(output, apiItem);\n break;\n case ApiItemKind.Namespace:\n this._writePackageOrNamespaceTables(output, apiItem as ApiNamespace);\n break;\n case ApiItemKind.Model:\n this._writeModelTable(output, apiItem as ApiModel);\n break;\n case ApiItemKind.Package:\n this._writePackageOrNamespaceTables(output, apiItem as ApiPackage);\n break;\n case ApiItemKind.Property:\n case ApiItemKind.PropertySignature:\n break;\n case ApiItemKind.TypeAlias:\n break;\n case ApiItemKind.Variable:\n break;\n default:\n throw new Error('Unsupported API item kind: ' + apiItem.kind);\n }\n\n if (appendRemarks) {\n this._writeRemarksSection(output, apiItem);\n }\n\n const filename: string = path.join(this._outputFolder, this._getFilenameForApiItem(apiItem));\n const stringBuilder: StringBuilder = new StringBuilder();\n\n stringBuilder.append(\n '<!-- Do not edit this file. It is automatically generated by API Documenter. -->\\n\\n'\n );\n\n this._markdownEmitter.emit(stringBuilder, output, {\n contextApiItem: apiItem,\n onGetFilenameForApiItem: (apiItemForFilename: ApiItem) => {\n return this._getLinkFilenameForApiItem(apiItemForFilename);\n }\n });\n\n let pageContent: string = stringBuilder.toString();\n\n if (this._pluginLoader.markdownDocumenterFeature) {\n // Allow the plugin to customize the pageContent\n const eventArgs: IMarkdownDocumenterFeatureOnBeforeWritePageArgs = {\n apiItem: apiItem,\n outputFilename: filename,\n pageContent: pageContent\n };\n this._pluginLoader.markdownDocumenterFeature.onBeforeWritePage(eventArgs);\n pageContent = eventArgs.pageContent;\n }\n\n FileSystem.writeFile(filename, pageContent, {\n convertLineEndings: this._documenterConfig ? this._documenterConfig.newlineKind : NewlineKind.CrLf\n });\n }\n\n private _writeHeritageTypes(output: DocSection, apiItem: ApiDeclaredItem): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n if (apiItem instanceof ApiClass) {\n if (apiItem.extendsType) {\n const extendsParagraph: DocParagraph = new DocParagraph({ configuration }, [\n new DocEmphasisSpan({ configuration, bold: true }, [\n new DocPlainText({ configuration, text: 'Extends: ' })\n ])\n ]);\n this._appendExcerptWithHyperlinks(extendsParagraph, apiItem.extendsType.excerpt);\n output.appendNode(extendsParagraph);\n }\n if (apiItem.implementsTypes.length > 0) {\n const implementsParagraph: DocParagraph = new DocParagraph({ configuration }, [\n new DocEmphasisSpan({ configuration, bold: true }, [\n new DocPlainText({ configuration, text: 'Implements: ' })\n ])\n ]);\n let needsComma: boolean = false;\n for (const implementsType of apiItem.implementsTypes) {\n if (needsComma) {\n implementsParagraph.appendNode(new DocPlainText({ configuration, text: ', ' }));\n }\n this._appendExcerptWithHyperlinks(implementsParagraph, implementsType.excerpt);\n needsComma = true;\n }\n output.appendNode(implementsParagraph);\n }\n }\n\n if (apiItem instanceof ApiInterface) {\n if (apiItem.extendsTypes.length > 0) {\n const extendsParagraph: DocParagraph = new DocParagraph({ configuration }, [\n new DocEmphasisSpan({ configuration, bold: true }, [\n new DocPlainText({ configuration, text: 'Extends: ' })\n ])\n ]);\n let needsComma: boolean = false;\n for (const extendsType of apiItem.extendsTypes) {\n if (needsComma) {\n extendsParagraph.appendNode(new DocPlainText({ configuration, text: ', ' }));\n }\n this._appendExcerptWithHyperlinks(extendsParagraph, extendsType.excerpt);\n needsComma = true;\n }\n output.appendNode(extendsParagraph);\n }\n }\n\n if (apiItem instanceof ApiTypeAlias) {\n const refs: ExcerptToken[] = apiItem.excerptTokens.filter(\n (token) =>\n token.kind === ExcerptTokenKind.Reference &&\n token.canonicalReference &&\n this._apiModel.resolveDeclarationReference(token.canonicalReference, undefined).resolvedApiItem\n );\n if (refs.length > 0) {\n const referencesParagraph: DocParagraph = new DocParagraph({ configuration }, [\n new DocEmphasisSpan({ configuration, bold: true }, [\n new DocPlainText({ configuration, text: 'References: ' })\n ])\n ]);\n let needsComma: boolean = false;\n const visited: Set<string> = new Set();\n for (const ref of refs) {\n if (visited.has(ref.text)) {\n continue;\n }\n visited.add(ref.text);\n\n if (needsComma) {\n referencesParagraph.appendNode(new DocPlainText({ configuration, text: ', ' }));\n }\n\n this._appendExcerptTokenWithHyperlinks(referencesParagraph, ref);\n needsComma = true;\n }\n output.appendNode(referencesParagraph);\n }\n }\n }\n\n private _writeRemarksSection(output: DocSection, apiItem: ApiItem): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n if (apiItem instanceof ApiDocumentedItem) {\n const tsdocComment: DocComment | undefined = apiItem.tsdocComment;\n\n if (tsdocComment) {\n // Write the @remarks block\n if (tsdocComment.remarksBlock) {\n output.appendNode(new DocHeading({ configuration, title: 'Remarks' }));\n this._appendSection(output, tsdocComment.remarksBlock.content);\n }\n\n // Write the @example blocks\n const exampleBlocks: DocBlock[] = tsdocComment.customBlocks.filter(\n (x) => x.blockTag.tagNameWithUpperCase === StandardTags.example.tagNameWithUpperCase\n );\n\n let exampleNumber: number = 1;\n for (const exampleBlock of exampleBlocks) {\n const heading: string = exampleBlocks.length > 1 ? `Example ${exampleNumber}` : 'Example';\n\n output.appendNode(new DocHeading({ configuration, title: heading }));\n\n this._appendSection(output, exampleBlock.content);\n\n ++exampleNumber;\n }\n }\n }\n }\n\n private _writeThrowsSection(output: DocSection, apiItem: ApiItem): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n if (apiItem instanceof ApiDocumentedItem) {\n const tsdocComment: DocComment | undefined = apiItem.tsdocComment;\n\n if (tsdocComment) {\n // Write the @throws blocks\n const throwsBlocks: DocBlock[] = tsdocComment.customBlocks.filter(\n (x) => x.blockTag.tagNameWithUpperCase === StandardTags.throws.tagNameWithUpperCase\n );\n\n if (throwsBlocks.length > 0) {\n const heading: string = 'Exceptions';\n output.appendNode(new DocHeading({ configuration, title: heading }));\n\n for (const throwsBlock of throwsBlocks) {\n this._appendSection(output, throwsBlock.content);\n }\n }\n }\n }\n }\n\n /**\n * GENERATE PAGE: MODEL\n */\n private _writeModelTable(output: DocSection, apiModel: ApiModel): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n const packagesTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Package', 'Description']\n });\n\n for (const apiMember of apiModel.members) {\n const row: DocTableRow = new DocTableRow({ configuration }, [\n this._createTitleCell(apiMember),\n this._createDescriptionCell(apiMember)\n ]);\n\n switch (apiMember.kind) {\n case ApiItemKind.Package:\n packagesTable.addRow(row);\n this._writeApiItemPage(apiMember);\n break;\n }\n }\n\n if (packagesTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration, title: 'Packages' }));\n output.appendNode(packagesTable);\n }\n }\n\n /**\n * GENERATE PAGE: PACKAGE or NAMESPACE\n */\n private _writePackageOrNamespaceTables(output: DocSection, apiContainer: ApiPackage | ApiNamespace): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n const classesTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Class', 'Description']\n });\n\n const enumerationsTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Enumeration', 'Description']\n });\n\n const functionsTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Function', 'Description']\n });\n\n const interfacesTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Interface', 'Description']\n });\n\n const namespacesTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Namespace', 'Description']\n });\n\n const variablesTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Variable', 'Description']\n });\n\n const typeAliasesTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Type Alias', 'Description']\n });\n\n const apiMembers: ReadonlyArray<ApiItem> =\n apiContainer.kind === ApiItemKind.Package\n ? (apiContainer as ApiPackage).entryPoints[0].members\n : (apiContainer as ApiNamespace).members;\n\n for (const apiMember of apiMembers) {\n const row: DocTableRow = new DocTableRow({ configuration }, [\n this._createTitleCell(apiMember),\n this._createDescriptionCell(apiMember)\n ]);\n\n switch (apiMember.kind) {\n case ApiItemKind.Class:\n classesTable.addRow(row);\n this._writeApiItemPage(apiMember);\n break;\n\n case ApiItemKind.Enum:\n enumerationsTable.addRow(row);\n this._writeApiItemPage(apiMember);\n break;\n\n case ApiItemKind.Interface:\n interfacesTable.addRow(row);\n this._writeApiItemPage(apiMember);\n break;\n\n case ApiItemKind.Namespace:\n namespacesTable.addRow(row);\n this._writeApiItemPage(apiMember);\n break;\n\n case ApiItemKind.Function:\n functionsTable.addRow(row);\n this._writeApiItemPage(apiMember);\n break;\n\n case ApiItemKind.TypeAlias:\n typeAliasesTable.addRow(row);\n this._writeApiItemPage(apiMember);\n break;\n\n case ApiItemKind.Variable:\n variablesTable.addRow(row);\n this._writeApiItemPage(apiMember);\n break;\n }\n }\n\n if (classesTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration, title: 'Classes' }));\n output.appendNode(classesTable);\n }\n\n if (enumerationsTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration, title: 'Enumerations' }));\n output.appendNode(enumerationsTable);\n }\n if (functionsTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration, title: 'Functions' }));\n output.appendNode(functionsTable);\n }\n\n if (interfacesTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration, title: 'Interfaces' }));\n output.appendNode(interfacesTable);\n }\n\n if (namespacesTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration, title: 'Namespaces' }));\n output.appendNode(namespacesTable);\n }\n\n if (variablesTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration, title: 'Variables' }));\n output.appendNode(variablesTable);\n }\n\n if (typeAliasesTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration, title: 'Type Aliases' }));\n output.appendNode(typeAliasesTable);\n }\n }\n\n /**\n * GENERATE PAGE: CLASS\n */\n private _writeClassTables(output: DocSection, apiClass: ApiClass): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n const eventsTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Property', 'Modifiers', 'Type', 'Description']\n });\n\n const constructorsTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Constructor', 'Modifiers', 'Description']\n });\n\n const propertiesTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Property', 'Modifiers', 'Type', 'Description']\n });\n\n const methodsTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Method', 'Modifiers', 'Description']\n });\n\n const apiMembers: readonly ApiItem[] = this._getMembersAndWriteIncompleteWarning(apiClass, output);\n for (const apiMember of apiMembers) {\n const isInherited: boolean = apiMember.parent !== apiClass;\n switch (apiMember.kind) {\n case ApiItemKind.Constructor: {\n constructorsTable.addRow(\n new DocTableRow({ configuration }, [\n this._createTitleCell(apiMember),\n this._createModifiersCell(apiMember),\n this._createDescriptionCell(apiMember, isInherited)\n ])\n );\n\n this._writeApiItemPage(apiMember);\n break;\n }\n case ApiItemKind.Method: {\n methodsTable.addRow(\n new DocTableRow({ configuration }, [\n this._createTitleCell(apiMember),\n this._createModifiersCell(apiMember),\n this._createDescriptionCell(apiMember, isInherited)\n ])\n );\n\n this._writeApiItemPage(apiMember);\n break;\n }\n case ApiItemKind.Property: {\n if ((apiMember as ApiPropertyItem).isEventProperty) {\n eventsTable.addRow(\n new DocTableRow({ configuration }, [\n this._createTitleCell(apiMember),\n this._createModifiersCell(apiMember),\n this._createPropertyTypeCell(apiMember),\n this._createDescriptionCell(apiMember, isInherited)\n ])\n );\n } else {\n propertiesTable.addRow(\n new DocTableRow({ configuration }, [\n this._createTitleCell(apiMember),\n this._createModifiersCell(apiMember),\n this._createPropertyTypeCell(apiMember),\n this._createDescriptionCell(apiMember, isInherited)\n ])\n );\n }\n\n this._writeApiItemPage(apiMember);\n break;\n }\n }\n }\n\n if (eventsTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration, title: 'Events' }));\n output.appendNode(eventsTable);\n }\n\n if (constructorsTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration, title: 'Constructors' }));\n output.appendNode(constructorsTable);\n }\n\n if (propertiesTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration, title: 'Properties' }));\n output.appendNode(propertiesTable);\n }\n\n if (methodsTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration, title: 'Methods' }));\n output.appendNode(methodsTable);\n }\n }\n\n /**\n * GENERATE PAGE: ENUM\n */\n private _writeEnumTables(output: DocSection, apiEnum: ApiEnum): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n const enumMembersTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Member', 'Value', 'Description']\n });\n\n for (const apiEnumMember of apiEnum.members) {\n enumMembersTable.addRow(\n new DocTableRow({ configuration }, [\n new DocTableCell({ configuration }, [\n new DocParagraph({ configuration }, [\n new DocPlainText({ configuration, text: Utilities.getConciseSignature(apiEnumMember) })\n ])\n ]),\n this._createInitializerCell(apiEnumMember),\n this._createDescriptionCell(apiEnumMember)\n ])\n );\n }\n\n if (enumMembersTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration, title: 'Enumeration Members' }));\n output.appendNode(enumMembersTable);\n }\n }\n\n /**\n * GENERATE PAGE: INTERFACE\n */\n private _writeInterfaceTables(output: DocSection, apiInterface: ApiInterface): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n const eventsTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Property', 'Modifiers', 'Type', 'Description']\n });\n\n const propertiesTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Property', 'Modifiers', 'Type', 'Description']\n });\n\n const methodsTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Method', 'Description']\n });\n\n const apiMembers: readonly ApiItem[] = this._getMembersAndWriteIncompleteWarning(apiInterface, output);\n for (const apiMember of apiMembers) {\n const isInherited: boolean = apiMember.parent !== apiInterface;\n switch (apiMember.kind) {\n case ApiItemKind.ConstructSignature:\n case ApiItemKind.MethodSignature: {\n methodsTable.addRow(\n new DocTableRow({ configuration }, [\n this._createTitleCell(apiMember),\n this._createDescriptionCell(apiMember, isInherited)\n ])\n );\n\n this._writeApiItemPage(apiMember);\n break;\n }\n case ApiItemKind.PropertySignature: {\n if ((apiMember as ApiPropertyItem).isEventProperty) {\n eventsTable.addRow(\n new DocTableRow({ configuration }, [\n this._createTitleCell(apiMember),\n this._createModifiersCell(apiMember),\n this._createPropertyTypeCell(apiMember),\n this._createDescriptionCell(apiMember, isInherited)\n ])\n );\n } else {\n propertiesTable.addRow(\n new DocTableRow({ configuration }, [\n this._createTitleCell(apiMember),\n this._createModifiersCell(apiMember),\n this._createPropertyTypeCell(apiMember),\n this._createDescriptionCell(apiMember, isInherited)\n ])\n );\n }\n\n this._writeApiItemPage(apiMember);\n break;\n }\n }\n }\n\n if (eventsTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration, title: 'Events' }));\n output.appendNode(eventsTable);\n }\n\n if (propertiesTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration, title: 'Properties' }));\n output.appendNode(propertiesTable);\n }\n\n if (methodsTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration, title: 'Methods' }));\n output.appendNode(methodsTable);\n }\n }\n\n /**\n * GENERATE PAGE: FUNCTION-LIKE\n */\n private _writeParameterTables(output: DocSection, apiParameterListMixin: ApiParameterListMixin): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n const parametersTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Parameter', 'Type', 'Description']\n });\n for (const apiParameter of apiParameterListMixin.parameters) {\n const parameterDescription: DocSection = new DocSection({ configuration });\n\n if (apiParameter.isOptional) {\n parameterDescription.appendNodesInParagraph([\n new DocEmphasisSpan({ configuration, italic: true }, [\n new DocPlainText({ configuration, text: '(Optional)' })\n ]),\n new DocPlainText({ configuration, text: ' ' })\n ]);\n }\n\n if (apiParameter.tsdocParamBlock) {\n this._appendAndMergeSection(parameterDescription, apiParameter.tsdocParamBlock.content);\n }\n\n parametersTable.addRow(\n new DocTableRow({ configuration }, [\n new DocTableCell({ configuration }, [\n new DocParagraph({ configuration }, [\n new DocPlainText({ configuration, text: apiParameter.name })\n ])\n ]),\n new DocTableCell({ configuration }, [\n this._createParagraphForTypeExcerpt(apiParameter.parameterTypeExcerpt)\n ]),\n new DocTableCell({ configuration }, parameterDescription.nodes)\n ])\n );\n }\n\n if (parametersTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration, title: 'Parameters' }));\n output.appendNode(parametersTable);\n }\n\n if (ApiReturnTypeMixin.isBaseClassOf(apiParameterListMixin)) {\n const returnTypeExcerpt: Excerpt = apiParameterListMixin.returnTypeExcerpt;\n output.appendNode(\n new DocParagraph({ configuration }, [\n new DocEmphasisSpan({ configuration, bold: true }, [\n new DocPlainText({ configuration, text: 'Returns:' })\n ])\n ])\n );\n\n output.appendNode(this._createParagraphForTypeExcerpt(returnTypeExcerpt));\n\n if (apiParameterListMixin instanceof ApiDocumentedItem) {\n if (apiParameterListMixin.tsdocComment && apiParameterListMixin.tsdocComment.returnsBlock) {\n this._appendSection(output, apiParameterListMixin.tsdocComment.returnsBlock.content);\n }\n }\n }\n }\n\n private _createParagraphForTypeExcerpt(excerpt: Excerpt): DocParagraph {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n const paragraph: DocParagraph = new DocParagraph({ configuration });\n\n if (!excerpt.text.trim()) {\n paragraph.appendNode(new DocPlainText({ configuration, text: '(not declared)' }));\n } else {\n this._appendExcerptWithHyperlinks(paragraph, excerpt);\n }\n\n return paragraph;\n }\n\n private _appendExcerptWithHyperlinks(docNodeContainer: DocNodeContainer, excerpt: Excerpt): void {\n for (const token of excerpt.spannedTokens) {\n this._appendExcerptTokenWithHyperlinks(docNodeContainer, token);\n }\n }\n\n private _appendExcerptTokenWithHyperlinks(docNodeContainer: DocNodeContainer, token: ExcerptToken): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n // Markdown doesn't provide a standardized syntax for hyperlinks inside code spans, so we will render\n // the type expression as DocPlainText. Instead of creating multiple DocParagraphs, we can simply\n // discard any newlines and let the renderer do normal word-wrapping.\n const unwrappedTokenText: string = token.text.replace(/[\\r\\n]+/g, ' ');\n\n // If it's hyperlinkable, then append a DocLinkTag\n if (token.kind === ExcerptTokenKind.Reference && token.canonicalReference) {\n const apiItemResult: IResolveDeclarationReferenceResult = this._apiModel.resolveDeclarationReference(\n token.canonicalReference,\n undefined\n );\n\n if (apiItemResult.resolvedApiItem) {\n docNodeContainer.appendNode(\n new DocLinkTag({\n configuration,\n tagName: '@link',\n linkText: unwrappedTokenText,\n urlDestination: this._getLinkFilenameForApiItem(apiItemResult.resolvedApiItem)\n })\n );\n return;\n }\n }\n\n // Otherwise append non-hyperlinked text\n docNodeContainer.appendNode(new DocPlainText({ configuration, text: unwrappedTokenText }));\n }\n\n private _createTitleCell(apiItem: ApiItem): DocTableCell {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n let linkText: string = Utilities.getConciseSignature(apiItem);\n if (ApiOptionalMixin.isBaseClassOf(apiItem) && apiItem.isOptional) {\n linkText += '?';\n }\n\n return new DocTableCell({ configuration }, [\n new DocParagraph({ configuration }, [\n new DocLinkTag({\n configuration,\n tagName: '@link',\n linkText: linkText,\n urlDestination: this._getLinkFilenameForApiItem(apiItem)\n })\n ])\n ]);\n }\n\n /**\n * This generates a DocTableCell for an ApiItem including the summary section and \"(BETA)\" annotation.\n *\n * @remarks\n * We mostly assume that the input is an ApiDocumentedItem, but it's easier to perform this as a runtime\n * check than to have each caller perform a type cast.\n */\n private _createDescriptionCell(apiItem: ApiItem, isInherited: boolean = false): DocTableCell {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n const section: DocSection = new DocSection({ configuration });\n\n if (ApiReleaseTagMixin.isBaseClassOf(apiItem)) {\n if (apiItem.releaseTag === ReleaseTag.Beta) {\n section.appendNodesInParagraph([\n new DocEmphasisSpan({ configuration, bold: true, italic: true }, [\n new DocPlainText({ configuration, text: '(BETA)' })\n ]),\n new DocPlainText({ configuration, text: ' ' })\n ]);\n }\n }\n\n if (ApiOptionalMixin.isBaseClassOf(apiItem) && apiItem.isOptional) {\n section.appendNodesInParagraph([\n new DocEmphasisSpan({ configuration, italic: true }, [\n new DocPlainText({ configuration, text: '(Optional)' })\n ]),\n new DocPlainText({ configuration, text: ' ' })\n ]);\n }\n\n if (apiItem instanceof ApiDocumentedItem) {\n if (apiItem.tsdocComment !== undefined) {\n this._appendAndMergeSection(section, apiItem.tsdocComment.summarySection);\n }\n }\n\n if (isInherited && apiItem.parent) {\n section.appendNode(\n new DocParagraph({ configuration }, [\n new DocPlainText({ configuration, text: '(Inherited from ' }),\n new DocLinkTag({\n configuration,\n tagName: '@link',\n linkText: apiItem.parent.displayName,\n urlDestination: this._getLinkFilenameForApiItem(apiItem.parent)\n }),\n new DocPlainText({ configuration, text: ')' })\n ])\n );\n }\n\n return new DocTableCell({ configuration }, section.nodes);\n }\n\n private _createModifiersCell(apiItem: ApiItem): DocTableCell {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n const section: DocSection = new DocSection({ configuration });\n\n if (ApiProtectedMixin.isBaseClassOf(apiItem)) {\n if (apiItem.isProtected) {\n section.appendNode(\n new DocParagraph({ configuration }, [new DocCodeSpan({ configuration, code: 'protected' })])\n );\n }\n }\n\n if (ApiReadonlyMixin.isBaseClassOf(apiItem)) {\n if (apiItem.isReadonly) {\n section.appendNode(\n new DocParagraph({ configuration }, [new DocCodeSpan({ configuration, code: 'readonly' })])\n );\n }\n }\n\n if (ApiStaticMixin.isBaseClassOf(apiItem)) {\n if (apiItem.isStatic) {\n section.appendNode(\n new DocParagraph({ configuration }, [new DocCodeSpan({ configuration, code: 'static' })])\n );\n }\n }\n\n return new DocTableCell({ configuration }, section.nodes);\n }\n\n private _createPropertyTypeCell(apiItem: ApiItem): DocTableCell {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n const section: DocSection = new DocSection({ configuration });\n\n if (apiItem instanceof ApiPropertyItem) {\n section.appendNode(this._createParagraphForTypeExcerpt(apiItem.propertyTypeExcerpt));\n }\n\n return new DocTableCell({ configuration }, section.nodes);\n }\n\n private _createInitializerCell(apiItem: ApiItem): DocTableCell {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n const section: DocSection = new DocSection({ configuration });\n\n if (ApiInitializerMixin.isBaseClassOf(apiItem)) {\n if (apiItem.initializerExcerpt) {\n section.appendNodeInParagraph(\n new DocCodeSpan({ configuration, code: apiItem.initializerExcerpt.text })\n );\n }\n }\n\n return new DocTableCell({ configuration }, section.nodes);\n }\n\n private _writeBreadcrumb(output: DocSection, apiItem: ApiItem): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n\n output.appendNodeInParagraph(\n new DocLinkTag({\n configuration,\n tagName: '@link',\n linkText: 'Home',\n urlDestination: this._getLinkFilenameForApiItem(this._apiModel)\n })\n );\n\n for (const hierarchyItem of apiItem.getHierarchy()) {\n switch (hierarchyItem.kind) {\n case ApiItemKind.Model:\n case ApiItemKind.EntryPoint:\n // We don't show the model as part of the breadcrumb because it is the root-level container.\n // We don't show the entry point because today API Extractor doesn't support multiple entry points;\n // this may change in the future.\n break;\n default:\n output.appendNodesInParagraph([\n new DocPlainText({\n configuration,\n text: ' > '\n }),\n new DocLinkTag({\n configuration,\n tagName: '@link',\n linkText: hierarchyItem.displayName,\n urlDestination: this._getLinkFilenameForApiItem(hierarchyItem)\n })\n ]);\n }\n }\n }\n\n private _writeBetaWarning(output: DocSection): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n const betaWarning: string =\n 'This API is provided as a preview for developers and may change' +\n ' based on feedback that we receive. Do not use this API in a production environment.';\n output.appendNode(\n new DocNoteBox({ configuration }, [\n new DocParagraph({ configuration }, [new DocPlainText({ configuration, text: betaWarning })])\n ])\n );\n }\n\n private _appendSection(output: DocSection, docSection: DocSection): void {\n for (const node of docSection.nodes) {\n output.appendNode(node);\n }\n }\n\n private _appendAndMergeSection(output: DocSection, docSection: DocSection): void {\n let firstNode: boolean = true;\n for (const node of docSection.nodes) {\n if (firstNode) {\n if (node.kind === DocNodeKind.Paragraph) {\n output.appendNodesInParagraph(node.getChildNodes());\n firstNode = false;\n continue;\n }\n }\n firstNode = false;\n\n output.appendNode(node);\n }\n }\n\n private _getMembersAndWriteIncompleteWarning(\n apiClassOrInterface: ApiClass | ApiInterface,\n output: DocSection\n ): readonly ApiItem[] {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n const showInheritedMembers: boolean = !!this._documenterConfig?.configFile.showInheritedMembers;\n if (!showInheritedMembers) {\n return apiClassOrInterface.members;\n }\n\n const result: IFindApiItemsResult = apiClassOrInterface.findMembersWithInheritance();\n\n // If the result is potentially incomplete, write a short warning communicating this.\n if (result.maybeIncompleteResult) {\n output.appendNode(\n new DocParagraph({ configuration }, [\n new DocEmphasisSpan({ configuration, italic: true }, [\n new DocPlainText({\n configuration,\n text: '(Some inherited members may not be shown because they are not represented in the documentation.)'\n })\n ])\n ])\n );\n }\n\n // Log the messages for diagnostic purposes.\n for (const message of result.messages) {\n console.log(`Diagnostic message for findMembersWithInheritance: ${message.text}`);\n }\n\n return result.items;\n }\n\n private _getFilenameForApiItem(apiItem: ApiItem): string {\n if (apiItem.kind === ApiItemKind.Model) {\n return 'index.md';\n }\n\n let baseName: string = '';\n for (const hierarchyItem of apiItem.getHierarchy()) {\n // For overloaded methods, add a suffix such as \"MyClass.myMethod_2\".\n let qualifiedName: string = Utilities.getSafeFilenameForName(hierarchyItem.displayName);\n if (ApiParameterListMixin.isBaseClassOf(hierarchyItem)) {\n if (hierarchyItem.overloadIndex > 1) {\n // Subtract one for compatibility with earlier releases of API Documenter.\n // (This will get revamped when we fix GitHub issue #1308)\n qualifiedName += `_${hierarchyItem.overloadIndex - 1}`;\n }\n }\n\n switch (hierarchyItem.kind) {\n case ApiItemKind.Model:\n case ApiItemKind.EntryPoint:\n case ApiItemKind.EnumMember:\n break;\n case ApiItemKind.Package:\n baseName = Utilities.getSafeFilenameForName(PackageName.getUnscopedName(hierarchyItem.displayName));\n break;\n default:\n baseName += '.' + qualifiedName;\n }\n }\n return baseName + '.md';\n }\n\n private _getLinkFilenameForApiItem(apiItem: ApiItem): string {\n return './' + this._getFilenameForApiItem(apiItem);\n }\n\n private _deleteOldOutputFiles(): void {\n console.log('Deleting old output from ' + this._outputFolder);\n FileSystem.ensureEmptyFolder(this._outputFolder);\n }\n}\n"]}
@@ -89,4 +89,11 @@
89
89
  */
90
90
  // "filterByInlineTag": "@docCategory"
91
91
  }
92
+
93
+ /**
94
+ * Specifies whether inherited members should also be shown on an API item's page.
95
+ *
96
+ * DEFAULT VALUE: false
97
+ */
98
+ // "showInheritedMembers": false
92
99
  }
@@ -35,6 +35,11 @@
35
35
  "description": "Configures how the table of contents is generated.",
36
36
  "type": "object",
37
37
  "additionalProperties": true
38
+ },
39
+
40
+ "showInheritedMembers": {
41
+ "description": "Specifies whether inherited members should also be shown on an API item's page.",
42
+ "type": "boolean"
38
43
  }
39
44
  },
40
45
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@microsoft/api-documenter",
3
- "version": "7.18.4",
3
+ "version": "7.19.0",
4
4
  "description": "Read JSON files from api-extractor, generate documentation pages",
5
5
  "repository": {
6
6
  "type": "git",
@@ -15,7 +15,7 @@
15
15
  "main": "lib/index.js",
16
16
  "typings": "dist/rollup.d.ts",
17
17
  "dependencies": {
18
- "@microsoft/api-extractor-model": "7.22.0",
18
+ "@microsoft/api-extractor-model": "7.22.1",
19
19
  "@microsoft/tsdoc": "0.14.1",
20
20
  "@rushstack/node-core-library": "3.49.0",
21
21
  "@rushstack/ts-command-line": "4.12.1",
@@ -25,8 +25,8 @@
25
25
  },
26
26
  "devDependencies": {
27
27
  "@rushstack/eslint-config": "2.6.2",
28
- "@rushstack/heft": "0.46.5",
29
- "@rushstack/heft-node-rig": "1.9.21",
28
+ "@rushstack/heft": "0.46.6",
29
+ "@rushstack/heft-node-rig": "1.9.22",
30
30
  "@types/heft-jest": "1.0.1",
31
31
  "@types/js-yaml": "3.12.1",
32
32
  "@types/node": "12.20.24",