@microsoft/api-documenter 7.23.10 → 7.23.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/LICENSE +23 -23
  2. package/README.md +19 -19
  3. package/bin/api-documenter +2 -2
  4. package/dist/tsdoc-metadata.json +1 -1
  5. package/lib/cli/ApiDocumenterCommandLine.js.map +1 -1
  6. package/lib/cli/BaseAction.js.map +1 -1
  7. package/lib/cli/GenerateAction.js.map +1 -1
  8. package/lib/cli/MarkdownAction.js.map +1 -1
  9. package/lib/cli/YamlAction.js.map +1 -1
  10. package/lib/documenters/DocumenterConfig.js.map +1 -1
  11. package/lib/documenters/ExperimentalYamlDocumenter.js.map +1 -1
  12. package/lib/documenters/IConfigFile.js.map +1 -1
  13. package/lib/documenters/MarkdownDocumenter.js.map +1 -1
  14. package/lib/documenters/OfficeYamlDocumenter.js.map +1 -1
  15. package/lib/documenters/YamlDocumenter.js.map +1 -1
  16. package/lib/index.js.map +1 -1
  17. package/lib/markdown/CustomMarkdownEmitter.js.map +1 -1
  18. package/lib/markdown/MarkdownEmitter.js.map +1 -1
  19. package/lib/nodes/CustomDocNodeKind.js.map +1 -1
  20. package/lib/nodes/DocEmphasisSpan.js.map +1 -1
  21. package/lib/nodes/DocHeading.js.map +1 -1
  22. package/lib/nodes/DocNoteBox.js.map +1 -1
  23. package/lib/nodes/DocTable.js.map +1 -1
  24. package/lib/nodes/DocTableCell.js.map +1 -1
  25. package/lib/nodes/DocTableRow.js.map +1 -1
  26. package/lib/plugin/IApiDocumenterPluginManifest.js.map +1 -1
  27. package/lib/plugin/MarkdownDocumenterAccessor.js.map +1 -1
  28. package/lib/plugin/MarkdownDocumenterFeature.js.map +1 -1
  29. package/lib/plugin/PluginFeature.js.map +1 -1
  30. package/lib/plugin/PluginLoader.js.map +1 -1
  31. package/lib/schemas/api-documenter-template.json +99 -99
  32. package/lib/schemas/api-documenter.schema.json +47 -47
  33. package/lib/start.js.map +1 -1
  34. package/lib/utils/IndentedWriter.js.map +1 -1
  35. package/lib/utils/ToSdpConvertHelper.js.map +1 -1
  36. package/lib/utils/Utilities.js.map +1 -1
  37. package/lib/yaml/ISDPYamlFile.js.map +1 -1
  38. package/lib/yaml/IYamlApiFile.js.map +1 -1
  39. package/lib/yaml/IYamlTocFile.js.map +1 -1
  40. package/lib/yaml/typescript.schema.json +643 -643
  41. package/package.json +3 -3
@@ -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.\r\n// See LICENSE in the project root for license information.\r\n\r\nimport * as path from 'path';\r\n\r\nimport yaml = require('js-yaml');\r\nimport {\r\n JsonFile,\r\n JsonSchema,\r\n PackageName,\r\n FileSystem,\r\n NewlineKind,\r\n InternalError\r\n} from '@rushstack/node-core-library';\r\nimport {\r\n StringBuilder,\r\n type DocSection,\r\n type DocComment,\r\n type DocBlock,\r\n StandardTags\r\n} from '@microsoft/tsdoc';\r\nimport {\r\n type ApiModel,\r\n type ApiItem,\r\n ApiItemKind,\r\n ApiDocumentedItem,\r\n ApiReleaseTagMixin,\r\n ReleaseTag,\r\n type ApiPropertyItem,\r\n ApiItemContainerMixin,\r\n type ApiPackage,\r\n type ApiEnumMember,\r\n ApiClass,\r\n ApiInterface,\r\n type ApiMethod,\r\n type ApiMethodSignature,\r\n type ApiConstructor,\r\n type ApiFunction,\r\n ApiReturnTypeMixin,\r\n ApiTypeParameterListMixin,\r\n type Excerpt,\r\n type ExcerptToken,\r\n ExcerptTokenKind,\r\n type HeritageType,\r\n type ApiVariable,\r\n type ApiTypeAlias\r\n} from '@microsoft/api-extractor-model';\r\nimport {\r\n type DeclarationReference,\r\n Navigation,\r\n Meaning\r\n} from '@microsoft/tsdoc/lib-commonjs/beta/DeclarationReference';\r\nimport type {\r\n IYamlApiFile,\r\n IYamlItem,\r\n IYamlSyntax,\r\n IYamlParameter,\r\n IYamlReference,\r\n IYamlReferenceSpec,\r\n IYamlInheritanceTree\r\n} from '../yaml/IYamlApiFile';\r\nimport type { IYamlTocFile, IYamlTocItem } from '../yaml/IYamlTocFile';\r\nimport { Utilities } from '../utils/Utilities';\r\nimport { CustomMarkdownEmitter } from '../markdown/CustomMarkdownEmitter';\r\nimport { convertUDPYamlToSDP } from '../utils/ToSdpConvertHelper';\r\nimport typescriptSchema from '../yaml/typescript.schema.json';\r\n\r\nconst yamlApiSchema: JsonSchema = JsonSchema.fromLoadedObject(typescriptSchema);\r\n\r\ninterface IYamlReferences {\r\n references: IYamlReference[];\r\n typeNameToUid: Map<string, string>;\r\n uidTypeReferenceCounters: Map<string, number>;\r\n}\r\n\r\nconst enum FlattenMode {\r\n /** Include entries for nested namespaces and non-namespace children. */\r\n NestedNamespacesAndChildren,\r\n /** Include entries for nested namespaces only. */\r\n NestedNamespacesOnly,\r\n /** Include entries for non-namespace immediate children. */\r\n ImmediateChildren,\r\n /** Include entries for nested non-namespace children. */\r\n NestedChildren\r\n}\r\n\r\ninterface INameOptions {\r\n includeSignature?: boolean;\r\n includeNamespace?: boolean;\r\n}\r\n\r\n/**\r\n * Writes documentation in the Universal Reference YAML file format, as defined by typescript.schema.json.\r\n */\r\nexport class YamlDocumenter {\r\n protected readonly newDocfxNamespaces: boolean;\r\n private readonly _yamlFormat: string;\r\n private readonly _apiModel: ApiModel;\r\n private readonly _markdownEmitter: CustomMarkdownEmitter;\r\n\r\n private _apiItemsByCanonicalReference: Map<string, ApiItem>;\r\n private _yamlReferences: IYamlReferences | undefined;\r\n\r\n public constructor(apiModel: ApiModel, newDocfxNamespaces: boolean = false, yamlFormat: string = 'sdp') {\r\n this._apiModel = apiModel;\r\n this.newDocfxNamespaces = newDocfxNamespaces;\r\n this._yamlFormat = yamlFormat;\r\n this._markdownEmitter = new CustomMarkdownEmitter(this._apiModel);\r\n this._apiItemsByCanonicalReference = new Map<string, ApiItem>();\r\n\r\n this._initApiItems();\r\n }\r\n\r\n /** @virtual */\r\n public generateFiles(outputFolder: string): void {\r\n console.log();\r\n this._deleteOldOutputFiles(outputFolder);\r\n\r\n for (const apiPackage of this._apiModel.packages) {\r\n console.log(`Writing ${apiPackage.name} package`);\r\n this._visitApiItems(outputFolder, apiPackage, undefined);\r\n }\r\n\r\n if (this._yamlFormat === 'sdp') {\r\n convertUDPYamlToSDP(outputFolder);\r\n }\r\n\r\n this._writeTocFile(outputFolder, this._apiModel.packages);\r\n }\r\n\r\n /** @virtual */\r\n protected onGetTocRoot(): IYamlTocItem {\r\n return {\r\n name: 'SharePoint Framework reference',\r\n href: '~/overview/sharepoint.md',\r\n items: []\r\n };\r\n }\r\n\r\n /** @virtual */\r\n protected onCustomizeYamlItem(yamlItem: IYamlItem): void {\r\n // virtual\r\n // (overridden by child class)\r\n }\r\n\r\n private _visitApiItems(\r\n outputFolder: string,\r\n apiItem: ApiDocumentedItem,\r\n parentYamlFile: IYamlApiFile | undefined\r\n ): boolean {\r\n let savedYamlReferences: IYamlReferences | undefined;\r\n if (!this._shouldEmbed(apiItem.kind)) {\r\n savedYamlReferences = this._yamlReferences;\r\n this._yamlReferences = undefined;\r\n }\r\n\r\n const yamlItem: IYamlItem | undefined = this._generateYamlItem(apiItem);\r\n if (!yamlItem) {\r\n return false;\r\n }\r\n\r\n this.onCustomizeYamlItem(yamlItem);\r\n\r\n if (this._shouldEmbed(apiItem.kind)) {\r\n if (!parentYamlFile) {\r\n throw new InternalError('Missing file context');\r\n }\r\n parentYamlFile.items.push(yamlItem);\r\n } else {\r\n const newYamlFile: IYamlApiFile = {\r\n items: []\r\n };\r\n newYamlFile.items.push(yamlItem);\r\n\r\n const children: ApiItem[] = this._getLogicalChildren(apiItem);\r\n for (const child of children) {\r\n if (child instanceof ApiDocumentedItem) {\r\n if (this._visitApiItems(outputFolder, child, newYamlFile)) {\r\n if (!yamlItem.children) {\r\n yamlItem.children = [];\r\n }\r\n yamlItem.children.push(this._getUid(child));\r\n }\r\n }\r\n }\r\n\r\n if (this._yamlReferences && this._yamlReferences.references.length > 0) {\r\n newYamlFile.references = this._yamlReferences.references;\r\n }\r\n\r\n this._yamlReferences = savedYamlReferences;\r\n\r\n const yamlFilePath: string = this._getYamlFilePath(outputFolder, apiItem);\r\n\r\n if (apiItem.kind === ApiItemKind.Package) {\r\n console.log('Writing ' + yamlFilePath);\r\n }\r\n\r\n this._writeYamlFile(newYamlFile, yamlFilePath, 'UniversalReference', yamlApiSchema);\r\n\r\n if (parentYamlFile) {\r\n // References should be recorded in the parent YAML file with the local name of the embedded item.\r\n // This avoids unnecessary repetition when listing items inside of a namespace.\r\n this._recordYamlReference(\r\n this._ensureYamlReferences(),\r\n this._getUid(apiItem),\r\n this._getYamlItemName(apiItem, {\r\n includeNamespace: !this.newDocfxNamespaces,\r\n includeSignature: true\r\n }),\r\n this._getYamlItemName(apiItem, { includeNamespace: true, includeSignature: true })\r\n );\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n protected _getLogicalChildren(apiItem: ApiItem): ApiItem[] {\r\n const children: ApiItem[] = [];\r\n if (apiItem.kind === ApiItemKind.Package) {\r\n // Skip over the entry point, since it's not part of the documentation hierarchy\r\n this._flattenNamespaces(\r\n apiItem.members[0].members,\r\n children,\r\n this.newDocfxNamespaces ? FlattenMode.NestedNamespacesAndChildren : FlattenMode.NestedChildren\r\n );\r\n } else {\r\n this._flattenNamespaces(\r\n apiItem.members,\r\n children,\r\n this.newDocfxNamespaces ? FlattenMode.ImmediateChildren : FlattenMode.NestedChildren\r\n );\r\n }\r\n return children;\r\n }\r\n\r\n // Flattens nested namespaces into top level entries so that the following:\r\n // namespace X { export namespace Y { export namespace Z { } }\r\n // Is represented as:\r\n // - X\r\n // - X.Y\r\n // - X.Y.Z\r\n private _flattenNamespaces(\r\n items: ReadonlyArray<ApiItem>,\r\n childrenOut: ApiItem[],\r\n mode: FlattenMode\r\n ): boolean {\r\n let hasNonNamespaceChildren: boolean = false;\r\n for (const item of items) {\r\n if (item.kind === ApiItemKind.Namespace) {\r\n switch (mode) {\r\n case FlattenMode.NestedChildren:\r\n // Include children of namespaces, but not the namespaces themselves. This matches existing legacy behavior.\r\n this._flattenNamespaces(item.members, childrenOut, FlattenMode.NestedChildren);\r\n break;\r\n case FlattenMode.NestedNamespacesOnly:\r\n case FlattenMode.NestedNamespacesAndChildren:\r\n // At any level, always include a nested namespace if it has non-namespace children, but do not include its\r\n // non-namespace children in the result.\r\n\r\n // Record the offset at which the namespace is added in case we need to remove it later.\r\n const index: number = childrenOut.length;\r\n childrenOut.push(item);\r\n\r\n if (!this._flattenNamespaces(item.members, childrenOut, FlattenMode.NestedNamespacesOnly)) {\r\n // This namespace had no non-namespace children, remove it.\r\n childrenOut.splice(index, 1);\r\n }\r\n break;\r\n }\r\n } else if (this._shouldInclude(item.kind)) {\r\n switch (mode) {\r\n case FlattenMode.NestedChildren:\r\n case FlattenMode.NestedNamespacesAndChildren:\r\n case FlattenMode.ImmediateChildren:\r\n // At the top level, include non-namespace children as well.\r\n childrenOut.push(item);\r\n break;\r\n }\r\n hasNonNamespaceChildren = true;\r\n }\r\n }\r\n return hasNonNamespaceChildren;\r\n }\r\n\r\n /**\r\n * Write the table of contents\r\n */\r\n private _writeTocFile(outputFolder: string, apiItems: ReadonlyArray<ApiItem>): void {\r\n const tocFile: IYamlTocFile = this.buildYamlTocFile(apiItems);\r\n\r\n const tocFilePath: string = path.join(outputFolder, 'toc.yml');\r\n console.log('Writing ' + tocFilePath);\r\n this._writeYamlFile(tocFile, tocFilePath, '', undefined);\r\n }\r\n\r\n /** @virtual */\r\n protected buildYamlTocFile(apiItems: ReadonlyArray<ApiItem>): IYamlTocFile {\r\n const tocFile: IYamlTocFile = {\r\n items: []\r\n };\r\n\r\n const rootItem: IYamlTocItem = this.onGetTocRoot();\r\n tocFile.items.push(rootItem);\r\n\r\n rootItem.items!.push(...this._buildTocItems(apiItems));\r\n return tocFile;\r\n }\r\n\r\n private _buildTocItems(apiItems: ReadonlyArray<ApiItem>): IYamlTocItem[] {\r\n const tocItems: IYamlTocItem[] = [];\r\n for (const apiItem of apiItems) {\r\n let tocItem: IYamlTocItem;\r\n if (apiItem.kind === ApiItemKind.Namespace && !this.newDocfxNamespaces) {\r\n tocItem = {\r\n name: this._getTocItemName(apiItem)\r\n };\r\n } else {\r\n if (this._shouldEmbed(apiItem.kind)) {\r\n // Don't generate table of contents items for embedded definitions\r\n continue;\r\n }\r\n\r\n tocItem = {\r\n name: this._getTocItemName(apiItem),\r\n uid: this._getUid(apiItem)\r\n };\r\n }\r\n\r\n tocItems.push(tocItem);\r\n\r\n const children: ApiItem[] = this._getLogicalChildren(apiItem);\r\n const childItems: IYamlTocItem[] = this._buildTocItems(children);\r\n if (childItems.length > 0) {\r\n tocItem.items = childItems;\r\n }\r\n }\r\n return tocItems;\r\n }\r\n\r\n /** @virtual */\r\n protected _getTocItemName(apiItem: ApiItem): string {\r\n let name: string;\r\n if (apiItem.kind === ApiItemKind.Package) {\r\n name = PackageName.getUnscopedName(apiItem.displayName);\r\n } else {\r\n name = this._getYamlItemName(apiItem);\r\n }\r\n\r\n if (name === apiItem.displayName && apiItem.getMergedSiblings().length > 1) {\r\n name += ` (${apiItem.kind})`;\r\n }\r\n\r\n return name;\r\n }\r\n\r\n protected _shouldEmbed(apiItemKind: ApiItemKind): boolean {\r\n switch (apiItemKind) {\r\n case ApiItemKind.Class:\r\n case ApiItemKind.Package:\r\n case ApiItemKind.Interface:\r\n case ApiItemKind.Enum:\r\n case ApiItemKind.TypeAlias:\r\n return false;\r\n case ApiItemKind.Namespace:\r\n return !this.newDocfxNamespaces;\r\n }\r\n return true;\r\n }\r\n\r\n protected _shouldInclude(apiItemKind: ApiItemKind): boolean {\r\n // Filter out known items that are not yet supported\r\n switch (apiItemKind) {\r\n case ApiItemKind.CallSignature:\r\n case ApiItemKind.ConstructSignature:\r\n case ApiItemKind.IndexSignature:\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private _generateYamlItem(apiItem: ApiDocumentedItem): IYamlItem | undefined {\r\n // Filter out known items that are not yet supported\r\n if (!this._shouldInclude(apiItem.kind)) {\r\n return undefined;\r\n }\r\n\r\n const uid: DeclarationReference = this._getUidObject(apiItem);\r\n const yamlItem: Partial<IYamlItem> = {\r\n uid: uid.toString()\r\n };\r\n\r\n if (apiItem.tsdocComment) {\r\n const tsdocComment: DocComment = apiItem.tsdocComment;\r\n if (tsdocComment.summarySection) {\r\n const summary: string = this._renderMarkdown(tsdocComment.summarySection, apiItem);\r\n if (summary) {\r\n yamlItem.summary = summary;\r\n }\r\n }\r\n\r\n if (tsdocComment.remarksBlock) {\r\n const remarks: string = this._renderMarkdown(tsdocComment.remarksBlock.content, apiItem);\r\n if (remarks) {\r\n yamlItem.remarks = remarks;\r\n }\r\n }\r\n\r\n if (tsdocComment) {\r\n // Write the @example blocks\r\n const exampleBlocks: DocBlock[] = tsdocComment.customBlocks.filter(\r\n (x) => x.blockTag.tagNameWithUpperCase === StandardTags.example.tagNameWithUpperCase\r\n );\r\n\r\n for (const exampleBlock of exampleBlocks) {\r\n const example: string = this._renderMarkdown(exampleBlock.content, apiItem);\r\n if (example) {\r\n yamlItem.example = [...(yamlItem.example || []), example];\r\n }\r\n }\r\n }\r\n\r\n if (tsdocComment.deprecatedBlock) {\r\n const deprecatedMessage: string = this._renderMarkdown(tsdocComment.deprecatedBlock.content, apiItem);\r\n if (deprecatedMessage.length > 0) {\r\n yamlItem.deprecated = { content: deprecatedMessage };\r\n }\r\n }\r\n }\r\n\r\n if (ApiReleaseTagMixin.isBaseClassOf(apiItem)) {\r\n if (apiItem.releaseTag === ReleaseTag.Alpha || apiItem.releaseTag === ReleaseTag.Beta) {\r\n yamlItem.isPreview = true;\r\n }\r\n }\r\n\r\n yamlItem.name = this._getYamlItemName(apiItem, {\r\n includeSignature: true,\r\n includeNamespace: !this.newDocfxNamespaces\r\n });\r\n yamlItem.fullName = this._getYamlItemName(apiItem, { includeSignature: true, includeNamespace: true });\r\n yamlItem.langs = ['typeScript'];\r\n\r\n // Add the namespace of the item if it is contained in one.\r\n // Do not add the namespace parent of a namespace as they are flattened in the documentation.\r\n if (\r\n apiItem.kind !== ApiItemKind.Namespace &&\r\n apiItem.parent &&\r\n apiItem.parent.kind === ApiItemKind.Namespace &&\r\n this.newDocfxNamespaces\r\n ) {\r\n yamlItem.namespace = apiItem.parent.canonicalReference.toString();\r\n }\r\n\r\n switch (apiItem.kind) {\r\n case ApiItemKind.Enum:\r\n yamlItem.type = 'enum';\r\n break;\r\n case ApiItemKind.EnumMember:\r\n yamlItem.type = 'field';\r\n const enumMember: ApiEnumMember = apiItem as ApiEnumMember;\r\n\r\n if (enumMember.initializerExcerpt && enumMember.initializerExcerpt.text.length > 0) {\r\n yamlItem.numericValue = enumMember.initializerExcerpt.text;\r\n }\r\n\r\n break;\r\n case ApiItemKind.Class:\r\n yamlItem.type = 'class';\r\n this._populateYamlClassOrInterface(uid, yamlItem, apiItem as ApiClass);\r\n break;\r\n case ApiItemKind.Interface:\r\n yamlItem.type = 'interface';\r\n this._populateYamlClassOrInterface(uid, yamlItem, apiItem as ApiInterface);\r\n break;\r\n case ApiItemKind.Method:\r\n case ApiItemKind.MethodSignature:\r\n yamlItem.type = 'method';\r\n this._populateYamlFunctionLike(uid, yamlItem, apiItem as ApiMethod | ApiMethodSignature);\r\n break;\r\n\r\n case ApiItemKind.Constructor:\r\n yamlItem.type = 'constructor';\r\n this._populateYamlFunctionLike(uid, yamlItem, apiItem as ApiConstructor);\r\n break;\r\n\r\n case ApiItemKind.Package:\r\n yamlItem.type = 'package';\r\n break;\r\n case ApiItemKind.Namespace:\r\n yamlItem.type = 'namespace';\r\n break;\r\n case ApiItemKind.Property:\r\n case ApiItemKind.PropertySignature:\r\n const apiProperty: ApiPropertyItem = apiItem as ApiPropertyItem;\r\n if (apiProperty.isEventProperty) {\r\n yamlItem.type = 'event';\r\n } else {\r\n yamlItem.type = 'property';\r\n }\r\n this._populateYamlProperty(uid, yamlItem, apiProperty);\r\n break;\r\n\r\n case ApiItemKind.Function:\r\n yamlItem.type = 'function';\r\n this._populateYamlFunctionLike(uid, yamlItem, apiItem as ApiFunction);\r\n break;\r\n\r\n case ApiItemKind.Variable:\r\n yamlItem.type = 'variable';\r\n this._populateYamlVariable(uid, yamlItem, apiItem as ApiVariable);\r\n break;\r\n\r\n case ApiItemKind.TypeAlias:\r\n yamlItem.type = 'typealias';\r\n this._populateYamlTypeAlias(uid, yamlItem, apiItem as ApiTypeAlias);\r\n break;\r\n\r\n default:\r\n throw new Error('Unimplemented item kind: ' + apiItem.kind);\r\n }\r\n\r\n if (apiItem.kind !== ApiItemKind.Package && !this._shouldEmbed(apiItem.kind)) {\r\n const associatedPackage: ApiPackage | undefined = apiItem.getAssociatedPackage();\r\n if (!associatedPackage) {\r\n throw new Error('Unable to determine associated package for ' + apiItem.displayName);\r\n }\r\n yamlItem.package = this._getUid(associatedPackage);\r\n }\r\n\r\n return yamlItem as IYamlItem;\r\n }\r\n\r\n private _populateYamlTypeParameters(\r\n contextUid: DeclarationReference,\r\n apiItem: ApiTypeParameterListMixin\r\n ): IYamlParameter[] {\r\n const typeParameters: IYamlParameter[] = [];\r\n for (const apiTypeParameter of apiItem.typeParameters) {\r\n const typeParameter: IYamlParameter = {\r\n id: apiTypeParameter.name\r\n };\r\n\r\n if (apiTypeParameter.tsdocTypeParamBlock) {\r\n typeParameter.description = this._renderMarkdown(\r\n apiTypeParameter.tsdocTypeParamBlock.content,\r\n apiItem\r\n );\r\n }\r\n\r\n if (!apiTypeParameter.constraintExcerpt.isEmpty) {\r\n typeParameter.type = [this._renderType(contextUid, apiTypeParameter.constraintExcerpt)];\r\n }\r\n\r\n typeParameters.push(typeParameter);\r\n }\r\n return typeParameters;\r\n }\r\n\r\n private _populateYamlClassOrInterface(\r\n uid: DeclarationReference,\r\n yamlItem: Partial<IYamlItem>,\r\n apiItem: ApiClass | ApiInterface\r\n ): void {\r\n if (apiItem instanceof ApiClass) {\r\n if (apiItem.extendsType) {\r\n yamlItem.extends = [this._renderType(uid, apiItem.extendsType.excerpt)];\r\n yamlItem.inheritance = this._renderInheritance(uid, [apiItem.extendsType]);\r\n }\r\n if (apiItem.implementsTypes.length > 0) {\r\n yamlItem.implements = [];\r\n for (const implementsType of apiItem.implementsTypes) {\r\n yamlItem.implements.push(this._renderType(uid, implementsType.excerpt));\r\n }\r\n }\r\n } else if (apiItem instanceof ApiInterface) {\r\n if (apiItem.extendsTypes.length > 0) {\r\n yamlItem.extends = [];\r\n for (const extendsType of apiItem.extendsTypes) {\r\n yamlItem.extends.push(this._renderType(uid, extendsType.excerpt));\r\n }\r\n yamlItem.inheritance = this._renderInheritance(uid, apiItem.extendsTypes);\r\n }\r\n\r\n const typeParameters: IYamlParameter[] = this._populateYamlTypeParameters(uid, apiItem);\r\n if (typeParameters.length) {\r\n yamlItem.syntax = { typeParameters };\r\n }\r\n }\r\n\r\n if (apiItem.tsdocComment) {\r\n if (apiItem.tsdocComment.modifierTagSet.isSealed()) {\r\n let sealedMessage: string;\r\n if (apiItem.kind === ApiItemKind.Class) {\r\n sealedMessage = 'This class is marked as `@sealed`. Subclasses should not extend it.';\r\n } else {\r\n sealedMessage = 'This interface is marked as `@sealed`. Other interfaces should not extend it.';\r\n }\r\n if (!yamlItem.remarks) {\r\n yamlItem.remarks = sealedMessage;\r\n } else {\r\n yamlItem.remarks = sealedMessage + '\\n\\n' + yamlItem.remarks;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _populateYamlFunctionLike(\r\n uid: DeclarationReference,\r\n yamlItem: Partial<IYamlItem>,\r\n apiItem: ApiMethod | ApiMethodSignature | ApiConstructor | ApiFunction\r\n ): void {\r\n const syntax: IYamlSyntax = {\r\n content: apiItem.getExcerptWithModifiers()\r\n };\r\n yamlItem.syntax = syntax;\r\n\r\n if (ApiReturnTypeMixin.isBaseClassOf(apiItem)) {\r\n const returnType: string = this._renderType(uid, apiItem.returnTypeExcerpt);\r\n\r\n let returnDescription: string = '';\r\n\r\n if (apiItem.tsdocComment && apiItem.tsdocComment.returnsBlock) {\r\n returnDescription = this._renderMarkdown(apiItem.tsdocComment.returnsBlock.content, apiItem);\r\n // temporary workaround for people who mistakenly add a hyphen, e.g. \"@returns - blah\"\r\n returnDescription = returnDescription.replace(/^\\s*-\\s+/, '');\r\n }\r\n\r\n if (returnType || returnDescription) {\r\n syntax.return = {\r\n type: [returnType],\r\n description: returnDescription\r\n };\r\n }\r\n }\r\n\r\n const parameters: IYamlParameter[] = [];\r\n for (const apiParameter of apiItem.parameters) {\r\n let parameterDescription: string = '';\r\n if (apiParameter.tsdocParamBlock) {\r\n parameterDescription = this._renderMarkdown(apiParameter.tsdocParamBlock.content, apiItem);\r\n }\r\n\r\n parameters.push({\r\n id: apiParameter.name,\r\n description: parameterDescription,\r\n type: [this._renderType(uid, apiParameter.parameterTypeExcerpt)],\r\n optional: apiParameter.isOptional\r\n } as IYamlParameter);\r\n }\r\n\r\n if (parameters.length) {\r\n syntax.parameters = parameters;\r\n }\r\n\r\n if (ApiTypeParameterListMixin.isBaseClassOf(apiItem)) {\r\n const typeParameters: IYamlParameter[] = this._populateYamlTypeParameters(uid, apiItem);\r\n if (typeParameters.length) {\r\n syntax.typeParameters = typeParameters;\r\n }\r\n }\r\n }\r\n\r\n private _populateYamlProperty(\r\n uid: DeclarationReference,\r\n yamlItem: Partial<IYamlItem>,\r\n apiItem: ApiPropertyItem\r\n ): void {\r\n const syntax: IYamlSyntax = {\r\n content: apiItem.getExcerptWithModifiers()\r\n };\r\n yamlItem.syntax = syntax;\r\n\r\n if (apiItem.propertyTypeExcerpt.text) {\r\n syntax.return = {\r\n type: [this._renderType(uid, apiItem.propertyTypeExcerpt)]\r\n };\r\n }\r\n }\r\n\r\n private _populateYamlVariable(\r\n uid: DeclarationReference,\r\n yamlItem: Partial<IYamlItem>,\r\n apiItem: ApiVariable\r\n ): void {\r\n const syntax: IYamlSyntax = {\r\n content: apiItem.getExcerptWithModifiers()\r\n };\r\n yamlItem.syntax = syntax;\r\n\r\n if (apiItem.variableTypeExcerpt.text) {\r\n syntax.return = {\r\n type: [this._renderType(uid, apiItem.variableTypeExcerpt)]\r\n };\r\n }\r\n }\r\n\r\n private _populateYamlTypeAlias(\r\n uid: DeclarationReference,\r\n yamlItem: Partial<IYamlItem>,\r\n apiItem: ApiTypeAlias\r\n ): void {\r\n const syntax: IYamlSyntax = {\r\n content: apiItem.getExcerptWithModifiers()\r\n };\r\n yamlItem.syntax = syntax;\r\n\r\n const typeParameters: IYamlParameter[] = this._populateYamlTypeParameters(uid, apiItem);\r\n if (typeParameters.length) {\r\n syntax.typeParameters = typeParameters;\r\n }\r\n\r\n if (apiItem.typeExcerpt.text) {\r\n syntax.return = {\r\n type: [this._renderType(uid, apiItem.typeExcerpt)]\r\n };\r\n }\r\n }\r\n\r\n private _renderMarkdown(docSection: DocSection, contextApiItem: ApiItem): string {\r\n const stringBuilder: StringBuilder = new StringBuilder();\r\n\r\n this._markdownEmitter.emit(stringBuilder, docSection, {\r\n contextApiItem,\r\n onGetFilenameForApiItem: (apiItem: ApiItem) => {\r\n // NOTE: GitHub's markdown renderer does not resolve relative hyperlinks correctly\r\n // unless they start with \"./\" or \"../\".\r\n\r\n // To ensure the xref is properly escaped, we first encode the entire xref\r\n // to handle escaping of reserved characters. Then we must replace '#' and '?'\r\n // characters so that they are not interpreted as a querystring or hash.\r\n // We must also backslash-escape unbalanced `(` and `)` characters as the\r\n // markdown spec insists that they are only valid when balanced. To reduce\r\n // the overhead we only support balanced parenthesis with a depth of 1.\r\n return encodeURI(`xref:${this._getUid(apiItem)}`)\r\n .replace(/[#?]/g, (s) => encodeURIComponent(s))\r\n .replace(/(\\([^(]*\\))|[()]/g, (s, balanced) => balanced || '\\\\' + s);\r\n }\r\n });\r\n\r\n return stringBuilder.toString().trim();\r\n }\r\n\r\n private _writeYamlFile(\r\n dataObject: {},\r\n filePath: string,\r\n yamlMimeType: string,\r\n schema: JsonSchema | undefined\r\n ): void {\r\n JsonFile.validateNoUndefinedMembers(dataObject);\r\n\r\n let stringified: string = yaml.safeDump(dataObject, {\r\n lineWidth: 120\r\n });\r\n\r\n if (yamlMimeType) {\r\n stringified = `### YamlMime:${yamlMimeType}\\n` + stringified;\r\n }\r\n\r\n FileSystem.writeFile(filePath, stringified, {\r\n convertLineEndings: NewlineKind.CrLf,\r\n ensureFolderExists: true\r\n });\r\n\r\n if (schema) {\r\n schema.validateObject(dataObject, filePath);\r\n }\r\n }\r\n\r\n /**\r\n * Calculate the DocFX \"uid\" for the ApiItem\r\n * Example: `node-core-library!JsonFile#load`\r\n */\r\n protected _getUid(apiItem: ApiItem): string {\r\n return this._getUidObject(apiItem).toString();\r\n }\r\n\r\n protected _getUidObject(apiItem: ApiItem): DeclarationReference {\r\n return apiItem.canonicalReference;\r\n }\r\n\r\n /**\r\n * Initialize the _apiItemsByCanonicalReference data structure.\r\n */\r\n private _initApiItems(): void {\r\n this._initApiItemsRecursive(this._apiModel);\r\n }\r\n\r\n /**\r\n * Helper for _initApiItems()\r\n */\r\n private _initApiItemsRecursive(apiItem: ApiItem): void {\r\n if (apiItem.canonicalReference && !apiItem.canonicalReference.isEmpty) {\r\n this._apiItemsByCanonicalReference.set(apiItem.canonicalReference.toString(), apiItem);\r\n }\r\n\r\n // Recurse container members\r\n if (ApiItemContainerMixin.isBaseClassOf(apiItem)) {\r\n for (const apiMember of apiItem.members) {\r\n this._initApiItemsRecursive(apiMember);\r\n }\r\n }\r\n }\r\n\r\n private _ensureYamlReferences(): IYamlReferences {\r\n if (!this._yamlReferences) {\r\n this._yamlReferences = {\r\n references: [],\r\n typeNameToUid: new Map(),\r\n uidTypeReferenceCounters: new Map()\r\n };\r\n }\r\n return this._yamlReferences;\r\n }\r\n\r\n private _renderInheritance(\r\n contextUid: DeclarationReference,\r\n heritageTypes: ReadonlyArray<HeritageType>\r\n ): IYamlInheritanceTree[] {\r\n const result: IYamlInheritanceTree[] = [];\r\n for (const heritageType of heritageTypes) {\r\n const type: string = this._renderType(contextUid, heritageType.excerpt);\r\n const yamlInheritance: IYamlInheritanceTree = { type };\r\n const apiItem: ApiItem | undefined = this._apiItemsByCanonicalReference.get(type);\r\n if (apiItem) {\r\n if (apiItem instanceof ApiClass) {\r\n if (apiItem.extendsType) {\r\n yamlInheritance.inheritance = this._renderInheritance(this._getUidObject(apiItem), [\r\n apiItem.extendsType\r\n ]);\r\n }\r\n } else if (apiItem instanceof ApiInterface) {\r\n if (apiItem.extendsTypes.length > 0) {\r\n yamlInheritance.inheritance = this._renderInheritance(\r\n this._getUidObject(apiItem),\r\n apiItem.extendsTypes\r\n );\r\n }\r\n }\r\n }\r\n result.push(yamlInheritance);\r\n }\r\n return result;\r\n }\r\n\r\n private _renderType(contextUid: DeclarationReference, typeExcerpt: Excerpt): string {\r\n const excerptTokens: ExcerptToken[] = [...typeExcerpt.spannedTokens]; // copy the read-only array\r\n\r\n if (excerptTokens.length === 0) {\r\n return '';\r\n }\r\n\r\n // Remove the last token if it consists only of whitespace\r\n const lastToken: ExcerptToken = excerptTokens[excerptTokens.length - 1];\r\n if (lastToken.kind === ExcerptTokenKind.Content && !lastToken.text.trim()) {\r\n excerptTokens.pop();\r\n if (excerptTokens.length === 0) {\r\n return '';\r\n }\r\n }\r\n\r\n const typeName: string = typeExcerpt.text.trim();\r\n\r\n // If there are no references to be used for a complex type, return the type name.\r\n if (!excerptTokens.some((tok) => tok.kind === ExcerptTokenKind.Reference && !!tok.canonicalReference)) {\r\n return typeName;\r\n }\r\n\r\n const yamlReferences: IYamlReferences = this._ensureYamlReferences();\r\n const existingUid: string | undefined = yamlReferences.typeNameToUid.get(typeName);\r\n\r\n // If this type has already been referenced for the current file, return its uid.\r\n if (existingUid) {\r\n return existingUid;\r\n }\r\n\r\n // If the excerpt consists of a single reference token, record the reference.\r\n if (\r\n excerptTokens.length === 1 &&\r\n excerptTokens[0].kind === ExcerptTokenKind.Reference &&\r\n excerptTokens[0].canonicalReference\r\n ) {\r\n const excerptRef: string = excerptTokens[0].canonicalReference.toString();\r\n const apiItem: ApiItem | undefined = this._apiItemsByCanonicalReference.get(excerptRef);\r\n return this._recordYamlReference(\r\n yamlReferences,\r\n excerptTokens[0].canonicalReference.toString(),\r\n apiItem ? this._getYamlItemName(apiItem) : typeName,\r\n apiItem ? this._getYamlItemName(apiItem, { includeNamespace: true }) : typeName\r\n );\r\n }\r\n\r\n // Otherwise, the type is complex and consists of one or more reference tokens. Record a reference\r\n // and return its uid.\r\n const baseUid: string = contextUid.withMeaning(undefined).withOverloadIndex(undefined).toString();\r\n\r\n // Keep track of the count for the base uid (without meaning or overload index) to ensure\r\n // that each complex type reference is unique.\r\n const counter: number = yamlReferences.uidTypeReferenceCounters.get(baseUid) || 0;\r\n yamlReferences.uidTypeReferenceCounters.set(baseUid, counter + 1);\r\n\r\n const uid: string = contextUid\r\n .addNavigationStep(Navigation.Locals, `${counter}`)\r\n .withMeaning(Meaning.ComplexType)\r\n .withOverloadIndex(undefined)\r\n .toString();\r\n\r\n return this._recordYamlReference(yamlReferences, uid, typeName, typeName, excerptTokens);\r\n }\r\n\r\n private _recordYamlReference(\r\n yamlReferences: IYamlReferences,\r\n uid: string,\r\n name: string,\r\n fullName: string,\r\n excerptTokens?: ExcerptToken[]\r\n ): string {\r\n if (yamlReferences.references.some((ref) => ref.uid === uid)) {\r\n return uid;\r\n }\r\n\r\n // Fill in the reference spec from the excerpt.\r\n const specs: IYamlReferenceSpec[] = [];\r\n if (excerptTokens) {\r\n for (const token of excerptTokens) {\r\n if (token.kind === ExcerptTokenKind.Reference) {\r\n const spec: IYamlReferenceSpec = {};\r\n const specUid: string | undefined = token.canonicalReference && token.canonicalReference.toString();\r\n const apiItem: ApiItem | undefined = specUid\r\n ? this._apiItemsByCanonicalReference.get(specUid)\r\n : undefined;\r\n if (specUid) {\r\n spec.uid = specUid;\r\n }\r\n spec.name = token.text;\r\n spec.fullName = apiItem\r\n ? apiItem.getScopedNameWithinPackage()\r\n : token.canonicalReference\r\n ? token.canonicalReference\r\n .withSource(undefined)\r\n .withMeaning(undefined)\r\n .withOverloadIndex(undefined)\r\n .toString()\r\n : token.text;\r\n specs.push(spec);\r\n } else {\r\n specs.push({\r\n name: token.text,\r\n fullName: token.text\r\n });\r\n }\r\n }\r\n }\r\n\r\n const yamlReference: IYamlReference = { uid };\r\n if (specs.length > 0) {\r\n yamlReference.name = specs\r\n .map((s) => s.name)\r\n .join('')\r\n .trim();\r\n yamlReference.fullName = specs\r\n .map((s) => s.fullName || s.name)\r\n .join('')\r\n .trim();\r\n yamlReference['spec.typeScript'] = specs;\r\n } else {\r\n if (name !== uid) {\r\n yamlReference.name = name;\r\n }\r\n if (fullName !== uid && fullName !== name) {\r\n yamlReference.fullName = fullName;\r\n }\r\n }\r\n\r\n yamlReferences.references.push(yamlReference);\r\n return uid;\r\n }\r\n\r\n private _getYamlItemName(apiItem: ApiItem, options: INameOptions = {}): string {\r\n const { includeSignature, includeNamespace } = options;\r\n const baseName: string = includeSignature ? Utilities.getConciseSignature(apiItem) : apiItem.displayName;\r\n if (\r\n (includeNamespace || apiItem.kind === ApiItemKind.Namespace) &&\r\n apiItem.parent &&\r\n apiItem.parent.kind === ApiItemKind.Namespace\r\n ) {\r\n // If the immediate parent is a namespace, then add the namespaces to the name. For example:\r\n //\r\n // // Name: \"N1\"\r\n // export namespace N1 {\r\n // // Name: \"N1.N2\"\r\n // export namespace N2 {\r\n // // Name: \"N1.N2.f(x,y)\"\r\n // export function f(x: string, y: string): string {\r\n // return x + y;\r\n // }\r\n //\r\n //\r\n // // Name: \"N1.N2.C\"\r\n // export class C {\r\n // // Name: \"member(x,y)\" <===========\r\n // public member(x: string, y: string): string {\r\n // return x + y;\r\n // }\r\n // }\r\n // }\r\n // }\r\n //\r\n // In the above example, \"member(x, y)\" does not appear as \"N1.N2.C.member(x,y)\" because YamlDocumenter\r\n // embeds this entry in the web page for \"N1.N2.C\", so the container is obvious. Whereas \"N1.N2.f(x,y)\"\r\n // needs to be qualified because the DocFX template doesn't make pages for namespaces. Instead, they get\r\n // flattened into the package's page.\r\n const nameParts: string[] = [baseName];\r\n\r\n for (let current: ApiItem | undefined = apiItem.parent; current; current = current.parent) {\r\n if (current.kind !== ApiItemKind.Namespace) {\r\n break;\r\n }\r\n\r\n nameParts.unshift(current.displayName);\r\n }\r\n\r\n return nameParts.join('.');\r\n } else {\r\n return baseName;\r\n }\r\n }\r\n\r\n private _getYamlFilePath(outputFolder: string, apiItem: ApiItem): string {\r\n let result: string = '';\r\n\r\n for (const current of apiItem.getHierarchy()) {\r\n switch (current.kind) {\r\n case ApiItemKind.Model:\r\n case ApiItemKind.EntryPoint:\r\n break;\r\n case ApiItemKind.Package:\r\n result += Utilities.getSafeFilenameForName(PackageName.getUnscopedName(current.displayName));\r\n break;\r\n default:\r\n if (current.parent && current.parent.kind === ApiItemKind.EntryPoint) {\r\n result += '/';\r\n } else {\r\n result += '.';\r\n }\r\n result += Utilities.getSafeFilenameForName(current.displayName);\r\n break;\r\n }\r\n }\r\n\r\n let disambiguator: string = '';\r\n if (apiItem.getMergedSiblings().length > 1) {\r\n disambiguator = `-${apiItem.kind.toLowerCase()}`;\r\n }\r\n\r\n return path.join(outputFolder, result + disambiguator + '.yml');\r\n }\r\n\r\n private _deleteOldOutputFiles(outputFolder: string): void {\r\n console.log('Deleting old output from ' + outputFolder);\r\n FileSystem.ensureEmptyFolder(outputFolder);\r\n }\r\n}\r\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/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAW3D,kFAAiF;AAAxE,wIAAA,0BAA0B,OAAA;AACnC,gFAK4C;AAJ1C,6IAAA,gCAAgC,OAAA;AAGhC,sIAAA,yBAAyB,OAAA;AAE3B,wDAA0G;AAAjG,8GAAA,aAAa,OAAA;AAAE,qHAAA,oBAAoB,OAAA;AAAE,4HAAA,2BAA2B,OAAA","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\r\n// See LICENSE in the project root for license information.\r\n\r\n/**\r\n * API Documenter generates an API reference website from the .api.json files created by API Extractor.\r\n * The `@microsoft/api-documenter` package provides the command-line tool. It also exposes a developer API that you\r\n * can use to create plugins that customize how API Documenter generates documentation.\r\n *\r\n * @packageDocumentation\r\n */\r\n\r\nexport { IFeatureDefinition, IApiDocumenterPluginManifest } from './plugin/IApiDocumenterPluginManifest';\r\nexport { MarkdownDocumenterAccessor } from './plugin/MarkdownDocumenterAccessor';\r\nexport {\r\n MarkdownDocumenterFeatureContext,\r\n IMarkdownDocumenterFeatureOnBeforeWritePageArgs,\r\n IMarkdownDocumenterFeatureOnFinishedArgs,\r\n MarkdownDocumenterFeature\r\n} from './plugin/MarkdownDocumenterFeature';\r\nexport { PluginFeature, PluginFeatureContext, PluginFeatureInitialization } from './plugin/PluginFeature';\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAW3D,kFAAiF;AAAxE,wIAAA,0BAA0B,OAAA;AACnC,gFAK4C;AAJ1C,6IAAA,gCAAgC,OAAA;AAGhC,sIAAA,yBAAyB,OAAA;AAE3B,wDAA0G;AAAjG,8GAAA,aAAa,OAAA;AAAE,qHAAA,oBAAoB,OAAA;AAAE,4HAAA,2BAA2B,OAAA","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\n/**\n * API Documenter generates an API reference website from the .api.json files created by API Extractor.\n * The `@microsoft/api-documenter` package provides the command-line tool. It also exposes a developer API that you\n * can use to create plugins that customize how API Documenter generates documentation.\n *\n * @packageDocumentation\n */\n\nexport { IFeatureDefinition, IApiDocumenterPluginManifest } from './plugin/IApiDocumenterPluginManifest';\nexport { MarkdownDocumenterAccessor } from './plugin/MarkdownDocumenterAccessor';\nexport {\n MarkdownDocumenterFeatureContext,\n IMarkdownDocumenterFeatureOnBeforeWritePageArgs,\n IMarkdownDocumenterFeatureOnFinishedArgs,\n MarkdownDocumenterFeature\n} from './plugin/MarkdownDocumenterFeature';\nexport { PluginFeature, PluginFeatureContext, PluginFeatureInitialization } from './plugin/PluginFeature';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"CustomMarkdownEmitter.js","sourceRoot":"","sources":["../../src/markdown/CustomMarkdownEmitter.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\r\n// See LICENSE in the project root for license information.\r\n\r\nimport colors from 'colors';\r\n\r\nimport type { DocNode, DocLinkTag, StringBuilder } from '@microsoft/tsdoc';\r\nimport type { ApiModel, IResolveDeclarationReferenceResult, ApiItem } from '@microsoft/api-extractor-model';\r\n\r\nimport { CustomDocNodeKind } from '../nodes/CustomDocNodeKind';\r\nimport type { DocHeading } from '../nodes/DocHeading';\r\nimport type { DocNoteBox } from '../nodes/DocNoteBox';\r\nimport type { DocTable } from '../nodes/DocTable';\r\nimport type { DocTableCell } from '../nodes/DocTableCell';\r\nimport type { DocEmphasisSpan } from '../nodes/DocEmphasisSpan';\r\nimport {\r\n MarkdownEmitter,\r\n type IMarkdownEmitterContext,\r\n type IMarkdownEmitterOptions\r\n} from './MarkdownEmitter';\r\nimport type { IndentedWriter } from '../utils/IndentedWriter';\r\n\r\nexport interface ICustomMarkdownEmitterOptions extends IMarkdownEmitterOptions {\r\n contextApiItem: ApiItem | undefined;\r\n\r\n onGetFilenameForApiItem: (apiItem: ApiItem) => string | undefined;\r\n}\r\n\r\nexport class CustomMarkdownEmitter extends MarkdownEmitter {\r\n private _apiModel: ApiModel;\r\n\r\n public constructor(apiModel: ApiModel) {\r\n super();\r\n\r\n this._apiModel = apiModel;\r\n }\r\n\r\n public emit(\r\n stringBuilder: StringBuilder,\r\n docNode: DocNode,\r\n options: ICustomMarkdownEmitterOptions\r\n ): string {\r\n return super.emit(stringBuilder, docNode, options);\r\n }\r\n\r\n /** @override */\r\n protected writeNode(docNode: DocNode, context: IMarkdownEmitterContext, docNodeSiblings: boolean): void {\r\n const writer: IndentedWriter = context.writer;\r\n\r\n switch (docNode.kind) {\r\n case CustomDocNodeKind.Heading: {\r\n const docHeading: DocHeading = docNode as DocHeading;\r\n writer.ensureSkippedLine();\r\n\r\n let prefix: string;\r\n switch (docHeading.level) {\r\n case 1:\r\n prefix = '##';\r\n break;\r\n case 2:\r\n prefix = '###';\r\n break;\r\n case 3:\r\n prefix = '###';\r\n break;\r\n default:\r\n prefix = '####';\r\n }\r\n\r\n writer.writeLine(prefix + ' ' + this.getEscapedText(docHeading.title));\r\n writer.writeLine();\r\n break;\r\n }\r\n case CustomDocNodeKind.NoteBox: {\r\n const docNoteBox: DocNoteBox = docNode as DocNoteBox;\r\n writer.ensureNewLine();\r\n\r\n writer.increaseIndent('> ');\r\n\r\n this.writeNode(docNoteBox.content, context, false);\r\n writer.ensureNewLine();\r\n\r\n writer.decreaseIndent();\r\n\r\n writer.writeLine();\r\n break;\r\n }\r\n case CustomDocNodeKind.Table: {\r\n const docTable: DocTable = docNode as DocTable;\r\n // GitHub's markdown renderer chokes on tables that don't have a blank line above them,\r\n // whereas VS Code's renderer is totally fine with it.\r\n writer.ensureSkippedLine();\r\n\r\n context.insideTable = true;\r\n\r\n // Markdown table rows can have inconsistent cell counts. Size the table based on the longest row.\r\n let columnCount: number = 0;\r\n if (docTable.header) {\r\n columnCount = docTable.header.cells.length;\r\n }\r\n for (const row of docTable.rows) {\r\n if (row.cells.length > columnCount) {\r\n columnCount = row.cells.length;\r\n }\r\n }\r\n\r\n // write the table header (which is required by Markdown)\r\n writer.write('| ');\r\n for (let i: number = 0; i < columnCount; ++i) {\r\n writer.write(' ');\r\n if (docTable.header) {\r\n const cell: DocTableCell | undefined = docTable.header.cells[i];\r\n if (cell) {\r\n this.writeNode(cell.content, context, false);\r\n }\r\n }\r\n writer.write(' |');\r\n }\r\n writer.writeLine();\r\n\r\n // write the divider\r\n writer.write('| ');\r\n for (let i: number = 0; i < columnCount; ++i) {\r\n writer.write(' --- |');\r\n }\r\n writer.writeLine();\r\n\r\n for (const row of docTable.rows) {\r\n writer.write('| ');\r\n for (const cell of row.cells) {\r\n writer.write(' ');\r\n this.writeNode(cell.content, context, false);\r\n writer.write(' |');\r\n }\r\n writer.writeLine();\r\n }\r\n writer.writeLine();\r\n\r\n context.insideTable = false;\r\n\r\n break;\r\n }\r\n case CustomDocNodeKind.EmphasisSpan: {\r\n const docEmphasisSpan: DocEmphasisSpan = docNode as DocEmphasisSpan;\r\n const oldBold: boolean = context.boldRequested;\r\n const oldItalic: boolean = context.italicRequested;\r\n context.boldRequested = docEmphasisSpan.bold;\r\n context.italicRequested = docEmphasisSpan.italic;\r\n this.writeNodes(docEmphasisSpan.nodes, context);\r\n context.boldRequested = oldBold;\r\n context.italicRequested = oldItalic;\r\n break;\r\n }\r\n default:\r\n super.writeNode(docNode, context, docNodeSiblings);\r\n }\r\n }\r\n\r\n /** @override */\r\n protected writeLinkTagWithCodeDestination(\r\n docLinkTag: DocLinkTag,\r\n context: IMarkdownEmitterContext<ICustomMarkdownEmitterOptions>\r\n ): void {\r\n const options: ICustomMarkdownEmitterOptions = context.options;\r\n\r\n const result: IResolveDeclarationReferenceResult = this._apiModel.resolveDeclarationReference(\r\n docLinkTag.codeDestination!,\r\n options.contextApiItem\r\n );\r\n\r\n if (result.resolvedApiItem) {\r\n const filename: string | undefined = options.onGetFilenameForApiItem(result.resolvedApiItem);\r\n\r\n if (filename) {\r\n let linkText: string = docLinkTag.linkText || '';\r\n if (linkText.length === 0) {\r\n // Generate a name such as Namespace1.Namespace2.MyClass.myMethod()\r\n linkText = result.resolvedApiItem.getScopedNameWithinPackage();\r\n }\r\n if (linkText.length > 0) {\r\n const encodedLinkText: string = this.getEscapedText(linkText.replace(/\\s+/g, ' '));\r\n\r\n context.writer.write('[');\r\n context.writer.write(encodedLinkText);\r\n context.writer.write(`](${filename!})`);\r\n } else {\r\n console.log(colors.yellow('WARNING: Unable to determine link text'));\r\n }\r\n }\r\n } else if (result.errorMessage) {\r\n console.log(\r\n colors.yellow(\r\n `WARNING: Unable to resolve reference \"${docLinkTag.codeDestination!.emitAsTsdoc()}\": ` +\r\n result.errorMessage\r\n )\r\n );\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"CustomMarkdownEmitter.js","sourceRoot":"","sources":["../../src/markdown/CustomMarkdownEmitter.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 colors from 'colors';\n\nimport type { DocNode, DocLinkTag, StringBuilder } from '@microsoft/tsdoc';\nimport type { ApiModel, IResolveDeclarationReferenceResult, ApiItem } from '@microsoft/api-extractor-model';\n\nimport { CustomDocNodeKind } from '../nodes/CustomDocNodeKind';\nimport type { DocHeading } from '../nodes/DocHeading';\nimport type { DocNoteBox } from '../nodes/DocNoteBox';\nimport type { DocTable } from '../nodes/DocTable';\nimport type { DocTableCell } from '../nodes/DocTableCell';\nimport type { DocEmphasisSpan } from '../nodes/DocEmphasisSpan';\nimport {\n MarkdownEmitter,\n type IMarkdownEmitterContext,\n type IMarkdownEmitterOptions\n} from './MarkdownEmitter';\nimport type { IndentedWriter } from '../utils/IndentedWriter';\n\nexport interface ICustomMarkdownEmitterOptions extends IMarkdownEmitterOptions {\n contextApiItem: ApiItem | undefined;\n\n onGetFilenameForApiItem: (apiItem: ApiItem) => string | undefined;\n}\n\nexport class CustomMarkdownEmitter extends MarkdownEmitter {\n private _apiModel: ApiModel;\n\n public constructor(apiModel: ApiModel) {\n super();\n\n this._apiModel = apiModel;\n }\n\n public emit(\n stringBuilder: StringBuilder,\n docNode: DocNode,\n options: ICustomMarkdownEmitterOptions\n ): string {\n return super.emit(stringBuilder, docNode, options);\n }\n\n /** @override */\n protected writeNode(docNode: DocNode, context: IMarkdownEmitterContext, docNodeSiblings: boolean): void {\n const writer: IndentedWriter = context.writer;\n\n switch (docNode.kind) {\n case CustomDocNodeKind.Heading: {\n const docHeading: DocHeading = docNode as DocHeading;\n writer.ensureSkippedLine();\n\n let prefix: string;\n switch (docHeading.level) {\n case 1:\n prefix = '##';\n break;\n case 2:\n prefix = '###';\n break;\n case 3:\n prefix = '###';\n break;\n default:\n prefix = '####';\n }\n\n writer.writeLine(prefix + ' ' + this.getEscapedText(docHeading.title));\n writer.writeLine();\n break;\n }\n case CustomDocNodeKind.NoteBox: {\n const docNoteBox: DocNoteBox = docNode as DocNoteBox;\n writer.ensureNewLine();\n\n writer.increaseIndent('> ');\n\n this.writeNode(docNoteBox.content, context, false);\n writer.ensureNewLine();\n\n writer.decreaseIndent();\n\n writer.writeLine();\n break;\n }\n case CustomDocNodeKind.Table: {\n const docTable: DocTable = docNode as DocTable;\n // GitHub's markdown renderer chokes on tables that don't have a blank line above them,\n // whereas VS Code's renderer is totally fine with it.\n writer.ensureSkippedLine();\n\n context.insideTable = true;\n\n // Markdown table rows can have inconsistent cell counts. Size the table based on the longest row.\n let columnCount: number = 0;\n if (docTable.header) {\n columnCount = docTable.header.cells.length;\n }\n for (const row of docTable.rows) {\n if (row.cells.length > columnCount) {\n columnCount = row.cells.length;\n }\n }\n\n // write the table header (which is required by Markdown)\n writer.write('| ');\n for (let i: number = 0; i < columnCount; ++i) {\n writer.write(' ');\n if (docTable.header) {\n const cell: DocTableCell | undefined = docTable.header.cells[i];\n if (cell) {\n this.writeNode(cell.content, context, false);\n }\n }\n writer.write(' |');\n }\n writer.writeLine();\n\n // write the divider\n writer.write('| ');\n for (let i: number = 0; i < columnCount; ++i) {\n writer.write(' --- |');\n }\n writer.writeLine();\n\n for (const row of docTable.rows) {\n writer.write('| ');\n for (const cell of row.cells) {\n writer.write(' ');\n this.writeNode(cell.content, context, false);\n writer.write(' |');\n }\n writer.writeLine();\n }\n writer.writeLine();\n\n context.insideTable = false;\n\n break;\n }\n case CustomDocNodeKind.EmphasisSpan: {\n const docEmphasisSpan: DocEmphasisSpan = docNode as DocEmphasisSpan;\n const oldBold: boolean = context.boldRequested;\n const oldItalic: boolean = context.italicRequested;\n context.boldRequested = docEmphasisSpan.bold;\n context.italicRequested = docEmphasisSpan.italic;\n this.writeNodes(docEmphasisSpan.nodes, context);\n context.boldRequested = oldBold;\n context.italicRequested = oldItalic;\n break;\n }\n default:\n super.writeNode(docNode, context, docNodeSiblings);\n }\n }\n\n /** @override */\n protected writeLinkTagWithCodeDestination(\n docLinkTag: DocLinkTag,\n context: IMarkdownEmitterContext<ICustomMarkdownEmitterOptions>\n ): void {\n const options: ICustomMarkdownEmitterOptions = context.options;\n\n const result: IResolveDeclarationReferenceResult = this._apiModel.resolveDeclarationReference(\n docLinkTag.codeDestination!,\n options.contextApiItem\n );\n\n if (result.resolvedApiItem) {\n const filename: string | undefined = options.onGetFilenameForApiItem(result.resolvedApiItem);\n\n if (filename) {\n let linkText: string = docLinkTag.linkText || '';\n if (linkText.length === 0) {\n // Generate a name such as Namespace1.Namespace2.MyClass.myMethod()\n linkText = result.resolvedApiItem.getScopedNameWithinPackage();\n }\n if (linkText.length > 0) {\n const encodedLinkText: string = this.getEscapedText(linkText.replace(/\\s+/g, ' '));\n\n context.writer.write('[');\n context.writer.write(encodedLinkText);\n context.writer.write(`](${filename!})`);\n } else {\n console.log(colors.yellow('WARNING: Unable to determine link text'));\n }\n }\n } else if (result.errorMessage) {\n console.log(\n colors.yellow(\n `WARNING: Unable to resolve reference \"${docLinkTag.codeDestination!.emitAsTsdoc()}\": ` +\n result.errorMessage\n )\n );\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownEmitter.js","sourceRoot":"","sources":["../../src/markdown/MarkdownEmitter.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\r\n// See LICENSE in the project root for license information.\r\n\r\nimport {\r\n type DocNode,\r\n DocNodeKind,\r\n type StringBuilder,\r\n type DocPlainText,\r\n type DocHtmlStartTag,\r\n type DocHtmlEndTag,\r\n type DocCodeSpan,\r\n type DocLinkTag,\r\n type DocParagraph,\r\n type DocFencedCode,\r\n type DocSection,\r\n DocNodeTransforms,\r\n type DocEscapedText,\r\n type DocErrorText,\r\n type DocBlockTag\r\n} from '@microsoft/tsdoc';\r\nimport { InternalError } from '@rushstack/node-core-library';\r\n\r\nimport { IndentedWriter } from '../utils/IndentedWriter';\r\n\r\nexport interface IMarkdownEmitterOptions {}\r\n\r\nexport interface IMarkdownEmitterContext<TOptions = IMarkdownEmitterOptions> {\r\n writer: IndentedWriter;\r\n insideTable: boolean;\r\n\r\n boldRequested: boolean;\r\n italicRequested: boolean;\r\n\r\n writingBold: boolean;\r\n writingItalic: boolean;\r\n\r\n options: TOptions;\r\n}\r\n\r\n/**\r\n * Renders MarkupElement content in the Markdown file format.\r\n * For more info: https://en.wikipedia.org/wiki/Markdown\r\n */\r\nexport class MarkdownEmitter {\r\n public emit(stringBuilder: StringBuilder, docNode: DocNode, options: IMarkdownEmitterOptions): string {\r\n const writer: IndentedWriter = new IndentedWriter(stringBuilder);\r\n\r\n const context: IMarkdownEmitterContext = {\r\n writer,\r\n insideTable: false,\r\n\r\n boldRequested: false,\r\n italicRequested: false,\r\n\r\n writingBold: false,\r\n writingItalic: false,\r\n\r\n options\r\n };\r\n\r\n this.writeNode(docNode, context, false);\r\n\r\n writer.ensureNewLine(); // finish the last line\r\n\r\n return writer.toString();\r\n }\r\n\r\n protected getEscapedText(text: string): string {\r\n const textWithBackslashes: string = text\r\n .replace(/\\\\/g, '\\\\\\\\') // first replace the escape character\r\n .replace(/[*#[\\]_|`~]/g, (x) => '\\\\' + x) // then escape any special characters\r\n .replace(/---/g, '\\\\-\\\\-\\\\-') // hyphens only if it's 3 or more\r\n .replace(/&/g, '&amp;')\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;');\r\n return textWithBackslashes;\r\n }\r\n\r\n protected getTableEscapedText(text: string): string {\r\n return text\r\n .replace(/&/g, '&amp;')\r\n .replace(/\"/g, '&quot;')\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\\|/g, '&#124;');\r\n }\r\n\r\n /**\r\n * @virtual\r\n */\r\n protected writeNode(docNode: DocNode, context: IMarkdownEmitterContext, docNodeSiblings: boolean): void {\r\n const writer: IndentedWriter = context.writer;\r\n\r\n switch (docNode.kind) {\r\n case DocNodeKind.PlainText: {\r\n const docPlainText: DocPlainText = docNode as DocPlainText;\r\n this.writePlainText(docPlainText.text, context);\r\n break;\r\n }\r\n case DocNodeKind.HtmlStartTag:\r\n case DocNodeKind.HtmlEndTag: {\r\n const docHtmlTag: DocHtmlStartTag | DocHtmlEndTag = docNode as DocHtmlStartTag | DocHtmlEndTag;\r\n // write the HTML element verbatim into the output\r\n writer.write(docHtmlTag.emitAsHtml());\r\n break;\r\n }\r\n case DocNodeKind.CodeSpan: {\r\n const docCodeSpan: DocCodeSpan = docNode as DocCodeSpan;\r\n if (context.insideTable) {\r\n writer.write('<code>');\r\n } else {\r\n writer.write('`');\r\n }\r\n if (context.insideTable) {\r\n const code: string = this.getTableEscapedText(docCodeSpan.code);\r\n const parts: string[] = code.split(/\\r?\\n/g);\r\n writer.write(parts.join('</code><br/><code>'));\r\n } else {\r\n writer.write(docCodeSpan.code);\r\n }\r\n if (context.insideTable) {\r\n writer.write('</code>');\r\n } else {\r\n writer.write('`');\r\n }\r\n break;\r\n }\r\n case DocNodeKind.LinkTag: {\r\n const docLinkTag: DocLinkTag = docNode as DocLinkTag;\r\n if (docLinkTag.codeDestination) {\r\n this.writeLinkTagWithCodeDestination(docLinkTag, context);\r\n } else if (docLinkTag.urlDestination) {\r\n this.writeLinkTagWithUrlDestination(docLinkTag, context);\r\n } else if (docLinkTag.linkText) {\r\n this.writePlainText(docLinkTag.linkText, context);\r\n }\r\n break;\r\n }\r\n case DocNodeKind.Paragraph: {\r\n const docParagraph: DocParagraph = docNode as DocParagraph;\r\n const trimmedParagraph: DocParagraph = DocNodeTransforms.trimSpacesInParagraph(docParagraph);\r\n if (context.insideTable) {\r\n if (docNodeSiblings) {\r\n // This tentative write is necessary to avoid writing empty paragraph tags (i.e. `<p></p>`). At the\r\n // time this code runs, we do not know whether the `writeNodes` call below will actually write\r\n // anything. Thus, we want to only write a `<p>` tag (as well as eventually a corresponding\r\n // `</p>` tag) if something ends up being written within the tags.\r\n writer.writeTentative('<p>', '</p>', () => {\r\n this.writeNodes(trimmedParagraph.nodes, context);\r\n });\r\n } else {\r\n // Special case: If we are the only element inside this table cell, then we can omit the <p></p> container.\r\n this.writeNodes(trimmedParagraph.nodes, context);\r\n }\r\n } else {\r\n this.writeNodes(trimmedParagraph.nodes, context);\r\n writer.ensureNewLine();\r\n writer.writeLine();\r\n }\r\n break;\r\n }\r\n case DocNodeKind.FencedCode: {\r\n const docFencedCode: DocFencedCode = docNode as DocFencedCode;\r\n writer.ensureNewLine();\r\n writer.write('```');\r\n writer.write(docFencedCode.language);\r\n writer.writeLine();\r\n writer.write(docFencedCode.code);\r\n writer.ensureNewLine();\r\n writer.writeLine('```');\r\n break;\r\n }\r\n case DocNodeKind.Section: {\r\n const docSection: DocSection = docNode as DocSection;\r\n this.writeNodes(docSection.nodes, context);\r\n break;\r\n }\r\n case DocNodeKind.SoftBreak: {\r\n if (!/^\\s?$/.test(writer.peekLastCharacter())) {\r\n writer.write(' ');\r\n }\r\n break;\r\n }\r\n case DocNodeKind.EscapedText: {\r\n const docEscapedText: DocEscapedText = docNode as DocEscapedText;\r\n this.writePlainText(docEscapedText.decodedText, context);\r\n break;\r\n }\r\n case DocNodeKind.ErrorText: {\r\n const docErrorText: DocErrorText = docNode as DocErrorText;\r\n this.writePlainText(docErrorText.text, context);\r\n break;\r\n }\r\n case DocNodeKind.InlineTag: {\r\n break;\r\n }\r\n case DocNodeKind.BlockTag: {\r\n const tagNode: DocBlockTag = docNode as DocBlockTag;\r\n console.warn('Unsupported block tag: ' + tagNode.tagName);\r\n break;\r\n }\r\n default:\r\n throw new InternalError('Unsupported DocNodeKind kind: ' + docNode.kind);\r\n }\r\n }\r\n\r\n /** @virtual */\r\n protected writeLinkTagWithCodeDestination(docLinkTag: DocLinkTag, context: IMarkdownEmitterContext): void {\r\n // The subclass needs to implement this to support code destinations\r\n throw new InternalError('writeLinkTagWithCodeDestination()');\r\n }\r\n\r\n /** @virtual */\r\n protected writeLinkTagWithUrlDestination(docLinkTag: DocLinkTag, context: IMarkdownEmitterContext): void {\r\n const linkText: string =\r\n docLinkTag.linkText !== undefined ? docLinkTag.linkText : docLinkTag.urlDestination!;\r\n\r\n const encodedLinkText: string = this.getEscapedText(linkText.replace(/\\s+/g, ' '));\r\n\r\n context.writer.write('[');\r\n context.writer.write(encodedLinkText);\r\n context.writer.write(`](${docLinkTag.urlDestination!})`);\r\n }\r\n\r\n protected writePlainText(text: string, context: IMarkdownEmitterContext): void {\r\n const writer: IndentedWriter = context.writer;\r\n\r\n // split out the [ leading whitespace, content, trailing whitespace ]\r\n const parts: string[] = text.match(/^(\\s*)(.*?)(\\s*)$/) || [];\r\n\r\n writer.write(parts[1]); // write leading whitespace\r\n\r\n const middle: string = parts[2];\r\n\r\n if (middle !== '') {\r\n switch (writer.peekLastCharacter()) {\r\n case '':\r\n case '\\n':\r\n case ' ':\r\n case '[':\r\n case '>':\r\n // okay to put a symbol\r\n break;\r\n default:\r\n // This is no problem: \"**one** *two* **three**\"\r\n // But this is trouble: \"**one***two***three**\"\r\n // The most general solution: \"**one**<!-- -->*two*<!-- -->**three**\"\r\n writer.write('<!-- -->');\r\n break;\r\n }\r\n\r\n if (context.boldRequested) {\r\n writer.write('**');\r\n }\r\n if (context.italicRequested) {\r\n writer.write('_');\r\n }\r\n\r\n writer.write(this.getEscapedText(middle));\r\n\r\n if (context.italicRequested) {\r\n writer.write('_');\r\n }\r\n if (context.boldRequested) {\r\n writer.write('**');\r\n }\r\n }\r\n\r\n writer.write(parts[3]); // write trailing whitespace\r\n }\r\n\r\n protected writeNodes(docNodes: ReadonlyArray<DocNode>, context: IMarkdownEmitterContext): void {\r\n for (const docNode of docNodes) {\r\n this.writeNode(docNode, context, docNodes.length > 1);\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"MarkdownEmitter.js","sourceRoot":"","sources":["../../src/markdown/MarkdownEmitter.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 {\n type DocNode,\n DocNodeKind,\n type StringBuilder,\n type DocPlainText,\n type DocHtmlStartTag,\n type DocHtmlEndTag,\n type DocCodeSpan,\n type DocLinkTag,\n type DocParagraph,\n type DocFencedCode,\n type DocSection,\n DocNodeTransforms,\n type DocEscapedText,\n type DocErrorText,\n type DocBlockTag\n} from '@microsoft/tsdoc';\nimport { InternalError } from '@rushstack/node-core-library';\n\nimport { IndentedWriter } from '../utils/IndentedWriter';\n\nexport interface IMarkdownEmitterOptions {}\n\nexport interface IMarkdownEmitterContext<TOptions = IMarkdownEmitterOptions> {\n writer: IndentedWriter;\n insideTable: boolean;\n\n boldRequested: boolean;\n italicRequested: boolean;\n\n writingBold: boolean;\n writingItalic: boolean;\n\n options: TOptions;\n}\n\n/**\n * Renders MarkupElement content in the Markdown file format.\n * For more info: https://en.wikipedia.org/wiki/Markdown\n */\nexport class MarkdownEmitter {\n public emit(stringBuilder: StringBuilder, docNode: DocNode, options: IMarkdownEmitterOptions): string {\n const writer: IndentedWriter = new IndentedWriter(stringBuilder);\n\n const context: IMarkdownEmitterContext = {\n writer,\n insideTable: false,\n\n boldRequested: false,\n italicRequested: false,\n\n writingBold: false,\n writingItalic: false,\n\n options\n };\n\n this.writeNode(docNode, context, false);\n\n writer.ensureNewLine(); // finish the last line\n\n return writer.toString();\n }\n\n protected getEscapedText(text: string): string {\n const textWithBackslashes: string = text\n .replace(/\\\\/g, '\\\\\\\\') // first replace the escape character\n .replace(/[*#[\\]_|`~]/g, (x) => '\\\\' + x) // then escape any special characters\n .replace(/---/g, '\\\\-\\\\-\\\\-') // hyphens only if it's 3 or more\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;');\n return textWithBackslashes;\n }\n\n protected getTableEscapedText(text: string): string {\n return text\n .replace(/&/g, '&amp;')\n .replace(/\"/g, '&quot;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\\|/g, '&#124;');\n }\n\n /**\n * @virtual\n */\n protected writeNode(docNode: DocNode, context: IMarkdownEmitterContext, docNodeSiblings: boolean): void {\n const writer: IndentedWriter = context.writer;\n\n switch (docNode.kind) {\n case DocNodeKind.PlainText: {\n const docPlainText: DocPlainText = docNode as DocPlainText;\n this.writePlainText(docPlainText.text, context);\n break;\n }\n case DocNodeKind.HtmlStartTag:\n case DocNodeKind.HtmlEndTag: {\n const docHtmlTag: DocHtmlStartTag | DocHtmlEndTag = docNode as DocHtmlStartTag | DocHtmlEndTag;\n // write the HTML element verbatim into the output\n writer.write(docHtmlTag.emitAsHtml());\n break;\n }\n case DocNodeKind.CodeSpan: {\n const docCodeSpan: DocCodeSpan = docNode as DocCodeSpan;\n if (context.insideTable) {\n writer.write('<code>');\n } else {\n writer.write('`');\n }\n if (context.insideTable) {\n const code: string = this.getTableEscapedText(docCodeSpan.code);\n const parts: string[] = code.split(/\\r?\\n/g);\n writer.write(parts.join('</code><br/><code>'));\n } else {\n writer.write(docCodeSpan.code);\n }\n if (context.insideTable) {\n writer.write('</code>');\n } else {\n writer.write('`');\n }\n break;\n }\n case DocNodeKind.LinkTag: {\n const docLinkTag: DocLinkTag = docNode as DocLinkTag;\n if (docLinkTag.codeDestination) {\n this.writeLinkTagWithCodeDestination(docLinkTag, context);\n } else if (docLinkTag.urlDestination) {\n this.writeLinkTagWithUrlDestination(docLinkTag, context);\n } else if (docLinkTag.linkText) {\n this.writePlainText(docLinkTag.linkText, context);\n }\n break;\n }\n case DocNodeKind.Paragraph: {\n const docParagraph: DocParagraph = docNode as DocParagraph;\n const trimmedParagraph: DocParagraph = DocNodeTransforms.trimSpacesInParagraph(docParagraph);\n if (context.insideTable) {\n if (docNodeSiblings) {\n // This tentative write is necessary to avoid writing empty paragraph tags (i.e. `<p></p>`). At the\n // time this code runs, we do not know whether the `writeNodes` call below will actually write\n // anything. Thus, we want to only write a `<p>` tag (as well as eventually a corresponding\n // `</p>` tag) if something ends up being written within the tags.\n writer.writeTentative('<p>', '</p>', () => {\n this.writeNodes(trimmedParagraph.nodes, context);\n });\n } else {\n // Special case: If we are the only element inside this table cell, then we can omit the <p></p> container.\n this.writeNodes(trimmedParagraph.nodes, context);\n }\n } else {\n this.writeNodes(trimmedParagraph.nodes, context);\n writer.ensureNewLine();\n writer.writeLine();\n }\n break;\n }\n case DocNodeKind.FencedCode: {\n const docFencedCode: DocFencedCode = docNode as DocFencedCode;\n writer.ensureNewLine();\n writer.write('```');\n writer.write(docFencedCode.language);\n writer.writeLine();\n writer.write(docFencedCode.code);\n writer.ensureNewLine();\n writer.writeLine('```');\n break;\n }\n case DocNodeKind.Section: {\n const docSection: DocSection = docNode as DocSection;\n this.writeNodes(docSection.nodes, context);\n break;\n }\n case DocNodeKind.SoftBreak: {\n if (!/^\\s?$/.test(writer.peekLastCharacter())) {\n writer.write(' ');\n }\n break;\n }\n case DocNodeKind.EscapedText: {\n const docEscapedText: DocEscapedText = docNode as DocEscapedText;\n this.writePlainText(docEscapedText.decodedText, context);\n break;\n }\n case DocNodeKind.ErrorText: {\n const docErrorText: DocErrorText = docNode as DocErrorText;\n this.writePlainText(docErrorText.text, context);\n break;\n }\n case DocNodeKind.InlineTag: {\n break;\n }\n case DocNodeKind.BlockTag: {\n const tagNode: DocBlockTag = docNode as DocBlockTag;\n console.warn('Unsupported block tag: ' + tagNode.tagName);\n break;\n }\n default:\n throw new InternalError('Unsupported DocNodeKind kind: ' + docNode.kind);\n }\n }\n\n /** @virtual */\n protected writeLinkTagWithCodeDestination(docLinkTag: DocLinkTag, context: IMarkdownEmitterContext): void {\n // The subclass needs to implement this to support code destinations\n throw new InternalError('writeLinkTagWithCodeDestination()');\n }\n\n /** @virtual */\n protected writeLinkTagWithUrlDestination(docLinkTag: DocLinkTag, context: IMarkdownEmitterContext): void {\n const linkText: string =\n docLinkTag.linkText !== undefined ? docLinkTag.linkText : docLinkTag.urlDestination!;\n\n const encodedLinkText: string = this.getEscapedText(linkText.replace(/\\s+/g, ' '));\n\n context.writer.write('[');\n context.writer.write(encodedLinkText);\n context.writer.write(`](${docLinkTag.urlDestination!})`);\n }\n\n protected writePlainText(text: string, context: IMarkdownEmitterContext): void {\n const writer: IndentedWriter = context.writer;\n\n // split out the [ leading whitespace, content, trailing whitespace ]\n const parts: string[] = text.match(/^(\\s*)(.*?)(\\s*)$/) || [];\n\n writer.write(parts[1]); // write leading whitespace\n\n const middle: string = parts[2];\n\n if (middle !== '') {\n switch (writer.peekLastCharacter()) {\n case '':\n case '\\n':\n case ' ':\n case '[':\n case '>':\n // okay to put a symbol\n break;\n default:\n // This is no problem: \"**one** *two* **three**\"\n // But this is trouble: \"**one***two***three**\"\n // The most general solution: \"**one**<!-- -->*two*<!-- -->**three**\"\n writer.write('<!-- -->');\n break;\n }\n\n if (context.boldRequested) {\n writer.write('**');\n }\n if (context.italicRequested) {\n writer.write('_');\n }\n\n writer.write(this.getEscapedText(middle));\n\n if (context.italicRequested) {\n writer.write('_');\n }\n if (context.boldRequested) {\n writer.write('**');\n }\n }\n\n writer.write(parts[3]); // write trailing whitespace\n }\n\n protected writeNodes(docNodes: ReadonlyArray<DocNode>, context: IMarkdownEmitterContext): void {\n for (const docNode of docNodes) {\n this.writeNode(docNode, context, docNodes.length > 1);\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"CustomDocNodeKind.js","sourceRoot":"","sources":["../../src/nodes/CustomDocNodeKind.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,4CAAmE;AACnE,uDAAoD;AACpD,6CAA0C;AAC1C,6CAA0C;AAC1C,yCAAsC;AACtC,iDAA8C;AAC9C,+CAA4C;AAc5C,MAAa,cAAc;IAGlB,MAAM,KAAK,aAAa;QAC7B,IAAI,cAAc,CAAC,cAAc,KAAK,SAAS,EAAE;YAC/C,MAAM,aAAa,GAAuB,IAAI,0BAAkB,EAAE,CAAC;YAEnE,aAAa,CAAC,cAAc,CAAC,gBAAgB,CAAC,4BAA4B,EAAE;gBAC1E,EAAE,WAAW,qDAAgC,EAAE,WAAW,EAAE,iCAAe,EAAE;gBAC7E,EAAE,WAAW,2CAA2B,EAAE,WAAW,EAAE,uBAAU,EAAE;gBACnE,EAAE,WAAW,2CAA2B,EAAE,WAAW,EAAE,uBAAU,EAAE;gBACnE,EAAE,WAAW,uCAAyB,EAAE,WAAW,EAAE,mBAAQ,EAAE;gBAC/D,EAAE,WAAW,+CAA6B,EAAE,WAAW,EAAE,2BAAY,EAAE;gBACvE,EAAE,WAAW,6CAA4B,EAAE,WAAW,EAAE,yBAAW,EAAE;aACtE,CAAC,CAAC;YAEH,aAAa,CAAC,cAAc,CAAC,yBAAyB,sDAAiC;gBACrF,mBAAW,CAAC,SAAS;gBACrB,mBAAW,CAAC,SAAS;aACtB,CAAC,CAAC;YAEH,aAAa,CAAC,cAAc,CAAC,yBAAyB,CAAC,mBAAW,CAAC,OAAO,EAAE;;;;aAI3E,CAAC,CAAC;YAEH,aAAa,CAAC,cAAc,CAAC,yBAAyB,CAAC,mBAAW,CAAC,SAAS,EAAE;;aAE7E,CAAC,CAAC;YAEH,cAAc,CAAC,cAAc,GAAG,aAAa,CAAC;SAC/C;QACD,OAAO,cAAc,CAAC,cAAc,CAAC;IACvC,CAAC;CACF;AAnCD,wCAmCC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\r\n// See LICENSE in the project root for license information.\r\n\r\nimport { TSDocConfiguration, DocNodeKind } from '@microsoft/tsdoc';\r\nimport { DocEmphasisSpan } from './DocEmphasisSpan';\r\nimport { DocHeading } from './DocHeading';\r\nimport { DocNoteBox } from './DocNoteBox';\r\nimport { DocTable } from './DocTable';\r\nimport { DocTableCell } from './DocTableCell';\r\nimport { DocTableRow } from './DocTableRow';\r\n\r\n/**\r\n * Identifies custom subclasses of {@link DocNode}.\r\n */\r\nexport const enum CustomDocNodeKind {\r\n EmphasisSpan = 'EmphasisSpan',\r\n Heading = 'Heading',\r\n NoteBox = 'NoteBox',\r\n Table = 'Table',\r\n TableCell = 'TableCell',\r\n TableRow = 'TableRow'\r\n}\r\n\r\nexport class CustomDocNodes {\r\n private static _configuration: TSDocConfiguration | undefined;\r\n\r\n public static get configuration(): TSDocConfiguration {\r\n if (CustomDocNodes._configuration === undefined) {\r\n const configuration: TSDocConfiguration = new TSDocConfiguration();\r\n\r\n configuration.docNodeManager.registerDocNodes('@micrososft/api-documenter', [\r\n { docNodeKind: CustomDocNodeKind.EmphasisSpan, constructor: DocEmphasisSpan },\r\n { docNodeKind: CustomDocNodeKind.Heading, constructor: DocHeading },\r\n { docNodeKind: CustomDocNodeKind.NoteBox, constructor: DocNoteBox },\r\n { docNodeKind: CustomDocNodeKind.Table, constructor: DocTable },\r\n { docNodeKind: CustomDocNodeKind.TableCell, constructor: DocTableCell },\r\n { docNodeKind: CustomDocNodeKind.TableRow, constructor: DocTableRow }\r\n ]);\r\n\r\n configuration.docNodeManager.registerAllowableChildren(CustomDocNodeKind.EmphasisSpan, [\r\n DocNodeKind.PlainText,\r\n DocNodeKind.SoftBreak\r\n ]);\r\n\r\n configuration.docNodeManager.registerAllowableChildren(DocNodeKind.Section, [\r\n CustomDocNodeKind.Heading,\r\n CustomDocNodeKind.NoteBox,\r\n CustomDocNodeKind.Table\r\n ]);\r\n\r\n configuration.docNodeManager.registerAllowableChildren(DocNodeKind.Paragraph, [\r\n CustomDocNodeKind.EmphasisSpan\r\n ]);\r\n\r\n CustomDocNodes._configuration = configuration;\r\n }\r\n return CustomDocNodes._configuration;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"CustomDocNodeKind.js","sourceRoot":"","sources":["../../src/nodes/CustomDocNodeKind.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,4CAAmE;AACnE,uDAAoD;AACpD,6CAA0C;AAC1C,6CAA0C;AAC1C,yCAAsC;AACtC,iDAA8C;AAC9C,+CAA4C;AAc5C,MAAa,cAAc;IAGlB,MAAM,KAAK,aAAa;QAC7B,IAAI,cAAc,CAAC,cAAc,KAAK,SAAS,EAAE;YAC/C,MAAM,aAAa,GAAuB,IAAI,0BAAkB,EAAE,CAAC;YAEnE,aAAa,CAAC,cAAc,CAAC,gBAAgB,CAAC,4BAA4B,EAAE;gBAC1E,EAAE,WAAW,qDAAgC,EAAE,WAAW,EAAE,iCAAe,EAAE;gBAC7E,EAAE,WAAW,2CAA2B,EAAE,WAAW,EAAE,uBAAU,EAAE;gBACnE,EAAE,WAAW,2CAA2B,EAAE,WAAW,EAAE,uBAAU,EAAE;gBACnE,EAAE,WAAW,uCAAyB,EAAE,WAAW,EAAE,mBAAQ,EAAE;gBAC/D,EAAE,WAAW,+CAA6B,EAAE,WAAW,EAAE,2BAAY,EAAE;gBACvE,EAAE,WAAW,6CAA4B,EAAE,WAAW,EAAE,yBAAW,EAAE;aACtE,CAAC,CAAC;YAEH,aAAa,CAAC,cAAc,CAAC,yBAAyB,sDAAiC;gBACrF,mBAAW,CAAC,SAAS;gBACrB,mBAAW,CAAC,SAAS;aACtB,CAAC,CAAC;YAEH,aAAa,CAAC,cAAc,CAAC,yBAAyB,CAAC,mBAAW,CAAC,OAAO,EAAE;;;;aAI3E,CAAC,CAAC;YAEH,aAAa,CAAC,cAAc,CAAC,yBAAyB,CAAC,mBAAW,CAAC,SAAS,EAAE;;aAE7E,CAAC,CAAC;YAEH,cAAc,CAAC,cAAc,GAAG,aAAa,CAAC;SAC/C;QACD,OAAO,cAAc,CAAC,cAAc,CAAC;IACvC,CAAC;CACF;AAnCD,wCAmCC","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 { TSDocConfiguration, DocNodeKind } from '@microsoft/tsdoc';\nimport { DocEmphasisSpan } from './DocEmphasisSpan';\nimport { DocHeading } from './DocHeading';\nimport { DocNoteBox } from './DocNoteBox';\nimport { DocTable } from './DocTable';\nimport { DocTableCell } from './DocTableCell';\nimport { DocTableRow } from './DocTableRow';\n\n/**\n * Identifies custom subclasses of {@link DocNode}.\n */\nexport const enum CustomDocNodeKind {\n EmphasisSpan = 'EmphasisSpan',\n Heading = 'Heading',\n NoteBox = 'NoteBox',\n Table = 'Table',\n TableCell = 'TableCell',\n TableRow = 'TableRow'\n}\n\nexport class CustomDocNodes {\n private static _configuration: TSDocConfiguration | undefined;\n\n public static get configuration(): TSDocConfiguration {\n if (CustomDocNodes._configuration === undefined) {\n const configuration: TSDocConfiguration = new TSDocConfiguration();\n\n configuration.docNodeManager.registerDocNodes('@micrososft/api-documenter', [\n { docNodeKind: CustomDocNodeKind.EmphasisSpan, constructor: DocEmphasisSpan },\n { docNodeKind: CustomDocNodeKind.Heading, constructor: DocHeading },\n { docNodeKind: CustomDocNodeKind.NoteBox, constructor: DocNoteBox },\n { docNodeKind: CustomDocNodeKind.Table, constructor: DocTable },\n { docNodeKind: CustomDocNodeKind.TableCell, constructor: DocTableCell },\n { docNodeKind: CustomDocNodeKind.TableRow, constructor: DocTableRow }\n ]);\n\n configuration.docNodeManager.registerAllowableChildren(CustomDocNodeKind.EmphasisSpan, [\n DocNodeKind.PlainText,\n DocNodeKind.SoftBreak\n ]);\n\n configuration.docNodeManager.registerAllowableChildren(DocNodeKind.Section, [\n CustomDocNodeKind.Heading,\n CustomDocNodeKind.NoteBox,\n CustomDocNodeKind.Table\n ]);\n\n configuration.docNodeManager.registerAllowableChildren(DocNodeKind.Paragraph, [\n CustomDocNodeKind.EmphasisSpan\n ]);\n\n CustomDocNodes._configuration = configuration;\n }\n return CustomDocNodes._configuration;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DocEmphasisSpan.js","sourceRoot":"","sources":["../../src/nodes/DocEmphasisSpan.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,4CAAoG;AAWpG;;;GAGG;AACH,MAAa,eAAgB,SAAQ,wBAAgB;IAInD,YAAmB,UAAsC,EAAE,QAAoB;QAC7E,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;IACpC,CAAC;IAED,gBAAgB;IAChB,IAAW,IAAI;QACb,2DAAsC;IACxC,CAAC;CACF;AAdD,0CAcC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\r\n// See LICENSE in the project root for license information.\r\n\r\nimport { type DocNode, DocNodeContainer, type IDocNodeContainerParameters } from '@microsoft/tsdoc';\r\nimport { CustomDocNodeKind } from './CustomDocNodeKind';\r\n\r\n/**\r\n * Constructor parameters for {@link DocEmphasisSpan}.\r\n */\r\nexport interface IDocEmphasisSpanParameters extends IDocNodeContainerParameters {\r\n bold?: boolean;\r\n italic?: boolean;\r\n}\r\n\r\n/**\r\n * Represents a span of text that is styled with CommonMark emphasis (italics), strong emphasis (boldface),\r\n * or both.\r\n */\r\nexport class DocEmphasisSpan extends DocNodeContainer {\r\n public readonly bold: boolean;\r\n public readonly italic: boolean;\r\n\r\n public constructor(parameters: IDocEmphasisSpanParameters, children?: DocNode[]) {\r\n super(parameters, children);\r\n this.bold = !!parameters.bold;\r\n this.italic = !!parameters.italic;\r\n }\r\n\r\n /** @override */\r\n public get kind(): string {\r\n return CustomDocNodeKind.EmphasisSpan;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"DocEmphasisSpan.js","sourceRoot":"","sources":["../../src/nodes/DocEmphasisSpan.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,4CAAoG;AAWpG;;;GAGG;AACH,MAAa,eAAgB,SAAQ,wBAAgB;IAInD,YAAmB,UAAsC,EAAE,QAAoB;QAC7E,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;IACpC,CAAC;IAED,gBAAgB;IAChB,IAAW,IAAI;QACb,2DAAsC;IACxC,CAAC;CACF;AAdD,0CAcC","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 { type DocNode, DocNodeContainer, type IDocNodeContainerParameters } from '@microsoft/tsdoc';\nimport { CustomDocNodeKind } from './CustomDocNodeKind';\n\n/**\n * Constructor parameters for {@link DocEmphasisSpan}.\n */\nexport interface IDocEmphasisSpanParameters extends IDocNodeContainerParameters {\n bold?: boolean;\n italic?: boolean;\n}\n\n/**\n * Represents a span of text that is styled with CommonMark emphasis (italics), strong emphasis (boldface),\n * or both.\n */\nexport class DocEmphasisSpan extends DocNodeContainer {\n public readonly bold: boolean;\n public readonly italic: boolean;\n\n public constructor(parameters: IDocEmphasisSpanParameters, children?: DocNode[]) {\n super(parameters, children);\n this.bold = !!parameters.bold;\n this.italic = !!parameters.italic;\n }\n\n /** @override */\n public get kind(): string {\n return CustomDocNodeKind.EmphasisSpan;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DocHeading.js","sourceRoot":"","sources":["../../src/nodes/DocHeading.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,4CAAoE;AAWpE;;GAEG;AACH,MAAa,UAAW,SAAQ,eAAO;IAIrC;;;OAGG;IACH,YAAmB,UAAiC;QAClD,KAAK,CAAC,UAAU,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnE,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;YACpC,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;SACjF;IACH,CAAC;IAED,gBAAgB;IAChB,IAAW,IAAI;QACb,iDAAiC;IACnC,CAAC;CACF;AAtBD,gCAsBC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\r\n// See LICENSE in the project root for license information.\r\n\r\nimport { type IDocNodeParameters, DocNode } from '@microsoft/tsdoc';\r\nimport { CustomDocNodeKind } from './CustomDocNodeKind';\r\n\r\n/**\r\n * Constructor parameters for {@link DocHeading}.\r\n */\r\nexport interface IDocHeadingParameters extends IDocNodeParameters {\r\n title: string;\r\n level?: number;\r\n}\r\n\r\n/**\r\n * Represents a section header similar to an HTML `<h1>` or `<h2>` element.\r\n */\r\nexport class DocHeading extends DocNode {\r\n public readonly title: string;\r\n public readonly level: number;\r\n\r\n /**\r\n * Don't call this directly. Instead use {@link TSDocParser}\r\n * @internal\r\n */\r\n public constructor(parameters: IDocHeadingParameters) {\r\n super(parameters);\r\n this.title = parameters.title;\r\n this.level = parameters.level !== undefined ? parameters.level : 1;\r\n\r\n if (this.level < 1 || this.level > 5) {\r\n throw new Error('IDocHeadingParameters.level must be a number between 1 and 5');\r\n }\r\n }\r\n\r\n /** @override */\r\n public get kind(): string {\r\n return CustomDocNodeKind.Heading;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"DocHeading.js","sourceRoot":"","sources":["../../src/nodes/DocHeading.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,4CAAoE;AAWpE;;GAEG;AACH,MAAa,UAAW,SAAQ,eAAO;IAIrC;;;OAGG;IACH,YAAmB,UAAiC;QAClD,KAAK,CAAC,UAAU,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAEnE,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;YACpC,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;SACjF;IACH,CAAC;IAED,gBAAgB;IAChB,IAAW,IAAI;QACb,iDAAiC;IACnC,CAAC;CACF;AAtBD,gCAsBC","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 { type IDocNodeParameters, DocNode } from '@microsoft/tsdoc';\nimport { CustomDocNodeKind } from './CustomDocNodeKind';\n\n/**\n * Constructor parameters for {@link DocHeading}.\n */\nexport interface IDocHeadingParameters extends IDocNodeParameters {\n title: string;\n level?: number;\n}\n\n/**\n * Represents a section header similar to an HTML `<h1>` or `<h2>` element.\n */\nexport class DocHeading extends DocNode {\n public readonly title: string;\n public readonly level: number;\n\n /**\n * Don't call this directly. Instead use {@link TSDocParser}\n * @internal\n */\n public constructor(parameters: IDocHeadingParameters) {\n super(parameters);\n this.title = parameters.title;\n this.level = parameters.level !== undefined ? parameters.level : 1;\n\n if (this.level < 1 || this.level > 5) {\n throw new Error('IDocHeadingParameters.level must be a number between 1 and 5');\n }\n }\n\n /** @override */\n public get kind(): string {\n return CustomDocNodeKind.Heading;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DocNoteBox.js","sourceRoot":"","sources":["../../src/nodes/DocNoteBox.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,4CAAgF;AAQhF;;GAEG;AACH,MAAa,UAAW,SAAQ,eAAO;IAGrC,YAAmB,UAAiC,EAAE,iBAA0C;QAC9F,KAAK,CAAC,UAAU,CAAC,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAU,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,iBAAiB,CAAC,CAAC;IAC1F,CAAC;IAED,gBAAgB;IAChB,IAAW,IAAI;QACb,iDAAiC;IACnC,CAAC;IAED,gBAAgB;IACN,eAAe;QACvB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;CACF;AAjBD,gCAiBC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\r\n// See LICENSE in the project root for license information.\r\n\r\nimport { type IDocNodeParameters, DocNode, DocSection } from '@microsoft/tsdoc';\r\nimport { CustomDocNodeKind } from './CustomDocNodeKind';\r\n\r\n/**\r\n * Constructor parameters for {@link DocNoteBox}.\r\n */\r\nexport interface IDocNoteBoxParameters extends IDocNodeParameters {}\r\n\r\n/**\r\n * Represents a note box, which is typically displayed as a bordered box containing informational text.\r\n */\r\nexport class DocNoteBox extends DocNode {\r\n public readonly content: DocSection;\r\n\r\n public constructor(parameters: IDocNoteBoxParameters, sectionChildNodes?: ReadonlyArray<DocNode>) {\r\n super(parameters);\r\n this.content = new DocSection({ configuration: this.configuration }, sectionChildNodes);\r\n }\r\n\r\n /** @override */\r\n public get kind(): string {\r\n return CustomDocNodeKind.NoteBox;\r\n }\r\n\r\n /** @override */\r\n protected onGetChildNodes(): ReadonlyArray<DocNode | undefined> {\r\n return [this.content];\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"DocNoteBox.js","sourceRoot":"","sources":["../../src/nodes/DocNoteBox.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,4CAAgF;AAQhF;;GAEG;AACH,MAAa,UAAW,SAAQ,eAAO;IAGrC,YAAmB,UAAiC,EAAE,iBAA0C;QAC9F,KAAK,CAAC,UAAU,CAAC,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAU,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,iBAAiB,CAAC,CAAC;IAC1F,CAAC;IAED,gBAAgB;IAChB,IAAW,IAAI;QACb,iDAAiC;IACnC,CAAC;IAED,gBAAgB;IACN,eAAe;QACvB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;CACF;AAjBD,gCAiBC","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 { type IDocNodeParameters, DocNode, DocSection } from '@microsoft/tsdoc';\nimport { CustomDocNodeKind } from './CustomDocNodeKind';\n\n/**\n * Constructor parameters for {@link DocNoteBox}.\n */\nexport interface IDocNoteBoxParameters extends IDocNodeParameters {}\n\n/**\n * Represents a note box, which is typically displayed as a bordered box containing informational text.\n */\nexport class DocNoteBox extends DocNode {\n public readonly content: DocSection;\n\n public constructor(parameters: IDocNoteBoxParameters, sectionChildNodes?: ReadonlyArray<DocNode>) {\n super(parameters);\n this.content = new DocSection({ configuration: this.configuration }, sectionChildNodes);\n }\n\n /** @override */\n public get kind(): string {\n return CustomDocNodeKind.NoteBox;\n }\n\n /** @override */\n protected onGetChildNodes(): ReadonlyArray<DocNode | undefined> {\n return [this.content];\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DocTable.js","sourceRoot":"","sources":["../../src/nodes/DocTable.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,4CAAoE;AAEpE,+CAA4C;AAW5C;;GAEG;AACH,MAAa,QAAS,SAAQ,eAAO;IAKnC,YAAmB,UAA+B,EAAE,IAAiC;QACnF,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,MAAM,GAAG,IAAI,yBAAW,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAEhB,IAAI,UAAU,EAAE;YACd,IAAI,UAAU,CAAC,YAAY,EAAE;gBAC3B,IAAI,UAAU,CAAC,WAAW,EAAE;oBAC1B,MAAM,IAAI,KAAK,CACb,sEAAsE;wBACpE,2BAA2B,CAC9B,CAAC;iBACH;gBACD,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,YAAY,EAAE;oBAC9C,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;iBACxC;aACF;iBAAM,IAAI,UAAU,CAAC,WAAW,EAAE;gBACjC,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,WAAW,EAAE;oBACzC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC3B;aACF;SACF;QAED,IAAI,IAAI,EAAE;YACR,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aAClB;SACF;IACH,CAAC;IAED,gBAAgB;IAChB,IAAW,IAAI;QACb,6CAA+B;IACjC,CAAC;IAED,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEM,MAAM,CAAC,GAAgB;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAEM,eAAe;QACpB,MAAM,GAAG,GAAgB,IAAI,yBAAW,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,gBAAgB;IACN,eAAe;QACvB,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;CACF;AA3DD,4BA2DC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\r\n// See LICENSE in the project root for license information.\r\n\r\nimport { type IDocNodeParameters, DocNode } from '@microsoft/tsdoc';\r\nimport { CustomDocNodeKind } from './CustomDocNodeKind';\r\nimport { DocTableRow } from './DocTableRow';\r\nimport type { DocTableCell } from './DocTableCell';\r\n\r\n/**\r\n * Constructor parameters for {@link DocTable}.\r\n */\r\nexport interface IDocTableParameters extends IDocNodeParameters {\r\n headerCells?: ReadonlyArray<DocTableCell>;\r\n headerTitles?: string[];\r\n}\r\n\r\n/**\r\n * Represents table, similar to an HTML `<table>` element.\r\n */\r\nexport class DocTable extends DocNode {\r\n public readonly header: DocTableRow;\r\n\r\n private _rows: DocTableRow[];\r\n\r\n public constructor(parameters: IDocTableParameters, rows?: ReadonlyArray<DocTableRow>) {\r\n super(parameters);\r\n\r\n this.header = new DocTableRow({ configuration: this.configuration });\r\n this._rows = [];\r\n\r\n if (parameters) {\r\n if (parameters.headerTitles) {\r\n if (parameters.headerCells) {\r\n throw new Error(\r\n 'IDocTableParameters.headerCells and IDocTableParameters.headerTitles' +\r\n ' cannot both be specified'\r\n );\r\n }\r\n for (const cellText of parameters.headerTitles) {\r\n this.header.addPlainTextCell(cellText);\r\n }\r\n } else if (parameters.headerCells) {\r\n for (const cell of parameters.headerCells) {\r\n this.header.addCell(cell);\r\n }\r\n }\r\n }\r\n\r\n if (rows) {\r\n for (const row of rows) {\r\n this.addRow(row);\r\n }\r\n }\r\n }\r\n\r\n /** @override */\r\n public get kind(): string {\r\n return CustomDocNodeKind.Table;\r\n }\r\n\r\n public get rows(): ReadonlyArray<DocTableRow> {\r\n return this._rows;\r\n }\r\n\r\n public addRow(row: DocTableRow): void {\r\n this._rows.push(row);\r\n }\r\n\r\n public createAndAddRow(): DocTableRow {\r\n const row: DocTableRow = new DocTableRow({ configuration: this.configuration });\r\n this.addRow(row);\r\n return row;\r\n }\r\n\r\n /** @override */\r\n protected onGetChildNodes(): ReadonlyArray<DocNode | undefined> {\r\n return [this.header, ...this._rows];\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"DocTable.js","sourceRoot":"","sources":["../../src/nodes/DocTable.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,4CAAoE;AAEpE,+CAA4C;AAW5C;;GAEG;AACH,MAAa,QAAS,SAAQ,eAAO;IAKnC,YAAmB,UAA+B,EAAE,IAAiC;QACnF,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,MAAM,GAAG,IAAI,yBAAW,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAEhB,IAAI,UAAU,EAAE;YACd,IAAI,UAAU,CAAC,YAAY,EAAE;gBAC3B,IAAI,UAAU,CAAC,WAAW,EAAE;oBAC1B,MAAM,IAAI,KAAK,CACb,sEAAsE;wBACpE,2BAA2B,CAC9B,CAAC;iBACH;gBACD,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,YAAY,EAAE;oBAC9C,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;iBACxC;aACF;iBAAM,IAAI,UAAU,CAAC,WAAW,EAAE;gBACjC,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,WAAW,EAAE;oBACzC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC3B;aACF;SACF;QAED,IAAI,IAAI,EAAE;YACR,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aAClB;SACF;IACH,CAAC;IAED,gBAAgB;IAChB,IAAW,IAAI;QACb,6CAA+B;IACjC,CAAC;IAED,IAAW,IAAI;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAEM,MAAM,CAAC,GAAgB;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAEM,eAAe;QACpB,MAAM,GAAG,GAAgB,IAAI,yBAAW,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,gBAAgB;IACN,eAAe;QACvB,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;CACF;AA3DD,4BA2DC","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 { type IDocNodeParameters, DocNode } from '@microsoft/tsdoc';\nimport { CustomDocNodeKind } from './CustomDocNodeKind';\nimport { DocTableRow } from './DocTableRow';\nimport type { DocTableCell } from './DocTableCell';\n\n/**\n * Constructor parameters for {@link DocTable}.\n */\nexport interface IDocTableParameters extends IDocNodeParameters {\n headerCells?: ReadonlyArray<DocTableCell>;\n headerTitles?: string[];\n}\n\n/**\n * Represents table, similar to an HTML `<table>` element.\n */\nexport class DocTable extends DocNode {\n public readonly header: DocTableRow;\n\n private _rows: DocTableRow[];\n\n public constructor(parameters: IDocTableParameters, rows?: ReadonlyArray<DocTableRow>) {\n super(parameters);\n\n this.header = new DocTableRow({ configuration: this.configuration });\n this._rows = [];\n\n if (parameters) {\n if (parameters.headerTitles) {\n if (parameters.headerCells) {\n throw new Error(\n 'IDocTableParameters.headerCells and IDocTableParameters.headerTitles' +\n ' cannot both be specified'\n );\n }\n for (const cellText of parameters.headerTitles) {\n this.header.addPlainTextCell(cellText);\n }\n } else if (parameters.headerCells) {\n for (const cell of parameters.headerCells) {\n this.header.addCell(cell);\n }\n }\n }\n\n if (rows) {\n for (const row of rows) {\n this.addRow(row);\n }\n }\n }\n\n /** @override */\n public get kind(): string {\n return CustomDocNodeKind.Table;\n }\n\n public get rows(): ReadonlyArray<DocTableRow> {\n return this._rows;\n }\n\n public addRow(row: DocTableRow): void {\n this._rows.push(row);\n }\n\n public createAndAddRow(): DocTableRow {\n const row: DocTableRow = new DocTableRow({ configuration: this.configuration });\n this.addRow(row);\n return row;\n }\n\n /** @override */\n protected onGetChildNodes(): ReadonlyArray<DocNode | undefined> {\n return [this.header, ...this._rows];\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DocTableCell.js","sourceRoot":"","sources":["../../src/nodes/DocTableCell.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,4CAAgF;AAQhF;;GAEG;AACH,MAAa,YAAa,SAAQ,eAAO;IAGvC,YAAmB,UAAmC,EAAE,iBAA0C;QAChG,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAU,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,iBAAiB,CAAC,CAAC;IAC1F,CAAC;IAED,gBAAgB;IAChB,IAAW,IAAI;QACb,qDAAmC;IACrC,CAAC;CACF;AAbD,oCAaC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\r\n// See LICENSE in the project root for license information.\r\n\r\nimport { type IDocNodeParameters, DocNode, DocSection } from '@microsoft/tsdoc';\r\nimport { CustomDocNodeKind } from './CustomDocNodeKind';\r\n\r\n/**\r\n * Constructor parameters for {@link DocTableCell}.\r\n */\r\nexport interface IDocTableCellParameters extends IDocNodeParameters {}\r\n\r\n/**\r\n * Represents table cell, similar to an HTML `<td>` element.\r\n */\r\nexport class DocTableCell extends DocNode {\r\n public readonly content: DocSection;\r\n\r\n public constructor(parameters: IDocTableCellParameters, sectionChildNodes?: ReadonlyArray<DocNode>) {\r\n super(parameters);\r\n\r\n this.content = new DocSection({ configuration: this.configuration }, sectionChildNodes);\r\n }\r\n\r\n /** @override */\r\n public get kind(): string {\r\n return CustomDocNodeKind.TableCell;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"DocTableCell.js","sourceRoot":"","sources":["../../src/nodes/DocTableCell.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,4CAAgF;AAQhF;;GAEG;AACH,MAAa,YAAa,SAAQ,eAAO;IAGvC,YAAmB,UAAmC,EAAE,iBAA0C;QAChG,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAU,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,iBAAiB,CAAC,CAAC;IAC1F,CAAC;IAED,gBAAgB;IAChB,IAAW,IAAI;QACb,qDAAmC;IACrC,CAAC;CACF;AAbD,oCAaC","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 { type IDocNodeParameters, DocNode, DocSection } from '@microsoft/tsdoc';\nimport { CustomDocNodeKind } from './CustomDocNodeKind';\n\n/**\n * Constructor parameters for {@link DocTableCell}.\n */\nexport interface IDocTableCellParameters extends IDocNodeParameters {}\n\n/**\n * Represents table cell, similar to an HTML `<td>` element.\n */\nexport class DocTableCell extends DocNode {\n public readonly content: DocSection;\n\n public constructor(parameters: IDocTableCellParameters, sectionChildNodes?: ReadonlyArray<DocNode>) {\n super(parameters);\n\n this.content = new DocSection({ configuration: this.configuration }, sectionChildNodes);\n }\n\n /** @override */\n public get kind(): string {\n return CustomDocNodeKind.TableCell;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DocTableRow.js","sourceRoot":"","sources":["../../src/nodes/DocTableRow.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,4CAAkF;AAElF,iDAA8C;AAO9C;;GAEG;AACH,MAAa,WAAY,SAAQ,eAAO;IAGtC,YAAmB,UAAkC,EAAE,KAAmC;QACxF,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,KAAK,EAAE;YACT,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aACpB;SACF;IACH,CAAC;IAED,gBAAgB;IAChB,IAAW,IAAI;QACb,mDAAkC;IACpC,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEM,OAAO,CAAC,IAAkB;QAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAEM,gBAAgB;QACrB,MAAM,OAAO,GAAiB,IAAI,2BAAY,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACtF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,gBAAgB,CAAC,WAAmB;QACzC,MAAM,IAAI,GAAiB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACnD,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAChC,IAAI,oBAAY,CAAC;YACf,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,IAAI,EAAE,WAAW;SAClB,CAAC,CACH,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB;IACN,eAAe;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAhDD,kCAgDC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\r\n// See LICENSE in the project root for license information.\r\n\r\nimport { type IDocNodeParameters, DocNode, DocPlainText } from '@microsoft/tsdoc';\r\nimport { CustomDocNodeKind } from './CustomDocNodeKind';\r\nimport { DocTableCell } from './DocTableCell';\r\n\r\n/**\r\n * Constructor parameters for {@link DocTableRow}.\r\n */\r\nexport interface IDocTableRowParameters extends IDocNodeParameters {}\r\n\r\n/**\r\n * Represents table row, similar to an HTML `<tr>` element.\r\n */\r\nexport class DocTableRow extends DocNode {\r\n private readonly _cells: DocTableCell[];\r\n\r\n public constructor(parameters: IDocTableRowParameters, cells?: ReadonlyArray<DocTableCell>) {\r\n super(parameters);\r\n\r\n this._cells = [];\r\n if (cells) {\r\n for (const cell of cells) {\r\n this.addCell(cell);\r\n }\r\n }\r\n }\r\n\r\n /** @override */\r\n public get kind(): string {\r\n return CustomDocNodeKind.TableRow;\r\n }\r\n\r\n public get cells(): ReadonlyArray<DocTableCell> {\r\n return this._cells;\r\n }\r\n\r\n public addCell(cell: DocTableCell): void {\r\n this._cells.push(cell);\r\n }\r\n\r\n public createAndAddCell(): DocTableCell {\r\n const newCell: DocTableCell = new DocTableCell({ configuration: this.configuration });\r\n this.addCell(newCell);\r\n return newCell;\r\n }\r\n\r\n public addPlainTextCell(cellContent: string): DocTableCell {\r\n const cell: DocTableCell = this.createAndAddCell();\r\n cell.content.appendNodeInParagraph(\r\n new DocPlainText({\r\n configuration: this.configuration,\r\n text: cellContent\r\n })\r\n );\r\n return cell;\r\n }\r\n\r\n /** @override */\r\n protected onGetChildNodes(): ReadonlyArray<DocNode | undefined> {\r\n return this._cells;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"DocTableRow.js","sourceRoot":"","sources":["../../src/nodes/DocTableRow.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAE3D,4CAAkF;AAElF,iDAA8C;AAO9C;;GAEG;AACH,MAAa,WAAY,SAAQ,eAAO;IAGtC,YAAmB,UAAkC,EAAE,KAAmC;QACxF,KAAK,CAAC,UAAU,CAAC,CAAC;QAElB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,KAAK,EAAE;YACT,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aACpB;SACF;IACH,CAAC;IAED,gBAAgB;IAChB,IAAW,IAAI;QACb,mDAAkC;IACpC,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEM,OAAO,CAAC,IAAkB;QAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAEM,gBAAgB;QACrB,MAAM,OAAO,GAAiB,IAAI,2BAAY,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QACtF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,gBAAgB,CAAC,WAAmB;QACzC,MAAM,IAAI,GAAiB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACnD,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAChC,IAAI,oBAAY,CAAC;YACf,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,IAAI,EAAE,WAAW;SAClB,CAAC,CACH,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB;IACN,eAAe;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAhDD,kCAgDC","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 { type IDocNodeParameters, DocNode, DocPlainText } from '@microsoft/tsdoc';\nimport { CustomDocNodeKind } from './CustomDocNodeKind';\nimport { DocTableCell } from './DocTableCell';\n\n/**\n * Constructor parameters for {@link DocTableRow}.\n */\nexport interface IDocTableRowParameters extends IDocNodeParameters {}\n\n/**\n * Represents table row, similar to an HTML `<tr>` element.\n */\nexport class DocTableRow extends DocNode {\n private readonly _cells: DocTableCell[];\n\n public constructor(parameters: IDocTableRowParameters, cells?: ReadonlyArray<DocTableCell>) {\n super(parameters);\n\n this._cells = [];\n if (cells) {\n for (const cell of cells) {\n this.addCell(cell);\n }\n }\n }\n\n /** @override */\n public get kind(): string {\n return CustomDocNodeKind.TableRow;\n }\n\n public get cells(): ReadonlyArray<DocTableCell> {\n return this._cells;\n }\n\n public addCell(cell: DocTableCell): void {\n this._cells.push(cell);\n }\n\n public createAndAddCell(): DocTableCell {\n const newCell: DocTableCell = new DocTableCell({ configuration: this.configuration });\n this.addCell(newCell);\n return newCell;\n }\n\n public addPlainTextCell(cellContent: string): DocTableCell {\n const cell: DocTableCell = this.createAndAddCell();\n cell.content.appendNodeInParagraph(\n new DocPlainText({\n configuration: this.configuration,\n text: cellContent\n })\n );\n return cell;\n }\n\n /** @override */\n protected onGetChildNodes(): ReadonlyArray<DocNode | undefined> {\n return this._cells;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"IApiDocumenterPluginManifest.js","sourceRoot":"","sources":["../../src/plugin/IApiDocumenterPluginManifest.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\r\n// See LICENSE in the project root for license information.\r\n\r\nimport type { MarkdownDocumenterFeature } from './MarkdownDocumenterFeature';\r\nimport type { PluginFeatureInitialization } from './PluginFeature';\r\n\r\n/**\r\n * Defines a \"feature\" that is provided by an API Documenter plugin. A feature is a user-defined module\r\n * that customizes the behavior of API Documenter.\r\n *\r\n * @public\r\n */\r\nexport interface IFeatureDefinition {\r\n /**\r\n * The name of this feature, as it will appear in the config file.\r\n *\r\n * The name should consist of one or more words separated by hyphens. Each word should consist of lower case\r\n * letters and numbers. Example: `my-feature`\r\n */\r\n featureName: string;\r\n\r\n /**\r\n * Determines the kind of feature. The specified value is the name of the base class that `subclass` inherits from.\r\n *\r\n * @remarks\r\n * For now, `MarkdownDocumenterFeature` is the only supported value.\r\n */\r\n kind: 'MarkdownDocumenterFeature';\r\n\r\n /**\r\n * Your subclass that extends from the base class.\r\n */\r\n subclass: { new (initialization: PluginFeatureInitialization): MarkdownDocumenterFeature };\r\n}\r\n\r\n/**\r\n * The manifest for an API Documenter plugin.\r\n *\r\n * @remarks\r\n * An API documenter plugin is an NPM package. By convention, the NPM package name should have the prefix\r\n * `doc-plugin-`. Its main entry point should export an object named `apiDocumenterPluginManifest` which implements\r\n * the `IApiDocumenterPluginManifest` interface.\r\n *\r\n * For example:\r\n * ```ts\r\n * class MyMarkdownDocumenter extends MarkdownDocumenterFeature {\r\n * public onInitialized(): void {\r\n * console.log('MyMarkdownDocumenter: onInitialized()');\r\n * }\r\n * }\r\n *\r\n * export const apiDocumenterPluginManifest: IApiDocumenterPluginManifest = {\r\n * manifestVersion: 1000,\r\n * features: [\r\n * {\r\n * featureName: 'my-markdown-documenter',\r\n * kind: 'MarkdownDocumenterFeature',\r\n * subclass: MyMarkdownDocumenter\r\n * }\r\n * ]\r\n * };\r\n * ```\r\n * @public\r\n */\r\nexport interface IApiDocumenterPluginManifest {\r\n /**\r\n * The manifest version number. For now, this must always be `1000`.\r\n */\r\n manifestVersion: 1000;\r\n\r\n /**\r\n * The list of features provided by this plugin.\r\n */\r\n features: IFeatureDefinition[];\r\n}\r\n"]}
1
+ {"version":3,"file":"IApiDocumenterPluginManifest.js","sourceRoot":"","sources":["../../src/plugin/IApiDocumenterPluginManifest.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport type { MarkdownDocumenterFeature } from './MarkdownDocumenterFeature';\nimport type { PluginFeatureInitialization } from './PluginFeature';\n\n/**\n * Defines a \"feature\" that is provided by an API Documenter plugin. A feature is a user-defined module\n * that customizes the behavior of API Documenter.\n *\n * @public\n */\nexport interface IFeatureDefinition {\n /**\n * The name of this feature, as it will appear in the config file.\n *\n * The name should consist of one or more words separated by hyphens. Each word should consist of lower case\n * letters and numbers. Example: `my-feature`\n */\n featureName: string;\n\n /**\n * Determines the kind of feature. The specified value is the name of the base class that `subclass` inherits from.\n *\n * @remarks\n * For now, `MarkdownDocumenterFeature` is the only supported value.\n */\n kind: 'MarkdownDocumenterFeature';\n\n /**\n * Your subclass that extends from the base class.\n */\n subclass: { new (initialization: PluginFeatureInitialization): MarkdownDocumenterFeature };\n}\n\n/**\n * The manifest for an API Documenter plugin.\n *\n * @remarks\n * An API documenter plugin is an NPM package. By convention, the NPM package name should have the prefix\n * `doc-plugin-`. Its main entry point should export an object named `apiDocumenterPluginManifest` which implements\n * the `IApiDocumenterPluginManifest` interface.\n *\n * For example:\n * ```ts\n * class MyMarkdownDocumenter extends MarkdownDocumenterFeature {\n * public onInitialized(): void {\n * console.log('MyMarkdownDocumenter: onInitialized()');\n * }\n * }\n *\n * export const apiDocumenterPluginManifest: IApiDocumenterPluginManifest = {\n * manifestVersion: 1000,\n * features: [\n * {\n * featureName: 'my-markdown-documenter',\n * kind: 'MarkdownDocumenterFeature',\n * subclass: MyMarkdownDocumenter\n * }\n * ]\n * };\n * ```\n * @public\n */\nexport interface IApiDocumenterPluginManifest {\n /**\n * The manifest version number. For now, this must always be `1000`.\n */\n manifestVersion: 1000;\n\n /**\n * The list of features provided by this plugin.\n */\n features: IFeatureDefinition[];\n}\n"]}