Skip to content

Commit d5de6dd

Browse files
Domainvvalorkin
authored andcommitted
feat(scripts): api-doc add compatibility typescript 3 (#4732)
1 parent 89e967f commit d5de6dd

File tree

1 file changed

+13
-14
lines changed

1 file changed

+13
-14
lines changed

scripts/docs/api-doc.js

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
'use strict';
22

33
const ts = require('typescript');
4-
const fs = require('fs');
54
const marked = require('marked');
65

76
const renderer = new marked.Renderer();
87
renderer.link = (href, title, text) => (`<a href=\"${href}\" target="_blank" title=\"${title}\">${text}</a>`);
98
marked.setOptions({gfm: true});
109

11-
const getDescription = (symbol) => marked(
12-
ts.displayPartsToString(symbol.getDocumentationComment()),
10+
const getDescription = (symbol, typeChecker) => marked(
11+
ts.displayPartsToString(symbol.getDocumentationComment(typeChecker)),
1312
{renderer}
1413
);
1514

@@ -23,21 +22,21 @@ const ANGULAR_LIFECYCLE_METHODS = [
2322
'ngAfterViewInit', 'ngAfterViewChecked', 'writeValue', 'registerOnChange', 'registerOnTouched', 'setDisabledState'
2423
];
2524

26-
function isInternalMember(member) {
25+
function isInternalMember(member, typeChecker) {
2726
// todo: could be an issue, as for now lets skip members without a symbol
2827
if (!member.symbol) {
2928
return true;
3029
}
31-
const jsDoc = ts.displayPartsToString(member.symbol.getDocumentationComment());
30+
const jsDoc = ts.displayPartsToString(member.symbol.getDocumentationComment(typeChecker));
3231
return jsDoc.trim().length === 0 || jsDoc.indexOf('@internal') > -1;
3332
}
3433

3534
function isAngularLifecycleHook(methodName) {
3635
return ANGULAR_LIFECYCLE_METHODS.indexOf(methodName) >= 0;
3736
}
3837

39-
function isPrivateOrInternal(member) {
40-
return ((member.flags & ts.NodeFlags.Private) !== 0) || isInternalMember(member);
38+
function isPrivateOrInternal(member, typeChecker) {
39+
return ((member.flags & ts.NodeFlags.Private) !== 0) || isInternalMember(member, typeChecker);
4140
}
4241

4342
class APIDocVisitor {
@@ -66,7 +65,7 @@ class APIDocVisitor {
6665

6766
visitInterfaceDeclaration(fileName, interfaceDeclaration) {
6867
const symbol = this.program.getTypeChecker().getSymbolAtLocation(interfaceDeclaration.name);
69-
const description = getDescription(symbol);
68+
const description = getDescription(symbol, this.typeChecker);
7069
const className = interfaceDeclaration.name.text;
7170
const members = this.visitMembers(interfaceDeclaration.members);
7271

@@ -81,7 +80,7 @@ class APIDocVisitor {
8180

8281
visitClassDeclaration(fileName, classDeclaration) {
8382
const symbol = this.program.getTypeChecker().getSymbolAtLocation(classDeclaration.name);
84-
const description = getDescription(symbol);
83+
const description = getDescription(symbol, this.typeChecker);
8584
const className = classDeclaration.name.text;
8685
let directiveInfo, members;
8786

@@ -165,7 +164,7 @@ class APIDocVisitor {
165164
} else if (outDecorator) {
166165
outputs.push(this.visitOutput(members[i], outDecorator));
167166

168-
} else if (!isPrivateOrInternal(members[i])) {
167+
} else if (!isPrivateOrInternal(members[i], this.typeChecker)) {
169168
if ((members[i].kind === ts.SyntaxKind.MethodDeclaration ||
170169
members[i].kind === ts.SyntaxKind.MethodSignature) &&
171170
!isAngularLifecycleHook(members[i].name.text)) {
@@ -188,7 +187,7 @@ class APIDocVisitor {
188187
visitMethodDeclaration(method) {
189188
return {
190189
name: method.name.text,
191-
description: getDescription(method.symbol),
190+
description: getDescription(method.symbol, this.typeChecker),
192191
args: method.parameters ? method.parameters.map((prop) => this.visitArgument(prop)) : [],
193192
returnType: this.visitType(method.type)
194193
}
@@ -204,7 +203,7 @@ class APIDocVisitor {
204203
name: inArgs.length ? inArgs[0].text : property.name.text,
205204
defaultValue: property.initializer ? this.stringifyDefaultValue(property.initializer) : undefined,
206205
type: this.visitType(property),
207-
description: getDescription(property.symbol)
206+
description: getDescription(property.symbol, this.typeChecker)
208207
};
209208
}
210209

@@ -222,7 +221,7 @@ class APIDocVisitor {
222221
const outArgs = outDecorator.expression.arguments;
223222
return {
224223
name: outArgs.length ? outArgs[0].text : property.name.text,
225-
description: getDescription(property.symbol)
224+
description: getDescription(property.symbol, this.typeChecker)
226225
};
227226
}
228227

@@ -231,7 +230,7 @@ class APIDocVisitor {
231230
name: property.name.text,
232231
defaultValue: property.initializer ? this.stringifyDefaultValue(property.initializer) : undefined,
233232
type: this.visitType(property),
234-
description: getDescription(property.symbol)
233+
description: getDescription(property.symbol, this.typeChecker)
235234
};
236235
}
237236

0 commit comments

Comments
 (0)