-
-
Notifications
You must be signed in to change notification settings - Fork 4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(website): render tsdoc examples (#8494)
- Loading branch information
1 parent
c99b808
commit 7116647
Showing
22 changed files
with
377 additions
and
204 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
import type { ApiModel, ApiItem } from '@microsoft/api-extractor-model'; | ||
import type { DocBlock } from '@microsoft/tsdoc'; | ||
import { createCommentNode } from '.'; | ||
import { blockTag, DocBlockTagJSON } from './CommentBlockTag'; | ||
import { AnyDocNodeJSON, DocNodeJSON, node } from './CommentNode'; | ||
|
||
export interface DocBlockJSON extends DocNodeJSON { | ||
content: AnyDocNodeJSON[]; | ||
tag: DocBlockTagJSON; | ||
} | ||
|
||
export function block(block: DocBlock, model: ApiModel, parentItem?: ApiItem) { | ||
return { | ||
...node(block), | ||
content: block.content.nodes.map((node) => createCommentNode(node, model, parentItem)), | ||
tag: blockTag(block.blockTag), | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
import type { DocBlockTag } from '@microsoft/tsdoc'; | ||
import { type DocNodeJSON, node } from './CommentNode'; | ||
|
||
export interface DocBlockTagJSON extends DocNodeJSON { | ||
tagName: string; | ||
} | ||
|
||
export function blockTag(blockTag: DocBlockTag): DocBlockTagJSON { | ||
return { | ||
...node(blockTag), | ||
tagName: blockTag.tagName, | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
import type { DocCodeSpan } from '@microsoft/tsdoc'; | ||
import { DocNodeJSON, node } from './CommentNode'; | ||
|
||
export interface DocCodeSpanJSON extends DocNodeJSON { | ||
code: string; | ||
} | ||
|
||
export function codeSpan(codeSpan: DocCodeSpan): DocCodeSpanJSON { | ||
return { | ||
...node(codeSpan), | ||
code: codeSpan.code, | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,22 +1,28 @@ | ||
import type { ApiItem, ApiModel } from '@microsoft/api-extractor-model'; | ||
import type { DocNode } from '@microsoft/tsdoc'; | ||
import type { DocNode, DocNodeKind } from '@microsoft/tsdoc'; | ||
import type { DocBlockJSON } from './CommentBlock'; | ||
import type { DocCodeSpanJSON } from './CommentCodeSpan'; | ||
import type { DocNodeContainerJSON } from './CommentNodeContainer'; | ||
import type { DocFencedCodeJSON } from './FencedCodeCommentNode'; | ||
import type { DocLinkTagJSON } from './LinkTagCommentNode'; | ||
import type { DocPlainTextJSON } from './PlainTextCommentNode'; | ||
import type { DocCommentJSON } from './RootComment'; | ||
|
||
export class CommentNode<T extends DocNode = DocNode> { | ||
public readonly node: T; | ||
public readonly kind: string; | ||
public readonly model: ApiModel; | ||
public readonly parentItem: ApiItem | null; | ||
export interface DocNodeJSON { | ||
kind: DocNodeKind; | ||
} | ||
|
||
public constructor(node: T, model: ApiModel, parentItem?: ApiItem) { | ||
this.node = node; | ||
this.kind = node.kind; | ||
this.model = model; | ||
this.parentItem = parentItem ?? null; | ||
} | ||
export type AnyDocNodeJSON = | ||
| DocNodeJSON | ||
| DocPlainTextJSON | ||
| DocNodeContainerJSON | ||
| DocLinkTagJSON | ||
| DocFencedCodeJSON | ||
| DocBlockJSON | ||
| DocCommentJSON | ||
| DocCodeSpanJSON; | ||
|
||
public toJSON() { | ||
return { | ||
kind: this.kind, | ||
}; | ||
} | ||
export function node(node: DocNode): DocNodeJSON { | ||
return { | ||
kind: node.kind as DocNodeKind, | ||
}; | ||
} |
27 changes: 13 additions & 14 deletions
27
packages/website/src/DocModel/comment/CommentNodeContainer.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,20 +1,19 @@ | ||
import type { ApiItem, ApiModel } from '@microsoft/api-extractor-model'; | ||
import type { DocNodeContainer } from '@microsoft/tsdoc'; | ||
import { createCommentNode } from '.'; | ||
import { CommentNode } from './CommentNode'; | ||
import { AnyDocNodeJSON, DocNodeJSON, node } from './CommentNode'; | ||
|
||
export class CommentNodeContainer<T extends DocNodeContainer = DocNodeContainer> extends CommentNode<DocNodeContainer> { | ||
public readonly nodes: CommentNode[]; | ||
|
||
public constructor(container: T, model: ApiModel, parentItem?: ApiItem) { | ||
super(container, model, parentItem); | ||
this.nodes = container.nodes.map((node) => createCommentNode(node, model, parentItem)); | ||
} | ||
export interface DocNodeContainerJSON extends DocNodeJSON { | ||
nodes: AnyDocNodeJSON[]; | ||
} | ||
|
||
public override toJSON() { | ||
return { | ||
...super.toJSON(), | ||
nodes: this.nodes.map((node) => node.toJSON()), | ||
}; | ||
} | ||
export function nodeContainer( | ||
container: DocNodeContainer, | ||
model: ApiModel, | ||
parentItem?: ApiItem, | ||
): DocNodeContainerJSON { | ||
return { | ||
...node(container), | ||
nodes: container.nodes.map((node) => createCommentNode(node, model, parentItem)), | ||
}; | ||
} |
29 changes: 11 additions & 18 deletions
29
packages/website/src/DocModel/comment/FencedCodeCommentNode.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,22 +1,15 @@ | ||
import type { ApiModel, ApiItem } from '@microsoft/api-extractor-model'; | ||
import type { DocFencedCode } from '@microsoft/tsdoc'; | ||
import { CommentNode } from './CommentNode'; | ||
import { DocNodeJSON, node } from './CommentNode'; | ||
|
||
export class FencedCodeCommentNode extends CommentNode<DocFencedCode> { | ||
public readonly code: string; | ||
public readonly language: string; | ||
|
||
public constructor(node: DocFencedCode, model: ApiModel, parentItem?: ApiItem) { | ||
super(node, model, parentItem); | ||
this.code = node.code; | ||
this.language = node.language; | ||
} | ||
export interface DocFencedCodeJSON extends DocNodeJSON { | ||
code: string; | ||
language: string; | ||
} | ||
|
||
public override toJSON() { | ||
return { | ||
...super.toJSON(), | ||
code: this.code, | ||
language: this.language, | ||
}; | ||
} | ||
export function fencedCode(fencedCode: DocFencedCode) { | ||
return { | ||
...node(fencedCode), | ||
language: fencedCode.language, | ||
code: fencedCode.code, | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
24 changes: 9 additions & 15 deletions
24
packages/website/src/DocModel/comment/PlainTextCommentNode.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,13 @@ | ||
import type { ApiItem, ApiModel } from '@microsoft/api-extractor-model'; | ||
import type { DocPlainText } from '@microsoft/tsdoc'; | ||
import { CommentNode } from './CommentNode'; | ||
import { DocNodeJSON, node } from './CommentNode'; | ||
|
||
export class PlainTextCommentNode extends CommentNode<DocPlainText> { | ||
public readonly text: string; | ||
|
||
public constructor(node: DocPlainText, model: ApiModel, parentItem?: ApiItem) { | ||
super(node, model, parentItem); | ||
this.text = node.text; | ||
} | ||
export interface DocPlainTextJSON extends DocNodeJSON { | ||
text: string; | ||
} | ||
|
||
public override toJSON() { | ||
return { | ||
...super.toJSON(), | ||
text: this.text, | ||
}; | ||
} | ||
export function plainTextNode(plainTextNode: DocPlainText): DocPlainTextJSON { | ||
return { | ||
...node(plainTextNode), | ||
text: plainTextNode.text, | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
import type { ApiItem, ApiModel } from '@microsoft/api-extractor-model'; | ||
import type { DocComment } from '@microsoft/tsdoc'; | ||
import { createCommentNode } from '.'; | ||
import { block, DocBlockJSON } from './CommentBlock'; | ||
import { DocNodeJSON, node } from './CommentNode'; | ||
|
||
export interface DocCommentJSON extends DocNodeJSON { | ||
summary: DocNodeJSON[]; | ||
remarks: DocNodeJSON[]; | ||
customBlocks: DocBlockJSON[]; | ||
} | ||
|
||
export function comment(comment: DocComment, model: ApiModel, parentItem?: ApiItem): DocCommentJSON { | ||
return { | ||
...node(comment), | ||
summary: comment.summarySection.nodes.map((node) => createCommentNode(node, model, parentItem)), | ||
remarks: comment.remarksBlock?.content.nodes.map((node) => createCommentNode(node, model, parentItem)) ?? [], | ||
customBlocks: comment.customBlocks.map((_block) => block(_block, model, parentItem)), | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,22 +1,43 @@ | ||
import type { ApiModel, ApiItem } from '@microsoft/api-extractor-model'; | ||
import type { DocNode, DocPlainText, DocLinkTag, DocParagraph, DocFencedCode } from '@microsoft/tsdoc'; | ||
import { CommentNode } from './CommentNode'; | ||
import { CommentNodeContainer } from './CommentNodeContainer'; | ||
import { FencedCodeCommentNode } from './FencedCodeCommentNode'; | ||
import { LinkTagCommentNode } from './LinkTagCommentNode'; | ||
import { PlainTextCommentNode } from './PlainTextCommentNode'; | ||
import { | ||
type DocNode, | ||
type DocPlainText, | ||
type DocLinkTag, | ||
type DocParagraph, | ||
type DocFencedCode, | ||
DocNodeKind, | ||
type DocBlock, | ||
DocComment, | ||
DocCodeSpan, | ||
} from '@microsoft/tsdoc'; | ||
import { block } from './CommentBlock'; | ||
import { codeSpan } from './CommentCodeSpan'; | ||
import type { AnyDocNodeJSON } from './CommentNode'; | ||
import { node as _node } from './CommentNode'; | ||
import { nodeContainer } from './CommentNodeContainer'; | ||
import { fencedCode } from './FencedCodeCommentNode'; | ||
import { linkTagNode } from './LinkTagCommentNode'; | ||
import { plainTextNode } from './PlainTextCommentNode'; | ||
import { comment } from './RootComment'; | ||
|
||
export function createCommentNode(node: DocNode, model: ApiModel, parentItem?: ApiItem): CommentNode { | ||
export function createCommentNode(node: DocNode, model: ApiModel, parentItem?: ApiItem): AnyDocNodeJSON { | ||
switch (node.kind) { | ||
case 'PlainText': | ||
return new PlainTextCommentNode(node as DocPlainText, model, parentItem); | ||
case 'LinkTag': | ||
return new LinkTagCommentNode(node as DocLinkTag, model, parentItem); | ||
case 'Paragraph': | ||
return new CommentNodeContainer(node as DocParagraph, model, parentItem); | ||
case 'FencedCode': | ||
return new FencedCodeCommentNode(node as DocFencedCode, model, parentItem); | ||
case DocNodeKind.PlainText: | ||
return plainTextNode(node as DocPlainText); | ||
case DocNodeKind.LinkTag: | ||
return linkTagNode(node as DocLinkTag, model, parentItem); | ||
case DocNodeKind.Paragraph: | ||
case DocNodeKind.Section: | ||
return nodeContainer(node as DocParagraph, model, parentItem); | ||
case DocNodeKind.FencedCode: | ||
return fencedCode(node as DocFencedCode); | ||
case DocNodeKind.CodeSpan: | ||
return codeSpan(node as DocCodeSpan); | ||
case DocNodeKind.Block: | ||
return block(node as DocBlock, model, parentItem); | ||
case DocNodeKind.Comment: | ||
return comment(node as DocComment, model, parentItem); | ||
default: | ||
return new CommentNode(node, model, parentItem); | ||
return _node(node); | ||
} | ||
} |
Oops, something went wrong.
7116647
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Successfully deployed to the following URLs:
discord-js – ./
discord-js-number-one.vercel.app
discord-js-git-main-discordjs.vercel.app
discord-js-discordjs.vercel.app
www.discordjs.dev
discordjs.dev