Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
// will auto-generate one.
metadata.needsDocumentation = false;
// The class that contains this constructor
const classDeclaration: AstDeclaration = astDeclaration.parent!;
const configuration: tsdoc.TSDocConfiguration = AedocDefinitions.tsdocConfiguration;
if (!metadata.tsdocComment) {
metadata.tsdocComment = new tsdoc.DocComment({ configuration });
}
if (!tsdoc.PlainTextEmitter.hasAnyTextContent(metadata.tsdocComment.summarySection)) {
metadata.tsdocComment.summarySection.appendNodesInParagraph([
new tsdoc.DocPlainText({ configuration, text: 'Constructs a new instance of the ' }),
new tsdoc.DocCodeSpan({
configuration,
code: classDeclaration.astSymbol.localName
}),
new tsdoc.DocPlainText({ configuration, text: ' class' })
]);
}
const declarationMetadata: DeclarationMetadata = this._collector.fetchMetadata(astDeclaration);
if (declarationMetadata.effectiveReleaseTag === ReleaseTag.Internal) {
// If the constructor is marked as internal, then add a boilerplate notice for the containing class
const classMetadata: DeclarationMetadata = this._collector.fetchMetadata(classDeclaration);
if (!classMetadata.tsdocComment) {
classMetadata.tsdocComment = new tsdoc.DocComment({ configuration });
}
let docComment: tsdoc.DocComment | undefined = this._collector.fetchMetadata(astDeclaration).tsdocComment;
const releaseTag: ReleaseTag = this._collector.fetchMetadata(astDeclaration.astSymbol).releaseTag;
// Constructors always do pretty much the same thing, so it's annoying to require people to write
// descriptions for them. Instead, if the constructor lacks a TSDoc summary, then API Extractor
// will auto-generate one.
const configuration: tsdoc.TSDocConfiguration = AedocDefinitions.tsdocConfiguration;
if (docComment === undefined) {
docComment = new tsdoc.DocComment({ configuration });
}
if (!tsdoc.PlainTextEmitter.hasAnyTextContent(docComment.summarySection)) {
docComment.summarySection.appendNodesInParagraph([
new tsdoc.DocPlainText({ configuration, text: 'Constructs a new instance of the ' }),
new tsdoc.DocCodeSpan({
configuration,
code: parentApiItem.displayName
}),
new tsdoc.DocPlainText({ configuration, text: ' class' })
]);
}
apiConstructor = new ApiConstructor({ docComment, releaseTag, isStatic, parameters, overloadIndex,
excerptTokens });
parentApiItem.addMember(apiConstructor);
}
}
private _createModifiersCell(apiItem: ApiItem): DocTableCell {
const configuration: TSDocConfiguration = this._tsdocConfiguration;
const section: DocSection = new DocSection({ configuration });
if (ApiStaticMixin.isBaseClassOf(apiItem)) {
if (apiItem.isStatic) {
section.appendNodeInParagraph(new DocCodeSpan({ configuration, code: 'static' }));
}
}
return new DocTableCell({ configuration }, section.nodes);
}
for (const apiParameter of apiParameterListMixin.parameters) {
const parameterDescription: DocSection = new DocSection({ configuration } );
if (apiParameter.tsdocParamBlock) {
this._appendSection(parameterDescription, apiParameter.tsdocParamBlock.content);
}
parametersTable.addRow(
new DocTableRow({ configuration }, [
new DocTableCell({configuration}, [
new DocParagraph({ configuration }, [
new DocPlainText({ configuration, text: apiParameter.name })
])
]),
new DocTableCell({configuration}, [
new DocParagraph({ configuration }, [
new DocCodeSpan({ configuration, code: apiParameter.parameterTypeExcerpt.text })
])
]),
new DocTableCell({configuration}, parameterDescription.nodes)
])
);
}
if (parametersTable.rows.length > 0) {
output.appendNode(new DocHeading({ configuration: this._tsdocConfiguration, title: 'Parameters' }));
output.appendNode(parametersTable);
}
if (ApiReturnTypeMixin.isBaseClassOf(apiParameterListMixin)) {
const returnTypeExcerpt: Excerpt = apiParameterListMixin.returnTypeExcerpt;
output.appendNode(
new DocParagraph({ configuration }, [
private _createPropertyTypeCell(apiItem: ApiItem): DocTableCell {
const configuration: TSDocConfiguration = this._tsdocConfiguration;
const section: DocSection = new DocSection({ configuration });
if (apiItem instanceof ApiPropertyItem) {
section.appendNodeInParagraph(
new DocCodeSpan({ configuration, code: apiItem.propertyTypeExcerpt.text }),
);
}
return new DocTableCell({ configuration }, section.nodes);
}
configuration,
blockTag: new tsdoc.DocBlockTag({
configuration,
tagName: tsdoc.StandardTags.remarks.tagName
})
});
}
classMetadata.tsdocComment.remarksBlock.content.appendNode(
new tsdoc.DocParagraph({ configuration }, [
new tsdoc.DocPlainText({
configuration,
text: `The constructor for this class is marked as internal. Third-party code should not`
+ ` call the constructor directly or create subclasses that extend the `
}),
new tsdoc.DocCodeSpan({
configuration,
code: classDeclaration.astSymbol.localName
}),
new tsdoc.DocPlainText({ configuration, text: ' class.' })
])
);
}
return;
}
if (astDeclaration.declaration.kind === ts.SyntaxKind.SetAccessor) {
if (metadata.tsdocComment) {
this._collector.messageRouter.addAnalyzerIssue(ExtractorMessageId.SetterWithDocs,
`The doc comment for the property "${astDeclaration.astSymbol.localName}"`
+ ` must appear on the getter, not the setter.`,
configuration,
headerTitles: ['Member', 'Value', 'Description'],
});
for (const apiEnumMember of apiEnum.members) {
enumMembersTable.addRow(
new DocTableRow({ configuration }, [
new DocTableCell({ configuration }, [
new DocParagraph({ configuration }, [
new DocPlainText({ configuration, text: Utilities.getConciseSignature(apiEnumMember) }),
]),
]),
new DocTableCell({ configuration }, [
new DocParagraph({ configuration }, [
new DocCodeSpan({ configuration, code: apiEnumMember.initializerExcerpt.text }),
]),
]),
this._createDescriptionCell(apiEnumMember),
]),
);
}
if (enumMembersTable.rows.length > 0) {
output.appendNode(
new DocHeading({ configuration: this._tsdocConfiguration, title: 'Enumeration Members' }),
);
output.appendNode(enumMembersTable);
}
}
private _createPropertyTypeCell(apiItem: ApiItem): DocTableCell {
const configuration: TSDocConfiguration = this._tsdocConfiguration;
const section: DocSection = new DocSection({ configuration });
if (apiItem instanceof ApiPropertyItem) {
section.appendNodeInParagraph(new DocCodeSpan({ configuration, code: apiItem.propertyTypeExcerpt.text }));
}
return new DocTableCell({ configuration }, section.nodes);
}