@@ -25,16 +25,25 @@ import { ApiProperty } from '@microsoft/api-extractor-model';
2525import { ApiPropertySignature } from ' @microsoft/api-extractor-model' ;
2626import { ApiTypeAlias } from ' @microsoft/api-extractor-model' ;
2727import { ApiVariable } from ' @microsoft/api-extractor-model' ;
28+ import type { BlockContent as BlockContent_2 } from ' mdast' ;
2829import type { Data } from ' unist' ;
2930import { DocSection } from ' @microsoft/tsdoc' ;
3031import { Excerpt } from ' @microsoft/api-extractor-model' ;
32+ import type { ListItem } from ' mdast' ;
3133import type { Literal } from ' unist' ;
3234import { NewlineKind } from ' @rushstack/node-core-library' ;
3335import type { Node as Node_2 } from ' unist' ;
3436import type { Nodes } from ' hast' ;
37+ import type { Nodes as Nodes_2 } from ' mdast' ;
38+ import { Options } from ' mdast-util-to-markdown' ;
3539import type { Parent } from ' unist' ;
40+ import type { PhrasingContent as PhrasingContent_2 } from ' mdast' ;
3641import { ReleaseTag } from ' @microsoft/api-extractor-model' ;
3742import type { Root } from ' hast' ;
43+ import type { Root as Root_2 } from ' mdast' ;
44+ import type { RootContent } from ' mdast' ;
45+ import type { TableCell } from ' mdast' ;
46+ import type { TableRow } from ' mdast' ;
3847import { TypeParameter } from ' @microsoft/api-extractor-model' ;
3948
4049// @public
@@ -173,6 +182,14 @@ export interface BlockContentMap {
173182 table: TableNode ;
174183}
175184
185+ // @public
186+ export function blockContentToMarkdown(node : BlockContent , context : ToMarkdownContext ): [BlockContent_2 ];
187+
188+ // @public
189+ export type BlockContentToMarkdownTransformations = {
190+ readonly [K in keyof BlockContentMap ]: ToMarkdownTransformation <BlockContentMap [K ], BlockContent_2 []>;
191+ };
192+
176193// @public @sealed
177194export class CodeSpanNode extends DocumentationLiteralNodeBase <string > {
178195 constructor (value : string );
@@ -338,6 +355,9 @@ export interface DocumentNodeProps {
338355// @public
339356export function documentToHtml(document : DocumentNode , config : ToHtmlConfiguration ): Root ;
340357
358+ // @public
359+ export function documentToMarkdown(document : DocumentNode , config : ToMarkdownConfiguration ): Root_2 ;
360+
341361// @public
342362export interface DocumentWriter {
343363 decreaseIndent(): void ;
@@ -360,6 +380,7 @@ export namespace DocumentWriter {
360380export class FencedCodeBlockNode extends DocumentationLiteralNodeBase <string > {
361381 constructor (value : string , language ? : string );
362382 static createFromPlainText(text : string , language ? : string ): FencedCodeBlockNode ;
383+ static readonly Empty: FencedCodeBlockNode ;
363384 get isEmpty(): boolean ;
364385 readonly language? : string ;
365386 readonly type = " fencedCode" ;
@@ -640,38 +661,19 @@ export interface LoggingConfiguration {
640661// @public
641662export type LoggingFunction = (message : string | Error , ... parameters : unknown []) => void ;
642663
643- // @public
644- export interface MarkdownRenderConfiguration extends LoggingConfiguration {
645- readonly customRenderers? : MarkdownRenderers ;
646- readonly startingHeadingLevel? : number ;
647- }
648-
649- // @public
650- export interface MarkdownRenderContext extends TextFormatting {
651- readonly customRenderers? : MarkdownRenderers ;
652- readonly headingLevel: number ;
653- readonly insideCodeBlock? : boolean ;
654- readonly insideTable? : boolean ;
655- }
656-
657664declare namespace MarkdownRenderer {
658665 export {
659666 RenderApiModelAsMarkdownOptions as RenderApiModelOptions ,
660667 renderApiModelAsMarkdown as renderApiModel ,
661668 RenderDocumentsAsMarkdownOptions as RenderDocumentsOptions ,
662669 renderDocumentsAsMarkdown as renderDocuments ,
663670 renderDocument_2 as renderDocument ,
664- renderNode ,
665- renderNodes
671+ RenderDocumentAsMarkdownConfiguration ,
672+ renderMarkdown
666673 }
667674}
668675export { MarkdownRenderer }
669676
670- // @public
671- export interface MarkdownRenderers {
672- readonly [documentationNodeKind : string ]: (node : DocumentationNode , writer : DocumentWriter , context : MarkdownRenderContext ) => void ;
673- }
674-
675677export { NewlineKind }
676678
677679// @public @sealed
@@ -699,6 +701,14 @@ export interface PhrasingContentMap {
699701 text: PlainTextNode ;
700702}
701703
704+ // @public
705+ export function phrasingContentToMarkdown(node : PhrasingContent , context : ToMarkdownContext ): [PhrasingContent_2 ];
706+
707+ // @public
708+ export type PhrasingContentToMarkdownTransformations = {
709+ readonly [K in keyof PhrasingContentMap ]: ToMarkdownTransformation <PhrasingContentMap [K ], PhrasingContent_2 []>;
710+ };
711+
702712// @public @sealed
703713export class PlainTextNode extends DocumentationLiteralNodeBase <string > {
704714 constructor (text : string );
@@ -716,24 +726,28 @@ export { ReleaseTag }
716726function renderApiModelAsMarkdown(options : RenderApiModelAsMarkdownOptions ): Promise <void >;
717727
718728// @public
719- interface RenderApiModelAsMarkdownOptions extends ApiItemTransformationOptions , MarkdownRenderConfiguration , FileSystemConfiguration {
729+ interface RenderApiModelAsMarkdownOptions extends ApiItemTransformationOptions , RenderDocumentAsMarkdownConfiguration , FileSystemConfiguration {
720730}
721731
722732// @public
723733function renderDocument(document : DocumentNode , config : RenderDocumentAsHtmlConfiguration ): string ;
724734
725735// @public
726- function renderDocument_2(document : DocumentNode , config : MarkdownRenderConfiguration ): string ;
736+ function renderDocument_2(document : DocumentNode , config : RenderDocumentAsMarkdownConfiguration ): string ;
727737
728738// @public @sealed
729739export interface RenderDocumentAsHtmlConfiguration extends ToHtmlConfiguration , RenderHtmlConfiguration {
730740}
731741
742+ // @public @sealed
743+ export interface RenderDocumentAsMarkdownConfiguration extends ToMarkdownConfiguration , RenderMarkdownConfiguration {
744+ }
745+
732746// @public
733747function renderDocumentsAsMarkdown(documents : readonly DocumentNode [], options : RenderDocumentsAsMarkdownOptions ): Promise <void >;
734748
735749// @public
736- interface RenderDocumentsAsMarkdownOptions extends MarkdownRenderConfiguration , FileSystemConfiguration {
750+ interface RenderDocumentsAsMarkdownOptions extends RenderDocumentAsMarkdownConfiguration , FileSystemConfiguration {
737751}
738752
739753// @public
@@ -745,14 +759,19 @@ export interface RenderHtmlConfiguration {
745759}
746760
747761// @public
748- function renderNode( node : DocumentationNode , writer : DocumentWriter , context : MarkdownRenderContext ): void ;
762+ function renderMarkdown( tree : Nodes_2 , config : RenderMarkdownConfiguration ): string ;
749763
750- // @public
751- function renderNodes(children : DocumentationNode [], writer : DocumentWriter , childContext : MarkdownRenderContext ): void ;
764+ // @public @sealed
765+ export interface RenderMarkdownConfiguration {
766+ readonly mdastToMarkdownOptions? : Partial <Options >;
767+ }
752768
753769// @public
754770export type SectionContent = BlockContent | SectionNode ;
755771
772+ // @public
773+ export function sectionContentToMarkdown(node : SectionContent , context : ToMarkdownContext ): RootContent [];
774+
756775// @public @sealed
757776export interface SectionHierarchyConfiguration extends DocumentationHierarchyConfigurationBase {
758777 readonly kind: HierarchyKind .Section ;
@@ -870,6 +889,31 @@ export interface ToHtmlTransformations {
870889 readonly [documentationNodeKind : string ]: ToHtmlTransformation ;
871890}
872891
892+ // @public
893+ export interface ToMarkdownConfiguration extends LoggingConfiguration {
894+ readonly customTransformations? : Partial <ToMarkdownTransformations >;
895+ readonly startingHeadingLevel? : number ;
896+ }
897+
898+ // @public
899+ export interface ToMarkdownContext {
900+ readonly headingLevel: number ;
901+ readonly logger: Logger ;
902+ readonly transformations: ToMarkdownTransformations ;
903+ }
904+
905+ // @public
906+ export type ToMarkdownTransformation <TIn extends DocumentationNode = DocumentationNode , TOut extends Nodes_2 [] = [Nodes_2 ]> = (node : TIn , context : ToMarkdownContext ) => TOut ;
907+
908+ // @public
909+ export type ToMarkdownTransformations = BlockContentToMarkdownTransformations & PhrasingContentToMarkdownTransformations & {
910+ readonly [" heading" ]: ToMarkdownTransformation <HeadingNode , BlockContent_2 []>;
911+ readonly [" listItem" ]: ToMarkdownTransformation <ListItemNode , [ListItem ]>;
912+ readonly [" section" ]: ToMarkdownTransformation <SectionNode , RootContent []>;
913+ readonly [" tableCell" ]: ToMarkdownTransformation <TableCellNode , [TableCell ]>;
914+ readonly [" tableRow" ]: ToMarkdownTransformation <TableRowNode , [TableRow ]>;
915+ };
916+
873917// @public
874918export type TransformApiItemWithChildren <TApiItem extends ApiItem > = (apiItem : TApiItem , config : ApiItemTransformationConfiguration , generateChildSection : (apiItem : ApiItem ) => SectionNode []) => SectionNode [];
875919
0 commit comments