@microsoft/api-documenter 7.23.6 → 7.23.8
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.
- package/dist/tsdoc-metadata.json +1 -1
- package/lib/documenters/MarkdownDocumenter.d.ts +1 -0
- package/lib/documenters/MarkdownDocumenter.d.ts.map +1 -1
- package/lib/documenters/MarkdownDocumenter.js +18 -4
- package/lib/documenters/MarkdownDocumenter.js.map +1 -1
- package/lib/documenters/YamlDocumenter.js +1 -1
- package/lib/documenters/YamlDocumenter.js.map +1 -1
- package/package.json +4 -4
package/dist/tsdoc-metadata.json
CHANGED
|
@@ -62,6 +62,7 @@ export declare class MarkdownDocumenter {
|
|
|
62
62
|
private _createPropertyTypeCell;
|
|
63
63
|
private _createInitializerCell;
|
|
64
64
|
private _writeBreadcrumb;
|
|
65
|
+
private _writeAlphaWarning;
|
|
65
66
|
private _writeBetaWarning;
|
|
66
67
|
private _appendSection;
|
|
67
68
|
private _appendAndMergeSection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownDocumenter.d.ts","sourceRoot":"","sources":["../../src/documenters/MarkdownDocumenter.ts"],"names":[],"mappings":"AAoBA,OAAO,EACL,KAAK,QAAQ,EA2Bd,MAAM,gCAAgC,CAAC;AAgBxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,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;
|
|
1
|
+
{"version":3,"file":"MarkdownDocumenter.d.ts","sourceRoot":"","sources":["../../src/documenters/MarkdownDocumenter.ts"],"names":[],"mappings":"AAoBA,OAAO,EACL,KAAK,QAAQ,EA2Bd,MAAM,gCAAgC,CAAC;AAgBxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,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;IAmNzB,OAAO,CAAC,mBAAmB;IAmF3B,OAAO,CAAC,oBAAoB;IAgC5B,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA4BxB;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAwItC;;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;IAoD9B,OAAO,CAAC,oBAAoB;IA4C5B,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,gBAAgB;IAqCxB,OAAO,CAAC,kBAAkB;IAY1B,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"}
|
|
@@ -127,7 +127,10 @@ class MarkdownDocumenter {
|
|
|
127
127
|
throw new Error('Unsupported API item kind: ' + apiItem.kind);
|
|
128
128
|
}
|
|
129
129
|
if (api_extractor_model_1.ApiReleaseTagMixin.isBaseClassOf(apiItem)) {
|
|
130
|
-
if (apiItem.releaseTag === api_extractor_model_1.ReleaseTag.
|
|
130
|
+
if (apiItem.releaseTag === api_extractor_model_1.ReleaseTag.Alpha) {
|
|
131
|
+
this._writeAlphaWarning(output);
|
|
132
|
+
}
|
|
133
|
+
else if (apiItem.releaseTag === api_extractor_model_1.ReleaseTag.Beta) {
|
|
131
134
|
this._writeBetaWarning(output);
|
|
132
135
|
}
|
|
133
136
|
}
|
|
@@ -793,10 +796,13 @@ class MarkdownDocumenter {
|
|
|
793
796
|
const configuration = this._tsdocConfiguration;
|
|
794
797
|
const section = new tsdoc_1.DocSection({ configuration });
|
|
795
798
|
if (api_extractor_model_1.ApiReleaseTagMixin.isBaseClassOf(apiItem)) {
|
|
796
|
-
if (apiItem.releaseTag === api_extractor_model_1.ReleaseTag.Beta) {
|
|
799
|
+
if (apiItem.releaseTag === api_extractor_model_1.ReleaseTag.Alpha || apiItem.releaseTag === api_extractor_model_1.ReleaseTag.Beta) {
|
|
797
800
|
section.appendNodesInParagraph([
|
|
798
801
|
new DocEmphasisSpan_1.DocEmphasisSpan({ configuration, bold: true, italic: true }, [
|
|
799
|
-
new tsdoc_1.DocPlainText({
|
|
802
|
+
new tsdoc_1.DocPlainText({
|
|
803
|
+
configuration,
|
|
804
|
+
text: `(${apiItem.releaseTag === api_extractor_model_1.ReleaseTag.Alpha ? 'ALPHA' : 'BETA'})`
|
|
805
|
+
})
|
|
800
806
|
]),
|
|
801
807
|
new tsdoc_1.DocPlainText({ configuration, text: ' ' })
|
|
802
808
|
]);
|
|
@@ -907,9 +913,17 @@ class MarkdownDocumenter {
|
|
|
907
913
|
}
|
|
908
914
|
}
|
|
909
915
|
}
|
|
916
|
+
_writeAlphaWarning(output) {
|
|
917
|
+
const configuration = this._tsdocConfiguration;
|
|
918
|
+
const betaWarning = 'This API is provided as an alpha preview for developers and may change' +
|
|
919
|
+
' based on feedback that we receive. Do not use this API in a production environment.';
|
|
920
|
+
output.appendNode(new DocNoteBox_1.DocNoteBox({ configuration }, [
|
|
921
|
+
new tsdoc_1.DocParagraph({ configuration }, [new tsdoc_1.DocPlainText({ configuration, text: betaWarning })])
|
|
922
|
+
]));
|
|
923
|
+
}
|
|
910
924
|
_writeBetaWarning(output) {
|
|
911
925
|
const configuration = this._tsdocConfiguration;
|
|
912
|
-
const betaWarning = 'This API is provided as a preview for developers and may change' +
|
|
926
|
+
const betaWarning = 'This API is provided as a beta preview for developers and may change' +
|
|
913
927
|
' based on feedback that we receive. Do not use this API in a production environment.';
|
|
914
928
|
output.appendNode(new DocNoteBox_1.DocNoteBox({ configuration }, [
|
|
915
929
|
new tsdoc_1.DocParagraph({ configuration }, [new tsdoc_1.DocPlainText({ configuration, text: betaWarning })])
|
|
@@ -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 type TSDocConfiguration,\n StringBuilder,\n DocNodeKind,\n DocParagraph,\n DocCodeSpan,\n DocFencedCode,\n StandardTags,\n type DocBlock,\n type DocComment,\n type DocNodeContainer\n} from '@microsoft/tsdoc';\nimport {\n type ApiModel,\n type ApiItem,\n type ApiEnum,\n type ApiPackage,\n ApiItemKind,\n ApiReleaseTagMixin,\n ApiDocumentedItem,\n ApiClass,\n ReleaseTag,\n ApiStaticMixin,\n ApiPropertyItem,\n ApiInterface,\n type Excerpt,\n ApiAbstractMixin,\n ApiParameterListMixin,\n ApiReturnTypeMixin,\n ApiDeclaredItem,\n type ApiNamespace,\n ExcerptTokenKind,\n type IResolveDeclarationReferenceResult,\n ApiTypeAlias,\n type ExcerptToken,\n ApiOptionalMixin,\n ApiInitializerMixin,\n ApiProtectedMixin,\n ApiReadonlyMixin,\n type 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 type IMarkdownDocumenterFeatureOnBeforeWritePageArgs,\n MarkdownDocumenterFeatureContext\n} from '../plugin/MarkdownDocumenterFeature';\nimport type { 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 abstractClassesTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Abstract Class', 'Description']\n });\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 if (ApiAbstractMixin.isBaseClassOf(apiMember) && apiMember.isAbstract) {\n abstractClassesTable.addRow(row);\n } else {\n classesTable.addRow(row);\n }\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 (abstractClassesTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration, title: 'Abstract Classes' }));\n output.appendNode(abstractClassesTable);\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 // Output modifiers in syntactically correct order: first access modifier (here: `protected`), then\n // `static` or `abstract` (no member can be both, so the order between the two of them does not matter),\n // last `readonly`. If `override` was supported, it would go directly before `readonly`.\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 (ApiStaticMixin.isBaseClassOf(apiItem)) {\n if (apiItem.isStatic) {\n section.appendNode(\n new DocParagraph({ configuration }, [new DocCodeSpan({ configuration, code: 'static' })])\n );\n }\n }\n\n if (ApiAbstractMixin.isBaseClassOf(apiItem)) {\n if (apiItem.isAbstract) {\n section.appendNode(\n new DocParagraph({ configuration }, [new DocCodeSpan({ configuration, code: 'abstract' })])\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 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"]}
|
|
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 type TSDocConfiguration,\n StringBuilder,\n DocNodeKind,\n DocParagraph,\n DocCodeSpan,\n DocFencedCode,\n StandardTags,\n type DocBlock,\n type DocComment,\n type DocNodeContainer\n} from '@microsoft/tsdoc';\nimport {\n type ApiModel,\n type ApiItem,\n type ApiEnum,\n type ApiPackage,\n ApiItemKind,\n ApiReleaseTagMixin,\n ApiDocumentedItem,\n ApiClass,\n ReleaseTag,\n ApiStaticMixin,\n ApiPropertyItem,\n ApiInterface,\n type Excerpt,\n ApiAbstractMixin,\n ApiParameterListMixin,\n ApiReturnTypeMixin,\n ApiDeclaredItem,\n type ApiNamespace,\n ExcerptTokenKind,\n type IResolveDeclarationReferenceResult,\n ApiTypeAlias,\n type ExcerptToken,\n ApiOptionalMixin,\n ApiInitializerMixin,\n ApiProtectedMixin,\n ApiReadonlyMixin,\n type 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 type IMarkdownDocumenterFeatureOnBeforeWritePageArgs,\n MarkdownDocumenterFeatureContext\n} from '../plugin/MarkdownDocumenterFeature';\nimport type { 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.Alpha) {\n this._writeAlphaWarning(output);\n } else 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 abstractClassesTable: DocTable = new DocTable({\n configuration,\n headerTitles: ['Abstract Class', 'Description']\n });\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 if (ApiAbstractMixin.isBaseClassOf(apiMember) && apiMember.isAbstract) {\n abstractClassesTable.addRow(row);\n } else {\n classesTable.addRow(row);\n }\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 (abstractClassesTable.rows.length > 0) {\n output.appendNode(new DocHeading({ configuration, title: 'Abstract Classes' }));\n output.appendNode(abstractClassesTable);\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.Alpha || apiItem.releaseTag === ReleaseTag.Beta) {\n section.appendNodesInParagraph([\n new DocEmphasisSpan({ configuration, bold: true, italic: true }, [\n new DocPlainText({\n configuration,\n text: `(${apiItem.releaseTag === ReleaseTag.Alpha ? 'ALPHA' : 'BETA'})`\n })\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 // Output modifiers in syntactically correct order: first access modifier (here: `protected`), then\n // `static` or `abstract` (no member can be both, so the order between the two of them does not matter),\n // last `readonly`. If `override` was supported, it would go directly before `readonly`.\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 (ApiStaticMixin.isBaseClassOf(apiItem)) {\n if (apiItem.isStatic) {\n section.appendNode(\n new DocParagraph({ configuration }, [new DocCodeSpan({ configuration, code: 'static' })])\n );\n }\n }\n\n if (ApiAbstractMixin.isBaseClassOf(apiItem)) {\n if (apiItem.isAbstract) {\n section.appendNode(\n new DocParagraph({ configuration }, [new DocCodeSpan({ configuration, code: 'abstract' })])\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 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 _writeAlphaWarning(output: DocSection): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n const betaWarning: string =\n 'This API is provided as an alpha 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 _writeBetaWarning(output: DocSection): void {\n const configuration: TSDocConfiguration = this._tsdocConfiguration;\n const betaWarning: string =\n 'This API is provided as a beta 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"]}
|
|
@@ -309,7 +309,7 @@ class YamlDocumenter {
|
|
|
309
309
|
}
|
|
310
310
|
}
|
|
311
311
|
if (api_extractor_model_1.ApiReleaseTagMixin.isBaseClassOf(apiItem)) {
|
|
312
|
-
if (apiItem.releaseTag === api_extractor_model_1.ReleaseTag.Beta) {
|
|
312
|
+
if (apiItem.releaseTag === api_extractor_model_1.ReleaseTag.Alpha || apiItem.releaseTag === api_extractor_model_1.ReleaseTag.Beta) {
|
|
313
313
|
yamlItem.isPreview = true;
|
|
314
314
|
}
|
|
315
315
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YamlDocumenter.js","sourceRoot":"","sources":["../../src/documenters/YamlDocumenter.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';\n\nimport yaml = require('js-yaml');\nimport {\n JsonFile,\n JsonSchema,\n PackageName,\n FileSystem,\n NewlineKind,\n InternalError\n} from '@rushstack/node-core-library';\nimport {\n StringBuilder,\n type DocSection,\n type DocComment,\n type DocBlock,\n StandardTags\n} from '@microsoft/tsdoc';\nimport {\n type ApiModel,\n type ApiItem,\n ApiItemKind,\n ApiDocumentedItem,\n ApiReleaseTagMixin,\n ReleaseTag,\n type ApiPropertyItem,\n ApiItemContainerMixin,\n type ApiPackage,\n type ApiEnumMember,\n ApiClass,\n ApiInterface,\n type ApiMethod,\n type ApiMethodSignature,\n type ApiConstructor,\n type ApiFunction,\n ApiReturnTypeMixin,\n ApiTypeParameterListMixin,\n type Excerpt,\n type ExcerptToken,\n ExcerptTokenKind,\n type HeritageType,\n type ApiVariable,\n type ApiTypeAlias\n} from '@microsoft/api-extractor-model';\nimport {\n type DeclarationReference,\n Navigation,\n Meaning\n} from '@microsoft/tsdoc/lib-commonjs/beta/DeclarationReference';\nimport type {\n IYamlApiFile,\n IYamlItem,\n IYamlSyntax,\n IYamlParameter,\n IYamlReference,\n IYamlReferenceSpec,\n IYamlInheritanceTree\n} from '../yaml/IYamlApiFile';\nimport type { IYamlTocFile, IYamlTocItem } from '../yaml/IYamlTocFile';\nimport { Utilities } from '../utils/Utilities';\nimport { CustomMarkdownEmitter } from '../markdown/CustomMarkdownEmitter';\nimport { convertUDPYamlToSDP } from '../utils/ToSdpConvertHelper';\nimport typescriptSchema from '../yaml/typescript.schema.json';\n\nconst yamlApiSchema: JsonSchema = JsonSchema.fromLoadedObject(typescriptSchema);\n\ninterface IYamlReferences {\n references: IYamlReference[];\n typeNameToUid: Map<string, string>;\n uidTypeReferenceCounters: Map<string, number>;\n}\n\nconst enum FlattenMode {\n /** Include entries for nested namespaces and non-namespace children. */\n NestedNamespacesAndChildren,\n /** Include entries for nested namespaces only. */\n NestedNamespacesOnly,\n /** Include entries for non-namespace immediate children. */\n ImmediateChildren,\n /** Include entries for nested non-namespace children. */\n NestedChildren\n}\n\ninterface INameOptions {\n includeSignature?: boolean;\n includeNamespace?: boolean;\n}\n\n/**\n * Writes documentation in the Universal Reference YAML file format, as defined by typescript.schema.json.\n */\nexport class YamlDocumenter {\n protected readonly newDocfxNamespaces: boolean;\n private readonly _yamlFormat: string;\n private readonly _apiModel: ApiModel;\n private readonly _markdownEmitter: CustomMarkdownEmitter;\n\n private _apiItemsByCanonicalReference: Map<string, ApiItem>;\n private _yamlReferences: IYamlReferences | undefined;\n\n public constructor(apiModel: ApiModel, newDocfxNamespaces: boolean = false, yamlFormat: string = 'sdp') {\n this._apiModel = apiModel;\n this.newDocfxNamespaces = newDocfxNamespaces;\n this._yamlFormat = yamlFormat;\n this._markdownEmitter = new CustomMarkdownEmitter(this._apiModel);\n this._apiItemsByCanonicalReference = new Map<string, ApiItem>();\n\n this._initApiItems();\n }\n\n /** @virtual */\n public generateFiles(outputFolder: string): void {\n console.log();\n this._deleteOldOutputFiles(outputFolder);\n\n for (const apiPackage of this._apiModel.packages) {\n console.log(`Writing ${apiPackage.name} package`);\n this._visitApiItems(outputFolder, apiPackage, undefined);\n }\n\n if (this._yamlFormat === 'sdp') {\n convertUDPYamlToSDP(outputFolder);\n }\n\n this._writeTocFile(outputFolder, this._apiModel.packages);\n }\n\n /** @virtual */\n protected onGetTocRoot(): IYamlTocItem {\n return {\n name: 'SharePoint Framework reference',\n href: '~/overview/sharepoint.md',\n items: []\n };\n }\n\n /** @virtual */\n protected onCustomizeYamlItem(yamlItem: IYamlItem): void {\n // virtual\n // (overridden by child class)\n }\n\n private _visitApiItems(\n outputFolder: string,\n apiItem: ApiDocumentedItem,\n parentYamlFile: IYamlApiFile | undefined\n ): boolean {\n let savedYamlReferences: IYamlReferences | undefined;\n if (!this._shouldEmbed(apiItem.kind)) {\n savedYamlReferences = this._yamlReferences;\n this._yamlReferences = undefined;\n }\n\n const yamlItem: IYamlItem | undefined = this._generateYamlItem(apiItem);\n if (!yamlItem) {\n return false;\n }\n\n this.onCustomizeYamlItem(yamlItem);\n\n if (this._shouldEmbed(apiItem.kind)) {\n if (!parentYamlFile) {\n throw new InternalError('Missing file context');\n }\n parentYamlFile.items.push(yamlItem);\n } else {\n const newYamlFile: IYamlApiFile = {\n items: []\n };\n newYamlFile.items.push(yamlItem);\n\n const children: ApiItem[] = this._getLogicalChildren(apiItem);\n for (const child of children) {\n if (child instanceof ApiDocumentedItem) {\n if (this._visitApiItems(outputFolder, child, newYamlFile)) {\n if (!yamlItem.children) {\n yamlItem.children = [];\n }\n yamlItem.children.push(this._getUid(child));\n }\n }\n }\n\n if (this._yamlReferences && this._yamlReferences.references.length > 0) {\n newYamlFile.references = this._yamlReferences.references;\n }\n\n this._yamlReferences = savedYamlReferences;\n\n const yamlFilePath: string = this._getYamlFilePath(outputFolder, apiItem);\n\n if (apiItem.kind === ApiItemKind.Package) {\n console.log('Writing ' + yamlFilePath);\n }\n\n this._writeYamlFile(newYamlFile, yamlFilePath, 'UniversalReference', yamlApiSchema);\n\n if (parentYamlFile) {\n // References should be recorded in the parent YAML file with the local name of the embedded item.\n // This avoids unnecessary repetition when listing items inside of a namespace.\n this._recordYamlReference(\n this._ensureYamlReferences(),\n this._getUid(apiItem),\n this._getYamlItemName(apiItem, {\n includeNamespace: !this.newDocfxNamespaces,\n includeSignature: true\n }),\n this._getYamlItemName(apiItem, { includeNamespace: true, includeSignature: true })\n );\n }\n }\n\n return true;\n }\n\n protected _getLogicalChildren(apiItem: ApiItem): ApiItem[] {\n const children: ApiItem[] = [];\n if (apiItem.kind === ApiItemKind.Package) {\n // Skip over the entry point, since it's not part of the documentation hierarchy\n this._flattenNamespaces(\n apiItem.members[0].members,\n children,\n this.newDocfxNamespaces ? FlattenMode.NestedNamespacesAndChildren : FlattenMode.NestedChildren\n );\n } else {\n this._flattenNamespaces(\n apiItem.members,\n children,\n this.newDocfxNamespaces ? FlattenMode.ImmediateChildren : FlattenMode.NestedChildren\n );\n }\n return children;\n }\n\n // Flattens nested namespaces into top level entries so that the following:\n // namespace X { export namespace Y { export namespace Z { } }\n // Is represented as:\n // - X\n // - X.Y\n // - X.Y.Z\n private _flattenNamespaces(\n items: ReadonlyArray<ApiItem>,\n childrenOut: ApiItem[],\n mode: FlattenMode\n ): boolean {\n let hasNonNamespaceChildren: boolean = false;\n for (const item of items) {\n if (item.kind === ApiItemKind.Namespace) {\n switch (mode) {\n case FlattenMode.NestedChildren:\n // Include children of namespaces, but not the namespaces themselves. This matches existing legacy behavior.\n this._flattenNamespaces(item.members, childrenOut, FlattenMode.NestedChildren);\n break;\n case FlattenMode.NestedNamespacesOnly:\n case FlattenMode.NestedNamespacesAndChildren:\n // At any level, always include a nested namespace if it has non-namespace children, but do not include its\n // non-namespace children in the result.\n\n // Record the offset at which the namespace is added in case we need to remove it later.\n const index: number = childrenOut.length;\n childrenOut.push(item);\n\n if (!this._flattenNamespaces(item.members, childrenOut, FlattenMode.NestedNamespacesOnly)) {\n // This namespace had no non-namespace children, remove it.\n childrenOut.splice(index, 1);\n }\n break;\n }\n } else if (this._shouldInclude(item.kind)) {\n switch (mode) {\n case FlattenMode.NestedChildren:\n case FlattenMode.NestedNamespacesAndChildren:\n case FlattenMode.ImmediateChildren:\n // At the top level, include non-namespace children as well.\n childrenOut.push(item);\n break;\n }\n hasNonNamespaceChildren = true;\n }\n }\n return hasNonNamespaceChildren;\n }\n\n /**\n * Write the table of contents\n */\n private _writeTocFile(outputFolder: string, apiItems: ReadonlyArray<ApiItem>): void {\n const tocFile: IYamlTocFile = this.buildYamlTocFile(apiItems);\n\n const tocFilePath: string = path.join(outputFolder, 'toc.yml');\n console.log('Writing ' + tocFilePath);\n this._writeYamlFile(tocFile, tocFilePath, '', undefined);\n }\n\n /** @virtual */\n protected buildYamlTocFile(apiItems: ReadonlyArray<ApiItem>): IYamlTocFile {\n const tocFile: IYamlTocFile = {\n items: []\n };\n\n const rootItem: IYamlTocItem = this.onGetTocRoot();\n tocFile.items.push(rootItem);\n\n rootItem.items!.push(...this._buildTocItems(apiItems));\n return tocFile;\n }\n\n private _buildTocItems(apiItems: ReadonlyArray<ApiItem>): IYamlTocItem[] {\n const tocItems: IYamlTocItem[] = [];\n for (const apiItem of apiItems) {\n let tocItem: IYamlTocItem;\n if (apiItem.kind === ApiItemKind.Namespace && !this.newDocfxNamespaces) {\n tocItem = {\n name: this._getTocItemName(apiItem)\n };\n } else {\n if (this._shouldEmbed(apiItem.kind)) {\n // Don't generate table of contents items for embedded definitions\n continue;\n }\n\n tocItem = {\n name: this._getTocItemName(apiItem),\n uid: this._getUid(apiItem)\n };\n }\n\n tocItems.push(tocItem);\n\n const children: ApiItem[] = this._getLogicalChildren(apiItem);\n const childItems: IYamlTocItem[] = this._buildTocItems(children);\n if (childItems.length > 0) {\n tocItem.items = childItems;\n }\n }\n return tocItems;\n }\n\n /** @virtual */\n protected _getTocItemName(apiItem: ApiItem): string {\n let name: string;\n if (apiItem.kind === ApiItemKind.Package) {\n name = PackageName.getUnscopedName(apiItem.displayName);\n } else {\n name = this._getYamlItemName(apiItem);\n }\n\n if (name === apiItem.displayName && apiItem.getMergedSiblings().length > 1) {\n name += ` (${apiItem.kind})`;\n }\n\n return name;\n }\n\n protected _shouldEmbed(apiItemKind: ApiItemKind): boolean {\n switch (apiItemKind) {\n case ApiItemKind.Class:\n case ApiItemKind.Package:\n case ApiItemKind.Interface:\n case ApiItemKind.Enum:\n case ApiItemKind.TypeAlias:\n return false;\n case ApiItemKind.Namespace:\n return !this.newDocfxNamespaces;\n }\n return true;\n }\n\n protected _shouldInclude(apiItemKind: ApiItemKind): boolean {\n // Filter out known items that are not yet supported\n switch (apiItemKind) {\n case ApiItemKind.CallSignature:\n case ApiItemKind.ConstructSignature:\n case ApiItemKind.IndexSignature:\n return false;\n }\n return true;\n }\n\n private _generateYamlItem(apiItem: ApiDocumentedItem): IYamlItem | undefined {\n // Filter out known items that are not yet supported\n if (!this._shouldInclude(apiItem.kind)) {\n return undefined;\n }\n\n const uid: DeclarationReference = this._getUidObject(apiItem);\n const yamlItem: Partial<IYamlItem> = {\n uid: uid.toString()\n };\n\n if (apiItem.tsdocComment) {\n const tsdocComment: DocComment = apiItem.tsdocComment;\n if (tsdocComment.summarySection) {\n const summary: string = this._renderMarkdown(tsdocComment.summarySection, apiItem);\n if (summary) {\n yamlItem.summary = summary;\n }\n }\n\n if (tsdocComment.remarksBlock) {\n const remarks: string = this._renderMarkdown(tsdocComment.remarksBlock.content, apiItem);\n if (remarks) {\n yamlItem.remarks = remarks;\n }\n }\n\n if (tsdocComment) {\n // Write the @example blocks\n const exampleBlocks: DocBlock[] = tsdocComment.customBlocks.filter(\n (x) => x.blockTag.tagNameWithUpperCase === StandardTags.example.tagNameWithUpperCase\n );\n\n for (const exampleBlock of exampleBlocks) {\n const example: string = this._renderMarkdown(exampleBlock.content, apiItem);\n if (example) {\n yamlItem.example = [...(yamlItem.example || []), example];\n }\n }\n }\n\n if (tsdocComment.deprecatedBlock) {\n const deprecatedMessage: string = this._renderMarkdown(tsdocComment.deprecatedBlock.content, apiItem);\n if (deprecatedMessage.length > 0) {\n yamlItem.deprecated = { content: deprecatedMessage };\n }\n }\n }\n\n if (ApiReleaseTagMixin.isBaseClassOf(apiItem)) {\n if (apiItem.releaseTag === ReleaseTag.Beta) {\n yamlItem.isPreview = true;\n }\n }\n\n yamlItem.name = this._getYamlItemName(apiItem, {\n includeSignature: true,\n includeNamespace: !this.newDocfxNamespaces\n });\n yamlItem.fullName = this._getYamlItemName(apiItem, { includeSignature: true, includeNamespace: true });\n yamlItem.langs = ['typeScript'];\n\n // Add the namespace of the item if it is contained in one.\n // Do not add the namespace parent of a namespace as they are flattened in the documentation.\n if (\n apiItem.kind !== ApiItemKind.Namespace &&\n apiItem.parent &&\n apiItem.parent.kind === ApiItemKind.Namespace &&\n this.newDocfxNamespaces\n ) {\n yamlItem.namespace = apiItem.parent.canonicalReference.toString();\n }\n\n switch (apiItem.kind) {\n case ApiItemKind.Enum:\n yamlItem.type = 'enum';\n break;\n case ApiItemKind.EnumMember:\n yamlItem.type = 'field';\n const enumMember: ApiEnumMember = apiItem as ApiEnumMember;\n\n if (enumMember.initializerExcerpt && enumMember.initializerExcerpt.text.length > 0) {\n yamlItem.numericValue = enumMember.initializerExcerpt.text;\n }\n\n break;\n case ApiItemKind.Class:\n yamlItem.type = 'class';\n this._populateYamlClassOrInterface(uid, yamlItem, apiItem as ApiClass);\n break;\n case ApiItemKind.Interface:\n yamlItem.type = 'interface';\n this._populateYamlClassOrInterface(uid, yamlItem, apiItem as ApiInterface);\n break;\n case ApiItemKind.Method:\n case ApiItemKind.MethodSignature:\n yamlItem.type = 'method';\n this._populateYamlFunctionLike(uid, yamlItem, apiItem as ApiMethod | ApiMethodSignature);\n break;\n\n case ApiItemKind.Constructor:\n yamlItem.type = 'constructor';\n this._populateYamlFunctionLike(uid, yamlItem, apiItem as ApiConstructor);\n break;\n\n case ApiItemKind.Package:\n yamlItem.type = 'package';\n break;\n case ApiItemKind.Namespace:\n yamlItem.type = 'namespace';\n break;\n case ApiItemKind.Property:\n case ApiItemKind.PropertySignature:\n const apiProperty: ApiPropertyItem = apiItem as ApiPropertyItem;\n if (apiProperty.isEventProperty) {\n yamlItem.type = 'event';\n } else {\n yamlItem.type = 'property';\n }\n this._populateYamlProperty(uid, yamlItem, apiProperty);\n break;\n\n case ApiItemKind.Function:\n yamlItem.type = 'function';\n this._populateYamlFunctionLike(uid, yamlItem, apiItem as ApiFunction);\n break;\n\n case ApiItemKind.Variable:\n yamlItem.type = 'variable';\n this._populateYamlVariable(uid, yamlItem, apiItem as ApiVariable);\n break;\n\n case ApiItemKind.TypeAlias:\n yamlItem.type = 'typealias';\n this._populateYamlTypeAlias(uid, yamlItem, apiItem as ApiTypeAlias);\n break;\n\n default:\n throw new Error('Unimplemented item kind: ' + apiItem.kind);\n }\n\n if (apiItem.kind !== ApiItemKind.Package && !this._shouldEmbed(apiItem.kind)) {\n const associatedPackage: ApiPackage | undefined = apiItem.getAssociatedPackage();\n if (!associatedPackage) {\n throw new Error('Unable to determine associated package for ' + apiItem.displayName);\n }\n yamlItem.package = this._getUid(associatedPackage);\n }\n\n return yamlItem as IYamlItem;\n }\n\n private _populateYamlTypeParameters(\n contextUid: DeclarationReference,\n apiItem: ApiTypeParameterListMixin\n ): IYamlParameter[] {\n const typeParameters: IYamlParameter[] = [];\n for (const apiTypeParameter of apiItem.typeParameters) {\n const typeParameter: IYamlParameter = {\n id: apiTypeParameter.name\n };\n\n if (apiTypeParameter.tsdocTypeParamBlock) {\n typeParameter.description = this._renderMarkdown(\n apiTypeParameter.tsdocTypeParamBlock.content,\n apiItem\n );\n }\n\n if (!apiTypeParameter.constraintExcerpt.isEmpty) {\n typeParameter.type = [this._renderType(contextUid, apiTypeParameter.constraintExcerpt)];\n }\n\n typeParameters.push(typeParameter);\n }\n return typeParameters;\n }\n\n private _populateYamlClassOrInterface(\n uid: DeclarationReference,\n yamlItem: Partial<IYamlItem>,\n apiItem: ApiClass | ApiInterface\n ): void {\n if (apiItem instanceof ApiClass) {\n if (apiItem.extendsType) {\n yamlItem.extends = [this._renderType(uid, apiItem.extendsType.excerpt)];\n yamlItem.inheritance = this._renderInheritance(uid, [apiItem.extendsType]);\n }\n if (apiItem.implementsTypes.length > 0) {\n yamlItem.implements = [];\n for (const implementsType of apiItem.implementsTypes) {\n yamlItem.implements.push(this._renderType(uid, implementsType.excerpt));\n }\n }\n } else if (apiItem instanceof ApiInterface) {\n if (apiItem.extendsTypes.length > 0) {\n yamlItem.extends = [];\n for (const extendsType of apiItem.extendsTypes) {\n yamlItem.extends.push(this._renderType(uid, extendsType.excerpt));\n }\n yamlItem.inheritance = this._renderInheritance(uid, apiItem.extendsTypes);\n }\n\n const typeParameters: IYamlParameter[] = this._populateYamlTypeParameters(uid, apiItem);\n if (typeParameters.length) {\n yamlItem.syntax = { typeParameters };\n }\n }\n\n if (apiItem.tsdocComment) {\n if (apiItem.tsdocComment.modifierTagSet.isSealed()) {\n let sealedMessage: string;\n if (apiItem.kind === ApiItemKind.Class) {\n sealedMessage = 'This class is marked as `@sealed`. Subclasses should not extend it.';\n } else {\n sealedMessage = 'This interface is marked as `@sealed`. Other interfaces should not extend it.';\n }\n if (!yamlItem.remarks) {\n yamlItem.remarks = sealedMessage;\n } else {\n yamlItem.remarks = sealedMessage + '\\n\\n' + yamlItem.remarks;\n }\n }\n }\n }\n\n private _populateYamlFunctionLike(\n uid: DeclarationReference,\n yamlItem: Partial<IYamlItem>,\n apiItem: ApiMethod | ApiMethodSignature | ApiConstructor | ApiFunction\n ): void {\n const syntax: IYamlSyntax = {\n content: apiItem.getExcerptWithModifiers()\n };\n yamlItem.syntax = syntax;\n\n if (ApiReturnTypeMixin.isBaseClassOf(apiItem)) {\n const returnType: string = this._renderType(uid, apiItem.returnTypeExcerpt);\n\n let returnDescription: string = '';\n\n if (apiItem.tsdocComment && apiItem.tsdocComment.returnsBlock) {\n returnDescription = this._renderMarkdown(apiItem.tsdocComment.returnsBlock.content, apiItem);\n // temporary workaround for people who mistakenly add a hyphen, e.g. \"@returns - blah\"\n returnDescription = returnDescription.replace(/^\\s*-\\s+/, '');\n }\n\n if (returnType || returnDescription) {\n syntax.return = {\n type: [returnType],\n description: returnDescription\n };\n }\n }\n\n const parameters: IYamlParameter[] = [];\n for (const apiParameter of apiItem.parameters) {\n let parameterDescription: string = '';\n if (apiParameter.tsdocParamBlock) {\n parameterDescription = this._renderMarkdown(apiParameter.tsdocParamBlock.content, apiItem);\n }\n\n parameters.push({\n id: apiParameter.name,\n description: parameterDescription,\n type: [this._renderType(uid, apiParameter.parameterTypeExcerpt)],\n optional: apiParameter.isOptional\n } as IYamlParameter);\n }\n\n if (parameters.length) {\n syntax.parameters = parameters;\n }\n\n if (ApiTypeParameterListMixin.isBaseClassOf(apiItem)) {\n const typeParameters: IYamlParameter[] = this._populateYamlTypeParameters(uid, apiItem);\n if (typeParameters.length) {\n syntax.typeParameters = typeParameters;\n }\n }\n }\n\n private _populateYamlProperty(\n uid: DeclarationReference,\n yamlItem: Partial<IYamlItem>,\n apiItem: ApiPropertyItem\n ): void {\n const syntax: IYamlSyntax = {\n content: apiItem.getExcerptWithModifiers()\n };\n yamlItem.syntax = syntax;\n\n if (apiItem.propertyTypeExcerpt.text) {\n syntax.return = {\n type: [this._renderType(uid, apiItem.propertyTypeExcerpt)]\n };\n }\n }\n\n private _populateYamlVariable(\n uid: DeclarationReference,\n yamlItem: Partial<IYamlItem>,\n apiItem: ApiVariable\n ): void {\n const syntax: IYamlSyntax = {\n content: apiItem.getExcerptWithModifiers()\n };\n yamlItem.syntax = syntax;\n\n if (apiItem.variableTypeExcerpt.text) {\n syntax.return = {\n type: [this._renderType(uid, apiItem.variableTypeExcerpt)]\n };\n }\n }\n\n private _populateYamlTypeAlias(\n uid: DeclarationReference,\n yamlItem: Partial<IYamlItem>,\n apiItem: ApiTypeAlias\n ): void {\n const syntax: IYamlSyntax = {\n content: apiItem.getExcerptWithModifiers()\n };\n yamlItem.syntax = syntax;\n\n const typeParameters: IYamlParameter[] = this._populateYamlTypeParameters(uid, apiItem);\n if (typeParameters.length) {\n syntax.typeParameters = typeParameters;\n }\n\n if (apiItem.typeExcerpt.text) {\n syntax.return = {\n type: [this._renderType(uid, apiItem.typeExcerpt)]\n };\n }\n }\n\n private _renderMarkdown(docSection: DocSection, contextApiItem: ApiItem): string {\n const stringBuilder: StringBuilder = new StringBuilder();\n\n this._markdownEmitter.emit(stringBuilder, docSection, {\n contextApiItem,\n onGetFilenameForApiItem: (apiItem: ApiItem) => {\n // NOTE: GitHub's markdown renderer does not resolve relative hyperlinks correctly\n // unless they start with \"./\" or \"../\".\n\n // To ensure the xref is properly escaped, we first encode the entire xref\n // to handle escaping of reserved characters. Then we must replace '#' and '?'\n // characters so that they are not interpreted as a querystring or hash.\n // We must also backslash-escape unbalanced `(` and `)` characters as the\n // markdown spec insists that they are only valid when balanced. To reduce\n // the overhead we only support balanced parenthesis with a depth of 1.\n return encodeURI(`xref:${this._getUid(apiItem)}`)\n .replace(/[#?]/g, (s) => encodeURIComponent(s))\n .replace(/(\\([^(]*\\))|[()]/g, (s, balanced) => balanced || '\\\\' + s);\n }\n });\n\n return stringBuilder.toString().trim();\n }\n\n private _writeYamlFile(\n dataObject: {},\n filePath: string,\n yamlMimeType: string,\n schema: JsonSchema | undefined\n ): void {\n JsonFile.validateNoUndefinedMembers(dataObject);\n\n let stringified: string = yaml.safeDump(dataObject, {\n lineWidth: 120\n });\n\n if (yamlMimeType) {\n stringified = `### YamlMime:${yamlMimeType}\\n` + stringified;\n }\n\n FileSystem.writeFile(filePath, stringified, {\n convertLineEndings: NewlineKind.CrLf,\n ensureFolderExists: true\n });\n\n if (schema) {\n schema.validateObject(dataObject, filePath);\n }\n }\n\n /**\n * Calculate the DocFX \"uid\" for the ApiItem\n * Example: `node-core-library!JsonFile#load`\n */\n protected _getUid(apiItem: ApiItem): string {\n return this._getUidObject(apiItem).toString();\n }\n\n protected _getUidObject(apiItem: ApiItem): DeclarationReference {\n return apiItem.canonicalReference;\n }\n\n /**\n * Initialize the _apiItemsByCanonicalReference data structure.\n */\n private _initApiItems(): void {\n this._initApiItemsRecursive(this._apiModel);\n }\n\n /**\n * Helper for _initApiItems()\n */\n private _initApiItemsRecursive(apiItem: ApiItem): void {\n if (apiItem.canonicalReference && !apiItem.canonicalReference.isEmpty) {\n this._apiItemsByCanonicalReference.set(apiItem.canonicalReference.toString(), apiItem);\n }\n\n // Recurse container members\n if (ApiItemContainerMixin.isBaseClassOf(apiItem)) {\n for (const apiMember of apiItem.members) {\n this._initApiItemsRecursive(apiMember);\n }\n }\n }\n\n private _ensureYamlReferences(): IYamlReferences {\n if (!this._yamlReferences) {\n this._yamlReferences = {\n references: [],\n typeNameToUid: new Map(),\n uidTypeReferenceCounters: new Map()\n };\n }\n return this._yamlReferences;\n }\n\n private _renderInheritance(\n contextUid: DeclarationReference,\n heritageTypes: ReadonlyArray<HeritageType>\n ): IYamlInheritanceTree[] {\n const result: IYamlInheritanceTree[] = [];\n for (const heritageType of heritageTypes) {\n const type: string = this._renderType(contextUid, heritageType.excerpt);\n const yamlInheritance: IYamlInheritanceTree = { type };\n const apiItem: ApiItem | undefined = this._apiItemsByCanonicalReference.get(type);\n if (apiItem) {\n if (apiItem instanceof ApiClass) {\n if (apiItem.extendsType) {\n yamlInheritance.inheritance = this._renderInheritance(this._getUidObject(apiItem), [\n apiItem.extendsType\n ]);\n }\n } else if (apiItem instanceof ApiInterface) {\n if (apiItem.extendsTypes.length > 0) {\n yamlInheritance.inheritance = this._renderInheritance(\n this._getUidObject(apiItem),\n apiItem.extendsTypes\n );\n }\n }\n }\n result.push(yamlInheritance);\n }\n return result;\n }\n\n private _renderType(contextUid: DeclarationReference, typeExcerpt: Excerpt): string {\n const excerptTokens: ExcerptToken[] = [...typeExcerpt.spannedTokens]; // copy the read-only array\n\n if (excerptTokens.length === 0) {\n return '';\n }\n\n // Remove the last token if it consists only of whitespace\n const lastToken: ExcerptToken = excerptTokens[excerptTokens.length - 1];\n if (lastToken.kind === ExcerptTokenKind.Content && !lastToken.text.trim()) {\n excerptTokens.pop();\n if (excerptTokens.length === 0) {\n return '';\n }\n }\n\n const typeName: string = typeExcerpt.text.trim();\n\n // If there are no references to be used for a complex type, return the type name.\n if (!excerptTokens.some((tok) => tok.kind === ExcerptTokenKind.Reference && !!tok.canonicalReference)) {\n return typeName;\n }\n\n const yamlReferences: IYamlReferences = this._ensureYamlReferences();\n const existingUid: string | undefined = yamlReferences.typeNameToUid.get(typeName);\n\n // If this type has already been referenced for the current file, return its uid.\n if (existingUid) {\n return existingUid;\n }\n\n // If the excerpt consists of a single reference token, record the reference.\n if (\n excerptTokens.length === 1 &&\n excerptTokens[0].kind === ExcerptTokenKind.Reference &&\n excerptTokens[0].canonicalReference\n ) {\n const excerptRef: string = excerptTokens[0].canonicalReference.toString();\n const apiItem: ApiItem | undefined = this._apiItemsByCanonicalReference.get(excerptRef);\n return this._recordYamlReference(\n yamlReferences,\n excerptTokens[0].canonicalReference.toString(),\n apiItem ? this._getYamlItemName(apiItem) : typeName,\n apiItem ? this._getYamlItemName(apiItem, { includeNamespace: true }) : typeName\n );\n }\n\n // Otherwise, the type is complex and consists of one or more reference tokens. Record a reference\n // and return its uid.\n const baseUid: string = contextUid.withMeaning(undefined).withOverloadIndex(undefined).toString();\n\n // Keep track of the count for the base uid (without meaning or overload index) to ensure\n // that each complex type reference is unique.\n const counter: number = yamlReferences.uidTypeReferenceCounters.get(baseUid) || 0;\n yamlReferences.uidTypeReferenceCounters.set(baseUid, counter + 1);\n\n const uid: string = contextUid\n .addNavigationStep(Navigation.Locals, `${counter}`)\n .withMeaning(Meaning.ComplexType)\n .withOverloadIndex(undefined)\n .toString();\n\n return this._recordYamlReference(yamlReferences, uid, typeName, typeName, excerptTokens);\n }\n\n private _recordYamlReference(\n yamlReferences: IYamlReferences,\n uid: string,\n name: string,\n fullName: string,\n excerptTokens?: ExcerptToken[]\n ): string {\n if (yamlReferences.references.some((ref) => ref.uid === uid)) {\n return uid;\n }\n\n // Fill in the reference spec from the excerpt.\n const specs: IYamlReferenceSpec[] = [];\n if (excerptTokens) {\n for (const token of excerptTokens) {\n if (token.kind === ExcerptTokenKind.Reference) {\n const spec: IYamlReferenceSpec = {};\n const specUid: string | undefined = token.canonicalReference && token.canonicalReference.toString();\n const apiItem: ApiItem | undefined = specUid\n ? this._apiItemsByCanonicalReference.get(specUid)\n : undefined;\n if (specUid) {\n spec.uid = specUid;\n }\n spec.name = token.text;\n spec.fullName = apiItem\n ? apiItem.getScopedNameWithinPackage()\n : token.canonicalReference\n ? token.canonicalReference\n .withSource(undefined)\n .withMeaning(undefined)\n .withOverloadIndex(undefined)\n .toString()\n : token.text;\n specs.push(spec);\n } else {\n specs.push({\n name: token.text,\n fullName: token.text\n });\n }\n }\n }\n\n const yamlReference: IYamlReference = { uid };\n if (specs.length > 0) {\n yamlReference.name = specs\n .map((s) => s.name)\n .join('')\n .trim();\n yamlReference.fullName = specs\n .map((s) => s.fullName || s.name)\n .join('')\n .trim();\n yamlReference['spec.typeScript'] = specs;\n } else {\n if (name !== uid) {\n yamlReference.name = name;\n }\n if (fullName !== uid && fullName !== name) {\n yamlReference.fullName = fullName;\n }\n }\n\n yamlReferences.references.push(yamlReference);\n return uid;\n }\n\n private _getYamlItemName(apiItem: ApiItem, options: INameOptions = {}): string {\n const { includeSignature, includeNamespace } = options;\n const baseName: string = includeSignature ? Utilities.getConciseSignature(apiItem) : apiItem.displayName;\n if (\n (includeNamespace || apiItem.kind === ApiItemKind.Namespace) &&\n apiItem.parent &&\n apiItem.parent.kind === ApiItemKind.Namespace\n ) {\n // If the immediate parent is a namespace, then add the namespaces to the name. For example:\n //\n // // Name: \"N1\"\n // export namespace N1 {\n // // Name: \"N1.N2\"\n // export namespace N2 {\n // // Name: \"N1.N2.f(x,y)\"\n // export function f(x: string, y: string): string {\n // return x + y;\n // }\n //\n //\n // // Name: \"N1.N2.C\"\n // export class C {\n // // Name: \"member(x,y)\" <===========\n // public member(x: string, y: string): string {\n // return x + y;\n // }\n // }\n // }\n // }\n //\n // In the above example, \"member(x, y)\" does not appear as \"N1.N2.C.member(x,y)\" because YamlDocumenter\n // embeds this entry in the web page for \"N1.N2.C\", so the container is obvious. Whereas \"N1.N2.f(x,y)\"\n // needs to be qualified because the DocFX template doesn't make pages for namespaces. Instead, they get\n // flattened into the package's page.\n const nameParts: string[] = [baseName];\n\n for (let current: ApiItem | undefined = apiItem.parent; current; current = current.parent) {\n if (current.kind !== ApiItemKind.Namespace) {\n break;\n }\n\n nameParts.unshift(current.displayName);\n }\n\n return nameParts.join('.');\n } else {\n return baseName;\n }\n }\n\n private _getYamlFilePath(outputFolder: string, apiItem: ApiItem): string {\n let result: string = '';\n\n for (const current of apiItem.getHierarchy()) {\n switch (current.kind) {\n case ApiItemKind.Model:\n case ApiItemKind.EntryPoint:\n break;\n case ApiItemKind.Package:\n result += Utilities.getSafeFilenameForName(PackageName.getUnscopedName(current.displayName));\n break;\n default:\n if (current.parent && current.parent.kind === ApiItemKind.EntryPoint) {\n result += '/';\n } else {\n result += '.';\n }\n result += Utilities.getSafeFilenameForName(current.displayName);\n break;\n }\n }\n\n let disambiguator: string = '';\n if (apiItem.getMergedSiblings().length > 1) {\n disambiguator = `-${apiItem.kind.toLowerCase()}`;\n }\n\n return path.join(outputFolder, result + disambiguator + '.yml');\n }\n\n private _deleteOldOutputFiles(outputFolder: string): void {\n console.log('Deleting old output from ' + outputFolder);\n FileSystem.ensureEmptyFolder(outputFolder);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"YamlDocumenter.js","sourceRoot":"","sources":["../../src/documenters/YamlDocumenter.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';\n\nimport yaml = require('js-yaml');\nimport {\n JsonFile,\n JsonSchema,\n PackageName,\n FileSystem,\n NewlineKind,\n InternalError\n} from '@rushstack/node-core-library';\nimport {\n StringBuilder,\n type DocSection,\n type DocComment,\n type DocBlock,\n StandardTags\n} from '@microsoft/tsdoc';\nimport {\n type ApiModel,\n type ApiItem,\n ApiItemKind,\n ApiDocumentedItem,\n ApiReleaseTagMixin,\n ReleaseTag,\n type ApiPropertyItem,\n ApiItemContainerMixin,\n type ApiPackage,\n type ApiEnumMember,\n ApiClass,\n ApiInterface,\n type ApiMethod,\n type ApiMethodSignature,\n type ApiConstructor,\n type ApiFunction,\n ApiReturnTypeMixin,\n ApiTypeParameterListMixin,\n type Excerpt,\n type ExcerptToken,\n ExcerptTokenKind,\n type HeritageType,\n type ApiVariable,\n type ApiTypeAlias\n} from '@microsoft/api-extractor-model';\nimport {\n type DeclarationReference,\n Navigation,\n Meaning\n} from '@microsoft/tsdoc/lib-commonjs/beta/DeclarationReference';\nimport type {\n IYamlApiFile,\n IYamlItem,\n IYamlSyntax,\n IYamlParameter,\n IYamlReference,\n IYamlReferenceSpec,\n IYamlInheritanceTree\n} from '../yaml/IYamlApiFile';\nimport type { IYamlTocFile, IYamlTocItem } from '../yaml/IYamlTocFile';\nimport { Utilities } from '../utils/Utilities';\nimport { CustomMarkdownEmitter } from '../markdown/CustomMarkdownEmitter';\nimport { convertUDPYamlToSDP } from '../utils/ToSdpConvertHelper';\nimport typescriptSchema from '../yaml/typescript.schema.json';\n\nconst yamlApiSchema: JsonSchema = JsonSchema.fromLoadedObject(typescriptSchema);\n\ninterface IYamlReferences {\n references: IYamlReference[];\n typeNameToUid: Map<string, string>;\n uidTypeReferenceCounters: Map<string, number>;\n}\n\nconst enum FlattenMode {\n /** Include entries for nested namespaces and non-namespace children. */\n NestedNamespacesAndChildren,\n /** Include entries for nested namespaces only. */\n NestedNamespacesOnly,\n /** Include entries for non-namespace immediate children. */\n ImmediateChildren,\n /** Include entries for nested non-namespace children. */\n NestedChildren\n}\n\ninterface INameOptions {\n includeSignature?: boolean;\n includeNamespace?: boolean;\n}\n\n/**\n * Writes documentation in the Universal Reference YAML file format, as defined by typescript.schema.json.\n */\nexport class YamlDocumenter {\n protected readonly newDocfxNamespaces: boolean;\n private readonly _yamlFormat: string;\n private readonly _apiModel: ApiModel;\n private readonly _markdownEmitter: CustomMarkdownEmitter;\n\n private _apiItemsByCanonicalReference: Map<string, ApiItem>;\n private _yamlReferences: IYamlReferences | undefined;\n\n public constructor(apiModel: ApiModel, newDocfxNamespaces: boolean = false, yamlFormat: string = 'sdp') {\n this._apiModel = apiModel;\n this.newDocfxNamespaces = newDocfxNamespaces;\n this._yamlFormat = yamlFormat;\n this._markdownEmitter = new CustomMarkdownEmitter(this._apiModel);\n this._apiItemsByCanonicalReference = new Map<string, ApiItem>();\n\n this._initApiItems();\n }\n\n /** @virtual */\n public generateFiles(outputFolder: string): void {\n console.log();\n this._deleteOldOutputFiles(outputFolder);\n\n for (const apiPackage of this._apiModel.packages) {\n console.log(`Writing ${apiPackage.name} package`);\n this._visitApiItems(outputFolder, apiPackage, undefined);\n }\n\n if (this._yamlFormat === 'sdp') {\n convertUDPYamlToSDP(outputFolder);\n }\n\n this._writeTocFile(outputFolder, this._apiModel.packages);\n }\n\n /** @virtual */\n protected onGetTocRoot(): IYamlTocItem {\n return {\n name: 'SharePoint Framework reference',\n href: '~/overview/sharepoint.md',\n items: []\n };\n }\n\n /** @virtual */\n protected onCustomizeYamlItem(yamlItem: IYamlItem): void {\n // virtual\n // (overridden by child class)\n }\n\n private _visitApiItems(\n outputFolder: string,\n apiItem: ApiDocumentedItem,\n parentYamlFile: IYamlApiFile | undefined\n ): boolean {\n let savedYamlReferences: IYamlReferences | undefined;\n if (!this._shouldEmbed(apiItem.kind)) {\n savedYamlReferences = this._yamlReferences;\n this._yamlReferences = undefined;\n }\n\n const yamlItem: IYamlItem | undefined = this._generateYamlItem(apiItem);\n if (!yamlItem) {\n return false;\n }\n\n this.onCustomizeYamlItem(yamlItem);\n\n if (this._shouldEmbed(apiItem.kind)) {\n if (!parentYamlFile) {\n throw new InternalError('Missing file context');\n }\n parentYamlFile.items.push(yamlItem);\n } else {\n const newYamlFile: IYamlApiFile = {\n items: []\n };\n newYamlFile.items.push(yamlItem);\n\n const children: ApiItem[] = this._getLogicalChildren(apiItem);\n for (const child of children) {\n if (child instanceof ApiDocumentedItem) {\n if (this._visitApiItems(outputFolder, child, newYamlFile)) {\n if (!yamlItem.children) {\n yamlItem.children = [];\n }\n yamlItem.children.push(this._getUid(child));\n }\n }\n }\n\n if (this._yamlReferences && this._yamlReferences.references.length > 0) {\n newYamlFile.references = this._yamlReferences.references;\n }\n\n this._yamlReferences = savedYamlReferences;\n\n const yamlFilePath: string = this._getYamlFilePath(outputFolder, apiItem);\n\n if (apiItem.kind === ApiItemKind.Package) {\n console.log('Writing ' + yamlFilePath);\n }\n\n this._writeYamlFile(newYamlFile, yamlFilePath, 'UniversalReference', yamlApiSchema);\n\n if (parentYamlFile) {\n // References should be recorded in the parent YAML file with the local name of the embedded item.\n // This avoids unnecessary repetition when listing items inside of a namespace.\n this._recordYamlReference(\n this._ensureYamlReferences(),\n this._getUid(apiItem),\n this._getYamlItemName(apiItem, {\n includeNamespace: !this.newDocfxNamespaces,\n includeSignature: true\n }),\n this._getYamlItemName(apiItem, { includeNamespace: true, includeSignature: true })\n );\n }\n }\n\n return true;\n }\n\n protected _getLogicalChildren(apiItem: ApiItem): ApiItem[] {\n const children: ApiItem[] = [];\n if (apiItem.kind === ApiItemKind.Package) {\n // Skip over the entry point, since it's not part of the documentation hierarchy\n this._flattenNamespaces(\n apiItem.members[0].members,\n children,\n this.newDocfxNamespaces ? FlattenMode.NestedNamespacesAndChildren : FlattenMode.NestedChildren\n );\n } else {\n this._flattenNamespaces(\n apiItem.members,\n children,\n this.newDocfxNamespaces ? FlattenMode.ImmediateChildren : FlattenMode.NestedChildren\n );\n }\n return children;\n }\n\n // Flattens nested namespaces into top level entries so that the following:\n // namespace X { export namespace Y { export namespace Z { } }\n // Is represented as:\n // - X\n // - X.Y\n // - X.Y.Z\n private _flattenNamespaces(\n items: ReadonlyArray<ApiItem>,\n childrenOut: ApiItem[],\n mode: FlattenMode\n ): boolean {\n let hasNonNamespaceChildren: boolean = false;\n for (const item of items) {\n if (item.kind === ApiItemKind.Namespace) {\n switch (mode) {\n case FlattenMode.NestedChildren:\n // Include children of namespaces, but not the namespaces themselves. This matches existing legacy behavior.\n this._flattenNamespaces(item.members, childrenOut, FlattenMode.NestedChildren);\n break;\n case FlattenMode.NestedNamespacesOnly:\n case FlattenMode.NestedNamespacesAndChildren:\n // At any level, always include a nested namespace if it has non-namespace children, but do not include its\n // non-namespace children in the result.\n\n // Record the offset at which the namespace is added in case we need to remove it later.\n const index: number = childrenOut.length;\n childrenOut.push(item);\n\n if (!this._flattenNamespaces(item.members, childrenOut, FlattenMode.NestedNamespacesOnly)) {\n // This namespace had no non-namespace children, remove it.\n childrenOut.splice(index, 1);\n }\n break;\n }\n } else if (this._shouldInclude(item.kind)) {\n switch (mode) {\n case FlattenMode.NestedChildren:\n case FlattenMode.NestedNamespacesAndChildren:\n case FlattenMode.ImmediateChildren:\n // At the top level, include non-namespace children as well.\n childrenOut.push(item);\n break;\n }\n hasNonNamespaceChildren = true;\n }\n }\n return hasNonNamespaceChildren;\n }\n\n /**\n * Write the table of contents\n */\n private _writeTocFile(outputFolder: string, apiItems: ReadonlyArray<ApiItem>): void {\n const tocFile: IYamlTocFile = this.buildYamlTocFile(apiItems);\n\n const tocFilePath: string = path.join(outputFolder, 'toc.yml');\n console.log('Writing ' + tocFilePath);\n this._writeYamlFile(tocFile, tocFilePath, '', undefined);\n }\n\n /** @virtual */\n protected buildYamlTocFile(apiItems: ReadonlyArray<ApiItem>): IYamlTocFile {\n const tocFile: IYamlTocFile = {\n items: []\n };\n\n const rootItem: IYamlTocItem = this.onGetTocRoot();\n tocFile.items.push(rootItem);\n\n rootItem.items!.push(...this._buildTocItems(apiItems));\n return tocFile;\n }\n\n private _buildTocItems(apiItems: ReadonlyArray<ApiItem>): IYamlTocItem[] {\n const tocItems: IYamlTocItem[] = [];\n for (const apiItem of apiItems) {\n let tocItem: IYamlTocItem;\n if (apiItem.kind === ApiItemKind.Namespace && !this.newDocfxNamespaces) {\n tocItem = {\n name: this._getTocItemName(apiItem)\n };\n } else {\n if (this._shouldEmbed(apiItem.kind)) {\n // Don't generate table of contents items for embedded definitions\n continue;\n }\n\n tocItem = {\n name: this._getTocItemName(apiItem),\n uid: this._getUid(apiItem)\n };\n }\n\n tocItems.push(tocItem);\n\n const children: ApiItem[] = this._getLogicalChildren(apiItem);\n const childItems: IYamlTocItem[] = this._buildTocItems(children);\n if (childItems.length > 0) {\n tocItem.items = childItems;\n }\n }\n return tocItems;\n }\n\n /** @virtual */\n protected _getTocItemName(apiItem: ApiItem): string {\n let name: string;\n if (apiItem.kind === ApiItemKind.Package) {\n name = PackageName.getUnscopedName(apiItem.displayName);\n } else {\n name = this._getYamlItemName(apiItem);\n }\n\n if (name === apiItem.displayName && apiItem.getMergedSiblings().length > 1) {\n name += ` (${apiItem.kind})`;\n }\n\n return name;\n }\n\n protected _shouldEmbed(apiItemKind: ApiItemKind): boolean {\n switch (apiItemKind) {\n case ApiItemKind.Class:\n case ApiItemKind.Package:\n case ApiItemKind.Interface:\n case ApiItemKind.Enum:\n case ApiItemKind.TypeAlias:\n return false;\n case ApiItemKind.Namespace:\n return !this.newDocfxNamespaces;\n }\n return true;\n }\n\n protected _shouldInclude(apiItemKind: ApiItemKind): boolean {\n // Filter out known items that are not yet supported\n switch (apiItemKind) {\n case ApiItemKind.CallSignature:\n case ApiItemKind.ConstructSignature:\n case ApiItemKind.IndexSignature:\n return false;\n }\n return true;\n }\n\n private _generateYamlItem(apiItem: ApiDocumentedItem): IYamlItem | undefined {\n // Filter out known items that are not yet supported\n if (!this._shouldInclude(apiItem.kind)) {\n return undefined;\n }\n\n const uid: DeclarationReference = this._getUidObject(apiItem);\n const yamlItem: Partial<IYamlItem> = {\n uid: uid.toString()\n };\n\n if (apiItem.tsdocComment) {\n const tsdocComment: DocComment = apiItem.tsdocComment;\n if (tsdocComment.summarySection) {\n const summary: string = this._renderMarkdown(tsdocComment.summarySection, apiItem);\n if (summary) {\n yamlItem.summary = summary;\n }\n }\n\n if (tsdocComment.remarksBlock) {\n const remarks: string = this._renderMarkdown(tsdocComment.remarksBlock.content, apiItem);\n if (remarks) {\n yamlItem.remarks = remarks;\n }\n }\n\n if (tsdocComment) {\n // Write the @example blocks\n const exampleBlocks: DocBlock[] = tsdocComment.customBlocks.filter(\n (x) => x.blockTag.tagNameWithUpperCase === StandardTags.example.tagNameWithUpperCase\n );\n\n for (const exampleBlock of exampleBlocks) {\n const example: string = this._renderMarkdown(exampleBlock.content, apiItem);\n if (example) {\n yamlItem.example = [...(yamlItem.example || []), example];\n }\n }\n }\n\n if (tsdocComment.deprecatedBlock) {\n const deprecatedMessage: string = this._renderMarkdown(tsdocComment.deprecatedBlock.content, apiItem);\n if (deprecatedMessage.length > 0) {\n yamlItem.deprecated = { content: deprecatedMessage };\n }\n }\n }\n\n if (ApiReleaseTagMixin.isBaseClassOf(apiItem)) {\n if (apiItem.releaseTag === ReleaseTag.Alpha || apiItem.releaseTag === ReleaseTag.Beta) {\n yamlItem.isPreview = true;\n }\n }\n\n yamlItem.name = this._getYamlItemName(apiItem, {\n includeSignature: true,\n includeNamespace: !this.newDocfxNamespaces\n });\n yamlItem.fullName = this._getYamlItemName(apiItem, { includeSignature: true, includeNamespace: true });\n yamlItem.langs = ['typeScript'];\n\n // Add the namespace of the item if it is contained in one.\n // Do not add the namespace parent of a namespace as they are flattened in the documentation.\n if (\n apiItem.kind !== ApiItemKind.Namespace &&\n apiItem.parent &&\n apiItem.parent.kind === ApiItemKind.Namespace &&\n this.newDocfxNamespaces\n ) {\n yamlItem.namespace = apiItem.parent.canonicalReference.toString();\n }\n\n switch (apiItem.kind) {\n case ApiItemKind.Enum:\n yamlItem.type = 'enum';\n break;\n case ApiItemKind.EnumMember:\n yamlItem.type = 'field';\n const enumMember: ApiEnumMember = apiItem as ApiEnumMember;\n\n if (enumMember.initializerExcerpt && enumMember.initializerExcerpt.text.length > 0) {\n yamlItem.numericValue = enumMember.initializerExcerpt.text;\n }\n\n break;\n case ApiItemKind.Class:\n yamlItem.type = 'class';\n this._populateYamlClassOrInterface(uid, yamlItem, apiItem as ApiClass);\n break;\n case ApiItemKind.Interface:\n yamlItem.type = 'interface';\n this._populateYamlClassOrInterface(uid, yamlItem, apiItem as ApiInterface);\n break;\n case ApiItemKind.Method:\n case ApiItemKind.MethodSignature:\n yamlItem.type = 'method';\n this._populateYamlFunctionLike(uid, yamlItem, apiItem as ApiMethod | ApiMethodSignature);\n break;\n\n case ApiItemKind.Constructor:\n yamlItem.type = 'constructor';\n this._populateYamlFunctionLike(uid, yamlItem, apiItem as ApiConstructor);\n break;\n\n case ApiItemKind.Package:\n yamlItem.type = 'package';\n break;\n case ApiItemKind.Namespace:\n yamlItem.type = 'namespace';\n break;\n case ApiItemKind.Property:\n case ApiItemKind.PropertySignature:\n const apiProperty: ApiPropertyItem = apiItem as ApiPropertyItem;\n if (apiProperty.isEventProperty) {\n yamlItem.type = 'event';\n } else {\n yamlItem.type = 'property';\n }\n this._populateYamlProperty(uid, yamlItem, apiProperty);\n break;\n\n case ApiItemKind.Function:\n yamlItem.type = 'function';\n this._populateYamlFunctionLike(uid, yamlItem, apiItem as ApiFunction);\n break;\n\n case ApiItemKind.Variable:\n yamlItem.type = 'variable';\n this._populateYamlVariable(uid, yamlItem, apiItem as ApiVariable);\n break;\n\n case ApiItemKind.TypeAlias:\n yamlItem.type = 'typealias';\n this._populateYamlTypeAlias(uid, yamlItem, apiItem as ApiTypeAlias);\n break;\n\n default:\n throw new Error('Unimplemented item kind: ' + apiItem.kind);\n }\n\n if (apiItem.kind !== ApiItemKind.Package && !this._shouldEmbed(apiItem.kind)) {\n const associatedPackage: ApiPackage | undefined = apiItem.getAssociatedPackage();\n if (!associatedPackage) {\n throw new Error('Unable to determine associated package for ' + apiItem.displayName);\n }\n yamlItem.package = this._getUid(associatedPackage);\n }\n\n return yamlItem as IYamlItem;\n }\n\n private _populateYamlTypeParameters(\n contextUid: DeclarationReference,\n apiItem: ApiTypeParameterListMixin\n ): IYamlParameter[] {\n const typeParameters: IYamlParameter[] = [];\n for (const apiTypeParameter of apiItem.typeParameters) {\n const typeParameter: IYamlParameter = {\n id: apiTypeParameter.name\n };\n\n if (apiTypeParameter.tsdocTypeParamBlock) {\n typeParameter.description = this._renderMarkdown(\n apiTypeParameter.tsdocTypeParamBlock.content,\n apiItem\n );\n }\n\n if (!apiTypeParameter.constraintExcerpt.isEmpty) {\n typeParameter.type = [this._renderType(contextUid, apiTypeParameter.constraintExcerpt)];\n }\n\n typeParameters.push(typeParameter);\n }\n return typeParameters;\n }\n\n private _populateYamlClassOrInterface(\n uid: DeclarationReference,\n yamlItem: Partial<IYamlItem>,\n apiItem: ApiClass | ApiInterface\n ): void {\n if (apiItem instanceof ApiClass) {\n if (apiItem.extendsType) {\n yamlItem.extends = [this._renderType(uid, apiItem.extendsType.excerpt)];\n yamlItem.inheritance = this._renderInheritance(uid, [apiItem.extendsType]);\n }\n if (apiItem.implementsTypes.length > 0) {\n yamlItem.implements = [];\n for (const implementsType of apiItem.implementsTypes) {\n yamlItem.implements.push(this._renderType(uid, implementsType.excerpt));\n }\n }\n } else if (apiItem instanceof ApiInterface) {\n if (apiItem.extendsTypes.length > 0) {\n yamlItem.extends = [];\n for (const extendsType of apiItem.extendsTypes) {\n yamlItem.extends.push(this._renderType(uid, extendsType.excerpt));\n }\n yamlItem.inheritance = this._renderInheritance(uid, apiItem.extendsTypes);\n }\n\n const typeParameters: IYamlParameter[] = this._populateYamlTypeParameters(uid, apiItem);\n if (typeParameters.length) {\n yamlItem.syntax = { typeParameters };\n }\n }\n\n if (apiItem.tsdocComment) {\n if (apiItem.tsdocComment.modifierTagSet.isSealed()) {\n let sealedMessage: string;\n if (apiItem.kind === ApiItemKind.Class) {\n sealedMessage = 'This class is marked as `@sealed`. Subclasses should not extend it.';\n } else {\n sealedMessage = 'This interface is marked as `@sealed`. Other interfaces should not extend it.';\n }\n if (!yamlItem.remarks) {\n yamlItem.remarks = sealedMessage;\n } else {\n yamlItem.remarks = sealedMessage + '\\n\\n' + yamlItem.remarks;\n }\n }\n }\n }\n\n private _populateYamlFunctionLike(\n uid: DeclarationReference,\n yamlItem: Partial<IYamlItem>,\n apiItem: ApiMethod | ApiMethodSignature | ApiConstructor | ApiFunction\n ): void {\n const syntax: IYamlSyntax = {\n content: apiItem.getExcerptWithModifiers()\n };\n yamlItem.syntax = syntax;\n\n if (ApiReturnTypeMixin.isBaseClassOf(apiItem)) {\n const returnType: string = this._renderType(uid, apiItem.returnTypeExcerpt);\n\n let returnDescription: string = '';\n\n if (apiItem.tsdocComment && apiItem.tsdocComment.returnsBlock) {\n returnDescription = this._renderMarkdown(apiItem.tsdocComment.returnsBlock.content, apiItem);\n // temporary workaround for people who mistakenly add a hyphen, e.g. \"@returns - blah\"\n returnDescription = returnDescription.replace(/^\\s*-\\s+/, '');\n }\n\n if (returnType || returnDescription) {\n syntax.return = {\n type: [returnType],\n description: returnDescription\n };\n }\n }\n\n const parameters: IYamlParameter[] = [];\n for (const apiParameter of apiItem.parameters) {\n let parameterDescription: string = '';\n if (apiParameter.tsdocParamBlock) {\n parameterDescription = this._renderMarkdown(apiParameter.tsdocParamBlock.content, apiItem);\n }\n\n parameters.push({\n id: apiParameter.name,\n description: parameterDescription,\n type: [this._renderType(uid, apiParameter.parameterTypeExcerpt)],\n optional: apiParameter.isOptional\n } as IYamlParameter);\n }\n\n if (parameters.length) {\n syntax.parameters = parameters;\n }\n\n if (ApiTypeParameterListMixin.isBaseClassOf(apiItem)) {\n const typeParameters: IYamlParameter[] = this._populateYamlTypeParameters(uid, apiItem);\n if (typeParameters.length) {\n syntax.typeParameters = typeParameters;\n }\n }\n }\n\n private _populateYamlProperty(\n uid: DeclarationReference,\n yamlItem: Partial<IYamlItem>,\n apiItem: ApiPropertyItem\n ): void {\n const syntax: IYamlSyntax = {\n content: apiItem.getExcerptWithModifiers()\n };\n yamlItem.syntax = syntax;\n\n if (apiItem.propertyTypeExcerpt.text) {\n syntax.return = {\n type: [this._renderType(uid, apiItem.propertyTypeExcerpt)]\n };\n }\n }\n\n private _populateYamlVariable(\n uid: DeclarationReference,\n yamlItem: Partial<IYamlItem>,\n apiItem: ApiVariable\n ): void {\n const syntax: IYamlSyntax = {\n content: apiItem.getExcerptWithModifiers()\n };\n yamlItem.syntax = syntax;\n\n if (apiItem.variableTypeExcerpt.text) {\n syntax.return = {\n type: [this._renderType(uid, apiItem.variableTypeExcerpt)]\n };\n }\n }\n\n private _populateYamlTypeAlias(\n uid: DeclarationReference,\n yamlItem: Partial<IYamlItem>,\n apiItem: ApiTypeAlias\n ): void {\n const syntax: IYamlSyntax = {\n content: apiItem.getExcerptWithModifiers()\n };\n yamlItem.syntax = syntax;\n\n const typeParameters: IYamlParameter[] = this._populateYamlTypeParameters(uid, apiItem);\n if (typeParameters.length) {\n syntax.typeParameters = typeParameters;\n }\n\n if (apiItem.typeExcerpt.text) {\n syntax.return = {\n type: [this._renderType(uid, apiItem.typeExcerpt)]\n };\n }\n }\n\n private _renderMarkdown(docSection: DocSection, contextApiItem: ApiItem): string {\n const stringBuilder: StringBuilder = new StringBuilder();\n\n this._markdownEmitter.emit(stringBuilder, docSection, {\n contextApiItem,\n onGetFilenameForApiItem: (apiItem: ApiItem) => {\n // NOTE: GitHub's markdown renderer does not resolve relative hyperlinks correctly\n // unless they start with \"./\" or \"../\".\n\n // To ensure the xref is properly escaped, we first encode the entire xref\n // to handle escaping of reserved characters. Then we must replace '#' and '?'\n // characters so that they are not interpreted as a querystring or hash.\n // We must also backslash-escape unbalanced `(` and `)` characters as the\n // markdown spec insists that they are only valid when balanced. To reduce\n // the overhead we only support balanced parenthesis with a depth of 1.\n return encodeURI(`xref:${this._getUid(apiItem)}`)\n .replace(/[#?]/g, (s) => encodeURIComponent(s))\n .replace(/(\\([^(]*\\))|[()]/g, (s, balanced) => balanced || '\\\\' + s);\n }\n });\n\n return stringBuilder.toString().trim();\n }\n\n private _writeYamlFile(\n dataObject: {},\n filePath: string,\n yamlMimeType: string,\n schema: JsonSchema | undefined\n ): void {\n JsonFile.validateNoUndefinedMembers(dataObject);\n\n let stringified: string = yaml.safeDump(dataObject, {\n lineWidth: 120\n });\n\n if (yamlMimeType) {\n stringified = `### YamlMime:${yamlMimeType}\\n` + stringified;\n }\n\n FileSystem.writeFile(filePath, stringified, {\n convertLineEndings: NewlineKind.CrLf,\n ensureFolderExists: true\n });\n\n if (schema) {\n schema.validateObject(dataObject, filePath);\n }\n }\n\n /**\n * Calculate the DocFX \"uid\" for the ApiItem\n * Example: `node-core-library!JsonFile#load`\n */\n protected _getUid(apiItem: ApiItem): string {\n return this._getUidObject(apiItem).toString();\n }\n\n protected _getUidObject(apiItem: ApiItem): DeclarationReference {\n return apiItem.canonicalReference;\n }\n\n /**\n * Initialize the _apiItemsByCanonicalReference data structure.\n */\n private _initApiItems(): void {\n this._initApiItemsRecursive(this._apiModel);\n }\n\n /**\n * Helper for _initApiItems()\n */\n private _initApiItemsRecursive(apiItem: ApiItem): void {\n if (apiItem.canonicalReference && !apiItem.canonicalReference.isEmpty) {\n this._apiItemsByCanonicalReference.set(apiItem.canonicalReference.toString(), apiItem);\n }\n\n // Recurse container members\n if (ApiItemContainerMixin.isBaseClassOf(apiItem)) {\n for (const apiMember of apiItem.members) {\n this._initApiItemsRecursive(apiMember);\n }\n }\n }\n\n private _ensureYamlReferences(): IYamlReferences {\n if (!this._yamlReferences) {\n this._yamlReferences = {\n references: [],\n typeNameToUid: new Map(),\n uidTypeReferenceCounters: new Map()\n };\n }\n return this._yamlReferences;\n }\n\n private _renderInheritance(\n contextUid: DeclarationReference,\n heritageTypes: ReadonlyArray<HeritageType>\n ): IYamlInheritanceTree[] {\n const result: IYamlInheritanceTree[] = [];\n for (const heritageType of heritageTypes) {\n const type: string = this._renderType(contextUid, heritageType.excerpt);\n const yamlInheritance: IYamlInheritanceTree = { type };\n const apiItem: ApiItem | undefined = this._apiItemsByCanonicalReference.get(type);\n if (apiItem) {\n if (apiItem instanceof ApiClass) {\n if (apiItem.extendsType) {\n yamlInheritance.inheritance = this._renderInheritance(this._getUidObject(apiItem), [\n apiItem.extendsType\n ]);\n }\n } else if (apiItem instanceof ApiInterface) {\n if (apiItem.extendsTypes.length > 0) {\n yamlInheritance.inheritance = this._renderInheritance(\n this._getUidObject(apiItem),\n apiItem.extendsTypes\n );\n }\n }\n }\n result.push(yamlInheritance);\n }\n return result;\n }\n\n private _renderType(contextUid: DeclarationReference, typeExcerpt: Excerpt): string {\n const excerptTokens: ExcerptToken[] = [...typeExcerpt.spannedTokens]; // copy the read-only array\n\n if (excerptTokens.length === 0) {\n return '';\n }\n\n // Remove the last token if it consists only of whitespace\n const lastToken: ExcerptToken = excerptTokens[excerptTokens.length - 1];\n if (lastToken.kind === ExcerptTokenKind.Content && !lastToken.text.trim()) {\n excerptTokens.pop();\n if (excerptTokens.length === 0) {\n return '';\n }\n }\n\n const typeName: string = typeExcerpt.text.trim();\n\n // If there are no references to be used for a complex type, return the type name.\n if (!excerptTokens.some((tok) => tok.kind === ExcerptTokenKind.Reference && !!tok.canonicalReference)) {\n return typeName;\n }\n\n const yamlReferences: IYamlReferences = this._ensureYamlReferences();\n const existingUid: string | undefined = yamlReferences.typeNameToUid.get(typeName);\n\n // If this type has already been referenced for the current file, return its uid.\n if (existingUid) {\n return existingUid;\n }\n\n // If the excerpt consists of a single reference token, record the reference.\n if (\n excerptTokens.length === 1 &&\n excerptTokens[0].kind === ExcerptTokenKind.Reference &&\n excerptTokens[0].canonicalReference\n ) {\n const excerptRef: string = excerptTokens[0].canonicalReference.toString();\n const apiItem: ApiItem | undefined = this._apiItemsByCanonicalReference.get(excerptRef);\n return this._recordYamlReference(\n yamlReferences,\n excerptTokens[0].canonicalReference.toString(),\n apiItem ? this._getYamlItemName(apiItem) : typeName,\n apiItem ? this._getYamlItemName(apiItem, { includeNamespace: true }) : typeName\n );\n }\n\n // Otherwise, the type is complex and consists of one or more reference tokens. Record a reference\n // and return its uid.\n const baseUid: string = contextUid.withMeaning(undefined).withOverloadIndex(undefined).toString();\n\n // Keep track of the count for the base uid (without meaning or overload index) to ensure\n // that each complex type reference is unique.\n const counter: number = yamlReferences.uidTypeReferenceCounters.get(baseUid) || 0;\n yamlReferences.uidTypeReferenceCounters.set(baseUid, counter + 1);\n\n const uid: string = contextUid\n .addNavigationStep(Navigation.Locals, `${counter}`)\n .withMeaning(Meaning.ComplexType)\n .withOverloadIndex(undefined)\n .toString();\n\n return this._recordYamlReference(yamlReferences, uid, typeName, typeName, excerptTokens);\n }\n\n private _recordYamlReference(\n yamlReferences: IYamlReferences,\n uid: string,\n name: string,\n fullName: string,\n excerptTokens?: ExcerptToken[]\n ): string {\n if (yamlReferences.references.some((ref) => ref.uid === uid)) {\n return uid;\n }\n\n // Fill in the reference spec from the excerpt.\n const specs: IYamlReferenceSpec[] = [];\n if (excerptTokens) {\n for (const token of excerptTokens) {\n if (token.kind === ExcerptTokenKind.Reference) {\n const spec: IYamlReferenceSpec = {};\n const specUid: string | undefined = token.canonicalReference && token.canonicalReference.toString();\n const apiItem: ApiItem | undefined = specUid\n ? this._apiItemsByCanonicalReference.get(specUid)\n : undefined;\n if (specUid) {\n spec.uid = specUid;\n }\n spec.name = token.text;\n spec.fullName = apiItem\n ? apiItem.getScopedNameWithinPackage()\n : token.canonicalReference\n ? token.canonicalReference\n .withSource(undefined)\n .withMeaning(undefined)\n .withOverloadIndex(undefined)\n .toString()\n : token.text;\n specs.push(spec);\n } else {\n specs.push({\n name: token.text,\n fullName: token.text\n });\n }\n }\n }\n\n const yamlReference: IYamlReference = { uid };\n if (specs.length > 0) {\n yamlReference.name = specs\n .map((s) => s.name)\n .join('')\n .trim();\n yamlReference.fullName = specs\n .map((s) => s.fullName || s.name)\n .join('')\n .trim();\n yamlReference['spec.typeScript'] = specs;\n } else {\n if (name !== uid) {\n yamlReference.name = name;\n }\n if (fullName !== uid && fullName !== name) {\n yamlReference.fullName = fullName;\n }\n }\n\n yamlReferences.references.push(yamlReference);\n return uid;\n }\n\n private _getYamlItemName(apiItem: ApiItem, options: INameOptions = {}): string {\n const { includeSignature, includeNamespace } = options;\n const baseName: string = includeSignature ? Utilities.getConciseSignature(apiItem) : apiItem.displayName;\n if (\n (includeNamespace || apiItem.kind === ApiItemKind.Namespace) &&\n apiItem.parent &&\n apiItem.parent.kind === ApiItemKind.Namespace\n ) {\n // If the immediate parent is a namespace, then add the namespaces to the name. For example:\n //\n // // Name: \"N1\"\n // export namespace N1 {\n // // Name: \"N1.N2\"\n // export namespace N2 {\n // // Name: \"N1.N2.f(x,y)\"\n // export function f(x: string, y: string): string {\n // return x + y;\n // }\n //\n //\n // // Name: \"N1.N2.C\"\n // export class C {\n // // Name: \"member(x,y)\" <===========\n // public member(x: string, y: string): string {\n // return x + y;\n // }\n // }\n // }\n // }\n //\n // In the above example, \"member(x, y)\" does not appear as \"N1.N2.C.member(x,y)\" because YamlDocumenter\n // embeds this entry in the web page for \"N1.N2.C\", so the container is obvious. Whereas \"N1.N2.f(x,y)\"\n // needs to be qualified because the DocFX template doesn't make pages for namespaces. Instead, they get\n // flattened into the package's page.\n const nameParts: string[] = [baseName];\n\n for (let current: ApiItem | undefined = apiItem.parent; current; current = current.parent) {\n if (current.kind !== ApiItemKind.Namespace) {\n break;\n }\n\n nameParts.unshift(current.displayName);\n }\n\n return nameParts.join('.');\n } else {\n return baseName;\n }\n }\n\n private _getYamlFilePath(outputFolder: string, apiItem: ApiItem): string {\n let result: string = '';\n\n for (const current of apiItem.getHierarchy()) {\n switch (current.kind) {\n case ApiItemKind.Model:\n case ApiItemKind.EntryPoint:\n break;\n case ApiItemKind.Package:\n result += Utilities.getSafeFilenameForName(PackageName.getUnscopedName(current.displayName));\n break;\n default:\n if (current.parent && current.parent.kind === ApiItemKind.EntryPoint) {\n result += '/';\n } else {\n result += '.';\n }\n result += Utilities.getSafeFilenameForName(current.displayName);\n break;\n }\n }\n\n let disambiguator: string = '';\n if (apiItem.getMergedSiblings().length > 1) {\n disambiguator = `-${apiItem.kind.toLowerCase()}`;\n }\n\n return path.join(outputFolder, result + disambiguator + '.yml');\n }\n\n private _deleteOldOutputFiles(outputFolder: string): void {\n console.log('Deleting old output from ' + outputFolder);\n FileSystem.ensureEmptyFolder(outputFolder);\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@microsoft/api-documenter",
|
|
3
|
-
"version": "7.23.
|
|
3
|
+
"version": "7.23.8",
|
|
4
4
|
"description": "Read JSON files from api-extractor, generate documentation pages",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -19,14 +19,14 @@
|
|
|
19
19
|
"colors": "~1.2.1",
|
|
20
20
|
"js-yaml": "~3.13.1",
|
|
21
21
|
"resolve": "~1.22.1",
|
|
22
|
-
"@microsoft/api-extractor-model": "7.28.
|
|
23
|
-
"@rushstack/node-core-library": "3.
|
|
22
|
+
"@microsoft/api-extractor-model": "7.28.2",
|
|
23
|
+
"@rushstack/node-core-library": "3.61.0",
|
|
24
24
|
"@rushstack/ts-command-line": "4.16.1"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/js-yaml": "3.12.1",
|
|
28
28
|
"@types/resolve": "1.20.2",
|
|
29
|
-
"@rushstack/heft": "0.62.
|
|
29
|
+
"@rushstack/heft": "0.62.2",
|
|
30
30
|
"local-node-rig": "1.0.0"
|
|
31
31
|
},
|
|
32
32
|
"scripts": {
|