@iviva/react-tsdoc 0.1.2 → 0.1.5
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.
- package/.github/workflows/npm-publish.yml +10 -2
- package/dist/index.js +57 -6
- package/dist/index.js.map +1 -1
- package/package-lock.json +1 -1
- package/package.json +1 -1
- package/src/index.ts +275 -216
|
@@ -19,11 +19,19 @@ jobs:
|
|
|
19
19
|
- name: Build
|
|
20
20
|
run: npm run build
|
|
21
21
|
- name: Publish if version has been updated
|
|
22
|
-
uses: pascalgn/npm-publish-action@
|
|
22
|
+
uses: pascalgn/npm-publish-action@1.3.9
|
|
23
23
|
with: # All of theses inputs are optional
|
|
24
24
|
tag_name: "v%s"
|
|
25
25
|
tag_message: "v%s"
|
|
26
26
|
commit_pattern: "^Release (\\S+)"
|
|
27
|
+
workspace: "."
|
|
27
28
|
env: # More info about the environment variables in the README
|
|
28
29
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Leave this as is, it's automatically generated
|
|
29
|
-
NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} # You need to set this in your repo settings
|
|
30
|
+
NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} # You need to set this in your repo settings
|
|
31
|
+
- name: Report Status
|
|
32
|
+
if: always()
|
|
33
|
+
uses: ravsamhq/notify-slack-action@v1
|
|
34
|
+
with:
|
|
35
|
+
status: ${{ job.status }}
|
|
36
|
+
env:
|
|
37
|
+
SLACK_WEBHOOK_URL: ${{ secrets.ACTION_MONITORING_SLACK }}
|
package/dist/index.js
CHANGED
|
@@ -83,8 +83,10 @@ class MarkdownBuilder {
|
|
|
83
83
|
const tableFormat = (s) => {
|
|
84
84
|
return s.replace(/\s+/g, ' ').replace(/\|/g, '\\|');
|
|
85
85
|
};
|
|
86
|
-
if (table.length == 0)
|
|
86
|
+
if (table.length == 0) {
|
|
87
|
+
this.code += '\n\n';
|
|
87
88
|
return;
|
|
89
|
+
}
|
|
88
90
|
let headers = Object.keys(table[0]);
|
|
89
91
|
this.code += '|' + (headers.map(tableFormat)).join('|') + '|\n';
|
|
90
92
|
this.code += '|' + (headers.map(h => '-')).join('|') + '|\n';
|
|
@@ -92,6 +94,7 @@ class MarkdownBuilder {
|
|
|
92
94
|
let row = table[i];
|
|
93
95
|
this.code += '|' + (headers.map(h => tableFormat(row[h]))).join('|') + '|\n';
|
|
94
96
|
}
|
|
97
|
+
this.code += '\n\n';
|
|
95
98
|
}
|
|
96
99
|
toString() {
|
|
97
100
|
return this.code;
|
|
@@ -157,13 +160,38 @@ function generateHookTypeDefinition(hook) {
|
|
|
157
160
|
}
|
|
158
161
|
function generateComponentTypeDefinition(c, interfaces) {
|
|
159
162
|
let code = "";
|
|
163
|
+
let type = c.type || 'functional';
|
|
160
164
|
let inf = interfaces[c.propType];
|
|
161
165
|
if (inf) {
|
|
162
166
|
code += inf.comment + '\n';
|
|
163
167
|
code += inf.code + '\n';
|
|
164
168
|
}
|
|
169
|
+
if (c.stateType) {
|
|
170
|
+
let stateInf = interfaces[c.stateType];
|
|
171
|
+
if (stateInf) {
|
|
172
|
+
code += stateInf.comment + '\n';
|
|
173
|
+
code += stateInf.code + '\n';
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
if (c.refType) {
|
|
177
|
+
let refInf = interfaces[c.refType];
|
|
178
|
+
if (refInf) {
|
|
179
|
+
code += refInf.comment + '\n';
|
|
180
|
+
code += refInf.code + '\n';
|
|
181
|
+
}
|
|
182
|
+
}
|
|
165
183
|
code += c.comment + '\n';
|
|
166
|
-
|
|
184
|
+
switch (type) {
|
|
185
|
+
case 'functional':
|
|
186
|
+
code += `export const ${c.name} : React.FunctionComponent<${c.propType}>;\n`;
|
|
187
|
+
break;
|
|
188
|
+
case 'class':
|
|
189
|
+
code += `export class ${c.name} extends React.Component<${c.propType}, ${c.stateType || 'any'}> {}\n`;
|
|
190
|
+
break;
|
|
191
|
+
case 'forwardRef':
|
|
192
|
+
code += `export const ${c.name}:React.ForwardRefExoticComponent<${c.propType} & React.RefAttributes<${c.refType || 'any'}>>;\n`;
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
167
195
|
return code;
|
|
168
196
|
}
|
|
169
197
|
function fillRelatedTypes(t, types, docInfo) {
|
|
@@ -285,7 +313,28 @@ function parseVariableDeclaration(node, docInfo) {
|
|
|
285
313
|
if (type == 'React.FunctionComponent') {
|
|
286
314
|
let propType = node.type.typeArguments[0].getText();
|
|
287
315
|
let comment = extractComment(node.parent);
|
|
288
|
-
docInfo.components[name] = { comment, propType, name };
|
|
316
|
+
docInfo.components[name] = { comment, propType, name, type: 'functional' };
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
if (type == 'React.ForwardRefExoticComponent') {
|
|
320
|
+
let cType = node.type.typeArguments[0].getText();
|
|
321
|
+
// get prop type and ref type
|
|
322
|
+
// assume
|
|
323
|
+
// - props defined as following format <PropType & RefType>
|
|
324
|
+
// - RefType always starts with `React.RefAttributes`
|
|
325
|
+
let parts = cType.split("&", 2).map(p => p.trim());
|
|
326
|
+
let propType = parts[0];
|
|
327
|
+
let refType = parts[1];
|
|
328
|
+
if (parts[0].startsWith('React.RefAttributes')) {
|
|
329
|
+
propType = parts[1];
|
|
330
|
+
refType = parts[0];
|
|
331
|
+
}
|
|
332
|
+
refType = refType
|
|
333
|
+
.replace('React.RefAttributes<', '')
|
|
334
|
+
.replace(">", '')
|
|
335
|
+
.trim();
|
|
336
|
+
let comment = extractComment(node.parent);
|
|
337
|
+
docInfo.components[name] = { comment, propType, refType, name, type: 'forwardRef' };
|
|
289
338
|
return;
|
|
290
339
|
}
|
|
291
340
|
if (name.startsWith('use')) {
|
|
@@ -297,11 +346,12 @@ function parseVariableDeclaration(node, docInfo) {
|
|
|
297
346
|
function parseClassDeclaration(node, docInfo) {
|
|
298
347
|
var _a, _b;
|
|
299
348
|
let className = (_b = (_a = node) === null || _a === void 0 ? void 0 : _a.heritageClauses[0]) === null || _b === void 0 ? void 0 : _b.types[0].expression.getText();
|
|
300
|
-
if (className
|
|
349
|
+
if (className == 'React.Component') {
|
|
301
350
|
let propType = node.heritageClauses[0].types[0].typeArguments[0].getText();
|
|
351
|
+
let stateType = node.heritageClauses[0].types[0].typeArguments[1].getText();
|
|
302
352
|
let comment = extractComment(node);
|
|
303
353
|
let name = node.name.getText();
|
|
304
|
-
docInfo.components[name] = { comment, propType, name };
|
|
354
|
+
docInfo.components[name] = { comment, propType, name, stateType, type: 'class' };
|
|
305
355
|
}
|
|
306
356
|
}
|
|
307
357
|
function parseTypeAlias(node, docInfo) {
|
|
@@ -348,10 +398,11 @@ function walkTree(node, docInfo) {
|
|
|
348
398
|
parseClassDeclaration(node, docInfo);
|
|
349
399
|
break;
|
|
350
400
|
case ts.SyntaxKind.FunctionDeclaration:
|
|
401
|
+
case 242:
|
|
351
402
|
parseVariableDeclaration(node, docInfo);
|
|
352
403
|
break;
|
|
353
404
|
}
|
|
354
|
-
node.forEachChild(child => walkTree(child, docInfo));
|
|
405
|
+
node.forEachChild((child) => walkTree(child, docInfo));
|
|
355
406
|
}
|
|
356
407
|
function validateProgram(program) {
|
|
357
408
|
const compilerDiagnostics = program.getSemanticDiagnostics();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package-lock.json
CHANGED
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -12,63 +12,68 @@ enum ComponentFlags {
|
|
|
12
12
|
Hook = 1 << 1,
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
function logCompilerMessage(message:string) {
|
|
15
|
+
function logCompilerMessage(message: string) {
|
|
16
16
|
console.error(chalk.gray(`[TypeScript] ${message}`));
|
|
17
17
|
}
|
|
18
|
-
function logDebug(...objects:any[]) {
|
|
18
|
+
function logDebug(...objects: any[]) {
|
|
19
19
|
console.log(chalk.gray(...objects));
|
|
20
20
|
}
|
|
21
|
-
function logInfo(...objects:any[]) {
|
|
21
|
+
function logInfo(...objects: any[]) {
|
|
22
22
|
console.log(chalk.green(...objects));
|
|
23
23
|
}
|
|
24
|
-
function logWarning(...objects:any[]) {
|
|
24
|
+
function logWarning(...objects: any[]) {
|
|
25
25
|
console.log(chalk.redBright(...objects));
|
|
26
26
|
}
|
|
27
|
-
function logError(...objects:any[]) {
|
|
27
|
+
function logError(...objects: any[]) {
|
|
28
28
|
console.log(chalk.redBright(...objects));
|
|
29
29
|
}
|
|
30
|
-
function indentCode(code:string,chars:string) {
|
|
30
|
+
function indentCode(code: string, chars: string) {
|
|
31
31
|
let lines = code.split('\n').map(line => line.trimRight());
|
|
32
32
|
return lines.map(line => chars + line).join('\n');
|
|
33
33
|
}
|
|
34
34
|
class MarkdownBuilder {
|
|
35
35
|
private code = "";
|
|
36
|
-
public addTitle(title:string,level:1|2|3|4) {
|
|
36
|
+
public addTitle(title: string, level: 1 | 2 | 3 | 4) {
|
|
37
37
|
let headerChar = '#';
|
|
38
38
|
let prefix = '';
|
|
39
|
-
for(let i=0;i<level;i++) {
|
|
39
|
+
for (let i = 0; i < level; i++) {
|
|
40
40
|
prefix += headerChar;
|
|
41
41
|
}
|
|
42
|
-
this.code += prefix +' ' + title+'\n\n';
|
|
42
|
+
this.code += prefix + ' ' + title + '\n\n';
|
|
43
43
|
}
|
|
44
|
-
public addParagraph(p:string) {
|
|
45
|
-
|
|
44
|
+
public addParagraph(p: string) {
|
|
45
|
+
|
|
46
46
|
this.code += '\n\n' + p + '\n\n';
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
public addCode(code:string) {
|
|
49
|
+
public addCode(code: string) {
|
|
50
50
|
code = code.trim();
|
|
51
51
|
if (code.startsWith('```')) {
|
|
52
52
|
code = code.substring(3);
|
|
53
53
|
}
|
|
54
54
|
if (code.endsWith('```')) {
|
|
55
|
-
code = code.substring(0,code.length-3);
|
|
55
|
+
code = code.substring(0, code.length - 3);
|
|
56
56
|
}
|
|
57
57
|
this.code += '\n\n```tsx\n' + code.trim() + '\n```\n\n'
|
|
58
58
|
}
|
|
59
|
-
public addTable(table:any[]) {
|
|
60
|
-
const tableFormat = (s:string) => {
|
|
61
|
-
return s.replace(/\s+/g,' ').replace(/\|/g,'\\|');
|
|
59
|
+
public addTable(table: any[]) {
|
|
60
|
+
const tableFormat = (s: string) => {
|
|
61
|
+
return s.replace(/\s+/g, ' ').replace(/\|/g, '\\|');
|
|
62
|
+
}
|
|
63
|
+
if (table.length == 0) {
|
|
64
|
+
this.code += '\n\n';
|
|
65
|
+
return
|
|
62
66
|
}
|
|
63
|
-
if (table.length==0) return;
|
|
64
67
|
let headers = Object.keys(table[0]);
|
|
65
68
|
this.code += '|' + (headers.map(tableFormat)).join('|') + '|\n';
|
|
66
|
-
this.code += '|' + (headers.map(h=>'-')).join('|')+'|\n';
|
|
67
|
-
for(let i in table) {
|
|
69
|
+
this.code += '|' + (headers.map(h => '-')).join('|') + '|\n';
|
|
70
|
+
for (let i in table) {
|
|
68
71
|
let row = table[i];
|
|
69
72
|
this.code += '|' + (headers.map(h => tableFormat(row[h]))).join('|') + '|\n';
|
|
70
73
|
}
|
|
71
|
-
|
|
74
|
+
|
|
75
|
+
this.code += '\n\n'
|
|
76
|
+
|
|
72
77
|
}
|
|
73
78
|
public toString() {
|
|
74
79
|
return this.code;
|
|
@@ -79,7 +84,7 @@ interface IExportModuleOptions {
|
|
|
79
84
|
}
|
|
80
85
|
|
|
81
86
|
interface ITypeDefinition {
|
|
82
|
-
comment:string;
|
|
87
|
+
comment: string;
|
|
83
88
|
}
|
|
84
89
|
|
|
85
90
|
interface IFunctionParam {
|
|
@@ -87,12 +92,12 @@ interface IFunctionParam {
|
|
|
87
92
|
type: string;
|
|
88
93
|
}
|
|
89
94
|
interface IFunctionSignature extends ITypeDefinition {
|
|
90
|
-
parameters:IFunctionParam[];
|
|
91
|
-
return:string;
|
|
95
|
+
parameters: IFunctionParam[];
|
|
96
|
+
return: string;
|
|
92
97
|
code: string;
|
|
93
98
|
}
|
|
94
|
-
interface IUnion extends ITypeDefinition{
|
|
95
|
-
items:string[];
|
|
99
|
+
interface IUnion extends ITypeDefinition {
|
|
100
|
+
items: string[];
|
|
96
101
|
code: string;
|
|
97
102
|
}
|
|
98
103
|
interface IInterfaceMember {
|
|
@@ -109,7 +114,10 @@ interface IInterfaceDeclaration extends ITypeDefinition {
|
|
|
109
114
|
interface IReactComponent {
|
|
110
115
|
name: string;
|
|
111
116
|
propType: string;
|
|
117
|
+
stateType?: string
|
|
118
|
+
refType?: string
|
|
112
119
|
comment: string;
|
|
120
|
+
type?: 'class' | 'functional' | 'forwardRef'
|
|
113
121
|
}
|
|
114
122
|
interface IReactHookParam {
|
|
115
123
|
name: string;
|
|
@@ -117,37 +125,37 @@ interface IReactHookParam {
|
|
|
117
125
|
}
|
|
118
126
|
interface IReactHook {
|
|
119
127
|
name: string;
|
|
120
|
-
type:string;
|
|
121
|
-
parameters:IReactHookParam[];
|
|
122
|
-
comment:string;
|
|
128
|
+
type: string;
|
|
129
|
+
parameters: IReactHookParam[];
|
|
130
|
+
comment: string;
|
|
123
131
|
}
|
|
124
132
|
interface IDocInfo {
|
|
125
133
|
interfaces: { [key: string]: IInterfaceDeclaration };
|
|
126
134
|
components: { [key: string]: IReactComponent };
|
|
127
135
|
hooks: { [key: string]: IReactHook };
|
|
128
|
-
functions:{[key:string]:IFunctionSignature};
|
|
129
|
-
unions:{[key:string]:IUnion};
|
|
136
|
+
functions: { [key: string]: IFunctionSignature };
|
|
137
|
+
unions: { [key: string]: IUnion };
|
|
130
138
|
|
|
131
139
|
}
|
|
132
140
|
interface IExample {
|
|
133
141
|
summary: string;
|
|
134
|
-
|
|
142
|
+
|
|
135
143
|
}
|
|
136
144
|
interface ITypeDocumentation {
|
|
137
145
|
name: string;
|
|
138
|
-
type: 'interface' | 'function' |'union';
|
|
146
|
+
type: 'interface' | 'function' | 'union';
|
|
139
147
|
summary: string;
|
|
140
|
-
examples:IExample[];
|
|
141
|
-
code:string;
|
|
142
|
-
flags:ComponentFlags;
|
|
148
|
+
examples: IExample[];
|
|
149
|
+
code: string;
|
|
150
|
+
flags: ComponentFlags;
|
|
143
151
|
|
|
144
152
|
}
|
|
145
153
|
|
|
146
154
|
interface IHookDocumentation {
|
|
147
155
|
name: string;
|
|
148
156
|
summary: string;
|
|
149
|
-
examples:IExample[];
|
|
150
|
-
flags:ComponentFlags;
|
|
157
|
+
examples: IExample[];
|
|
158
|
+
flags: ComponentFlags;
|
|
151
159
|
}
|
|
152
160
|
interface IComponentDocumentation {
|
|
153
161
|
/**
|
|
@@ -173,13 +181,13 @@ interface IComponentDocumentation {
|
|
|
173
181
|
/**
|
|
174
182
|
* Any custom @-attribute flags set on the component
|
|
175
183
|
*/
|
|
176
|
-
flags:ComponentFlags;
|
|
184
|
+
flags: ComponentFlags;
|
|
177
185
|
|
|
178
186
|
}
|
|
179
187
|
interface IDocObject {
|
|
180
|
-
components:IComponentDocumentation[];
|
|
181
|
-
hooks:IHookDocumentation[];
|
|
182
|
-
types:ITypeDocumentation[];
|
|
188
|
+
components: IComponentDocumentation[];
|
|
189
|
+
hooks: IHookDocumentation[];
|
|
190
|
+
types: ITypeDocumentation[];
|
|
183
191
|
}
|
|
184
192
|
|
|
185
193
|
/**
|
|
@@ -191,7 +199,7 @@ interface IComponentPropDocumentation {
|
|
|
191
199
|
summary: string;
|
|
192
200
|
examples: IExample[];
|
|
193
201
|
}
|
|
194
|
-
function extractActualContentFromDocMess(node:tsdoc.DocNode):string {
|
|
202
|
+
function extractActualContentFromDocMess(node: tsdoc.DocNode): string {
|
|
195
203
|
if (!node) {
|
|
196
204
|
return "";
|
|
197
205
|
}
|
|
@@ -199,85 +207,112 @@ function extractActualContentFromDocMess(node:tsdoc.DocNode):string {
|
|
|
199
207
|
if (node instanceof tsdoc.DocExcerpt) {
|
|
200
208
|
result += node.content.toString();
|
|
201
209
|
}
|
|
202
|
-
for(const childNode of node.getChildNodes()) {
|
|
210
|
+
for (const childNode of node.getChildNodes()) {
|
|
203
211
|
result += extractActualContentFromDocMess(childNode);
|
|
204
212
|
}
|
|
205
213
|
return result;
|
|
206
214
|
}
|
|
207
|
-
function parseTSDocComment(comment: string): [string, IExample[],ComponentFlags] {
|
|
215
|
+
function parseTSDocComment(comment: string): [string, IExample[], ComponentFlags] {
|
|
208
216
|
let config = new tsdoc.TSDocConfiguration();
|
|
209
217
|
|
|
210
218
|
config.addTagDefinition(
|
|
211
219
|
new tsdoc.TSDocTagDefinition({
|
|
212
|
-
tagName:'@export',
|
|
213
|
-
syntaxKind:tsdoc.TSDocTagSyntaxKind.ModifierTag,
|
|
214
|
-
allowMultiple:false
|
|
215
|
-
}
|
|
220
|
+
tagName: '@export',
|
|
221
|
+
syntaxKind: tsdoc.TSDocTagSyntaxKind.ModifierTag,
|
|
222
|
+
allowMultiple: false
|
|
223
|
+
})
|
|
216
224
|
);
|
|
217
225
|
|
|
218
226
|
config.addTagDefinition(
|
|
219
227
|
new tsdoc.TSDocTagDefinition({
|
|
220
|
-
tagName:'@hook',
|
|
221
|
-
syntaxKind:tsdoc.TSDocTagSyntaxKind.ModifierTag,
|
|
222
|
-
allowMultiple:false
|
|
223
|
-
}
|
|
228
|
+
tagName: '@hook',
|
|
229
|
+
syntaxKind: tsdoc.TSDocTagSyntaxKind.ModifierTag,
|
|
230
|
+
allowMultiple: false
|
|
231
|
+
})
|
|
224
232
|
);
|
|
225
233
|
|
|
226
234
|
let parser = new tsdoc.TSDocParser(config);
|
|
227
235
|
|
|
228
236
|
let ctx = parser.parseString(comment);
|
|
229
237
|
let summary = extractActualContentFromDocMess(ctx.docComment.summarySection);
|
|
230
|
-
let examples:IExample[] = [];
|
|
231
|
-
let props:ComponentFlags = ComponentFlags.None;
|
|
232
|
-
for(const block of ctx.docComment.customBlocks) {
|
|
238
|
+
let examples: IExample[] = [];
|
|
239
|
+
let props: ComponentFlags = ComponentFlags.None;
|
|
240
|
+
for (const block of ctx.docComment.customBlocks) {
|
|
233
241
|
if (block.blockTag.tagName == '@example') {
|
|
234
|
-
let example = {summary:extractActualContentFromDocMess(block.content)};
|
|
242
|
+
let example = { summary: extractActualContentFromDocMess(block.content) };
|
|
235
243
|
examples.push(example);
|
|
236
244
|
|
|
237
245
|
}
|
|
238
246
|
}
|
|
239
|
-
let flags:ComponentFlags =
|
|
247
|
+
let flags: ComponentFlags = ComponentFlags.None;
|
|
240
248
|
|
|
241
249
|
if (ctx.docComment.modifierTagSet.hasTagName('@export')) {
|
|
242
250
|
flags = flags | ComponentFlags.Export;
|
|
243
|
-
}
|
|
251
|
+
}
|
|
244
252
|
|
|
245
253
|
if (ctx.docComment.modifierTagSet.hasTagName('@hook')) {
|
|
246
254
|
flags = flags | ComponentFlags.Hook;
|
|
247
255
|
}
|
|
248
256
|
|
|
249
|
-
return [summary,examples,flags];
|
|
257
|
+
return [summary, examples, flags];
|
|
250
258
|
}
|
|
251
259
|
function generatePropDocs(inf: IInterfaceDeclaration) {
|
|
252
260
|
let results: IComponentPropDocumentation[] = [];
|
|
253
261
|
for (let i in inf.members) {
|
|
254
262
|
let prop = inf.members[i];
|
|
255
263
|
let propDoc: IComponentPropDocumentation = { examples: [], name: prop.name, summary: '', type: prop.type };
|
|
256
|
-
[propDoc.summary,propDoc.examples] = parseTSDocComment(prop.comment);
|
|
264
|
+
[propDoc.summary, propDoc.examples] = parseTSDocComment(prop.comment);
|
|
257
265
|
results.push(propDoc);
|
|
258
266
|
}
|
|
259
267
|
return results;
|
|
260
268
|
}
|
|
261
|
-
function generateHookTypeDefinition(hook:IReactHook) {
|
|
269
|
+
function generateHookTypeDefinition(hook: IReactHook) {
|
|
262
270
|
return `export const ${hook.name}:${hook.type};`;
|
|
263
271
|
}
|
|
264
|
-
function generateComponentTypeDefinition(c:IReactComponent,interfaces:{[key:string]:IInterfaceDeclaration}) {
|
|
272
|
+
function generateComponentTypeDefinition(c: IReactComponent, interfaces: { [key: string]: IInterfaceDeclaration }) {
|
|
265
273
|
let code = "";
|
|
274
|
+
let type = c.type || 'functional'
|
|
266
275
|
let inf = interfaces[c.propType];
|
|
267
276
|
if (inf) {
|
|
268
277
|
code += inf.comment + '\n';
|
|
269
278
|
code += inf.code + '\n';
|
|
270
279
|
}
|
|
280
|
+
if (c.stateType) {
|
|
281
|
+
let stateInf = interfaces[c.stateType];
|
|
282
|
+
if (stateInf) {
|
|
283
|
+
code += stateInf.comment + '\n';
|
|
284
|
+
code += stateInf.code + '\n';
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
if (c.refType) {
|
|
288
|
+
let refInf = interfaces[c.refType];
|
|
289
|
+
if (refInf) {
|
|
290
|
+
code += refInf.comment + '\n';
|
|
291
|
+
code += refInf.code + '\n';
|
|
292
|
+
}
|
|
293
|
+
}
|
|
271
294
|
code += c.comment + '\n';
|
|
272
|
-
|
|
295
|
+
|
|
296
|
+
switch (type) {
|
|
297
|
+
case 'functional':
|
|
298
|
+
code += `export const ${c.name} : React.FunctionComponent<${c.propType}>;\n`
|
|
299
|
+
break
|
|
300
|
+
case 'class':
|
|
301
|
+
code += `export class ${c.name} extends React.Component<${c.propType}, ${c.stateType || 'any'}> {}\n`
|
|
302
|
+
break
|
|
303
|
+
case 'forwardRef':
|
|
304
|
+
code += `export const ${c.name}:React.ForwardRefExoticComponent<${c.propType} & React.RefAttributes<${c.refType || 'any'}>>;\n`
|
|
305
|
+
break
|
|
306
|
+
}
|
|
307
|
+
|
|
273
308
|
return code;
|
|
274
309
|
}
|
|
275
|
-
function fillRelatedTypes(t:string,types:any,docInfo:IDocInfo) {
|
|
310
|
+
function fillRelatedTypes(t: string, types: any, docInfo: IDocInfo) {
|
|
276
311
|
if (docInfo.interfaces[t]) {
|
|
277
312
|
types[t] = 1;
|
|
278
313
|
let inf = docInfo.interfaces[t];
|
|
279
|
-
for(let m of inf.members) {
|
|
280
|
-
fillRelatedTypes(m.comment,types,docInfo);
|
|
314
|
+
for (let m of inf.members) {
|
|
315
|
+
fillRelatedTypes(m.comment, types, docInfo);
|
|
281
316
|
}
|
|
282
317
|
return;
|
|
283
318
|
}
|
|
@@ -288,10 +323,10 @@ function fillRelatedTypes(t:string,types:any,docInfo:IDocInfo) {
|
|
|
288
323
|
if (docInfo.functions[t]) {
|
|
289
324
|
let f = docInfo.functions[t];
|
|
290
325
|
types[t] = 1;
|
|
291
|
-
fillRelatedTypes(f.return,types,docInfo);
|
|
292
|
-
for(let p of f.parameters) {
|
|
326
|
+
fillRelatedTypes(f.return, types, docInfo);
|
|
327
|
+
for (let p of f.parameters) {
|
|
293
328
|
let pt = p.type;
|
|
294
|
-
fillRelatedTypes(pt,types,docInfo);
|
|
329
|
+
fillRelatedTypes(pt, types, docInfo);
|
|
295
330
|
}
|
|
296
331
|
}
|
|
297
332
|
|
|
@@ -300,9 +335,9 @@ function generateDocObject(docInfo: IDocInfo): IDocObject {
|
|
|
300
335
|
let components: IComponentDocumentation[] = [];
|
|
301
336
|
//let typesToExport:any = {};
|
|
302
337
|
for (let cn in docInfo.components) {
|
|
303
|
-
let componentDoc: IComponentDocumentation = { examples: [], name: cn, props: [], summary: ''
|
|
338
|
+
let componentDoc: IComponentDocumentation = { examples: [], name: cn, props: [], summary: '', flags: ComponentFlags.None };
|
|
304
339
|
let componentInfo = docInfo.components[cn];
|
|
305
|
-
[componentDoc.summary,componentDoc.examples,componentDoc.flags] = parseTSDocComment(componentInfo.comment);
|
|
340
|
+
[componentDoc.summary, componentDoc.examples, componentDoc.flags] = parseTSDocComment(componentInfo.comment);
|
|
306
341
|
|
|
307
342
|
let propType = docInfo.interfaces[componentInfo.propType];
|
|
308
343
|
if (!!propType) {
|
|
@@ -313,11 +348,11 @@ function generateDocObject(docInfo: IDocInfo): IDocObject {
|
|
|
313
348
|
components.push(componentDoc);
|
|
314
349
|
|
|
315
350
|
}
|
|
316
|
-
let hooks:IHookDocumentation[] = [];
|
|
317
|
-
for(let hi in docInfo.hooks) {
|
|
351
|
+
let hooks: IHookDocumentation[] = [];
|
|
352
|
+
for (let hi in docInfo.hooks) {
|
|
318
353
|
let hook = docInfo.hooks[hi];
|
|
319
|
-
let hookDoc:IHookDocumentation = {name:hook.name,flags:ComponentFlags.None,summary:'',examples:[]};
|
|
320
|
-
[hookDoc.summary,hookDoc.examples,hookDoc.flags] = parseTSDocComment(hook.comment);
|
|
354
|
+
let hookDoc: IHookDocumentation = { name: hook.name, flags: ComponentFlags.None, summary: '', examples: [] };
|
|
355
|
+
[hookDoc.summary, hookDoc.examples, hookDoc.flags] = parseTSDocComment(hook.comment);
|
|
321
356
|
let propType = docInfo.functions[hook.type];
|
|
322
357
|
// if (!!propType) {
|
|
323
358
|
// typesToExport[hook.type] = 1;
|
|
@@ -328,31 +363,31 @@ function generateDocObject(docInfo: IDocInfo): IDocObject {
|
|
|
328
363
|
// for(let k of Object.keys(typesToExport)) {
|
|
329
364
|
// fillRelatedTypes(k,typesToExport,docInfo);
|
|
330
365
|
// }
|
|
331
|
-
let types:ITypeDocumentation[] = [];
|
|
332
|
-
for(let k of Object.keys(docInfo.interfaces)) {
|
|
366
|
+
let types: ITypeDocumentation[] = [];
|
|
367
|
+
for (let k of Object.keys(docInfo.interfaces)) {
|
|
333
368
|
let inf = docInfo.interfaces[k];
|
|
334
|
-
let typeDoc:ITypeDocumentation = { examples:[],name:inf.name,summary:'',type:'interface',code:'',flags:ComponentFlags.None};
|
|
369
|
+
let typeDoc: ITypeDocumentation = { examples: [], name: inf.name, summary: '', type: 'interface', code: '', flags: ComponentFlags.None };
|
|
335
370
|
typeDoc.code = inf.code;
|
|
336
|
-
[typeDoc.summary,typeDoc.examples,typeDoc.flags] = parseTSDocComment(inf.comment);
|
|
371
|
+
[typeDoc.summary, typeDoc.examples, typeDoc.flags] = parseTSDocComment(inf.comment);
|
|
337
372
|
types.push(typeDoc);
|
|
338
373
|
}
|
|
339
|
-
for(let k of Object.keys(docInfo.functions)) {
|
|
374
|
+
for (let k of Object.keys(docInfo.functions)) {
|
|
340
375
|
let inf = docInfo.functions[k];
|
|
341
|
-
let typeDoc:ITypeDocumentation = { examples:[],name:k,summary:'',type:'function',code:'',flags:ComponentFlags.None};
|
|
376
|
+
let typeDoc: ITypeDocumentation = { examples: [], name: k, summary: '', type: 'function', code: '', flags: ComponentFlags.None };
|
|
342
377
|
typeDoc.code = inf.code;
|
|
343
|
-
[typeDoc.summary,typeDoc.examples,typeDoc.flags] = parseTSDocComment(inf.comment);
|
|
378
|
+
[typeDoc.summary, typeDoc.examples, typeDoc.flags] = parseTSDocComment(inf.comment);
|
|
344
379
|
types.push(typeDoc);
|
|
345
380
|
}
|
|
346
|
-
for(let k of Object.keys(docInfo.unions)) {
|
|
381
|
+
for (let k of Object.keys(docInfo.unions)) {
|
|
347
382
|
let inf = docInfo.unions[k];
|
|
348
|
-
let typeDoc:ITypeDocumentation = { examples:[],name:k,summary:'',type:'union',code:'',flags:ComponentFlags.None};
|
|
383
|
+
let typeDoc: ITypeDocumentation = { examples: [], name: k, summary: '', type: 'union', code: '', flags: ComponentFlags.None };
|
|
349
384
|
typeDoc.code = inf.code;
|
|
350
|
-
[typeDoc.summary,typeDoc.examples,typeDoc.flags] = parseTSDocComment(inf.comment);
|
|
385
|
+
[typeDoc.summary, typeDoc.examples, typeDoc.flags] = parseTSDocComment(inf.comment);
|
|
351
386
|
types.push(typeDoc);
|
|
352
387
|
}
|
|
353
|
-
|
|
354
388
|
|
|
355
|
-
|
|
389
|
+
|
|
390
|
+
return { components, hooks, types };
|
|
356
391
|
}
|
|
357
392
|
|
|
358
393
|
function extractComment(node: ts.Node) {
|
|
@@ -361,22 +396,22 @@ function extractComment(node: ts.Node) {
|
|
|
361
396
|
if (!comments) return '';
|
|
362
397
|
return comments!.map(c => fullText.slice(c.pos, c.end)).join('\n');
|
|
363
398
|
}
|
|
364
|
-
function getCode(node:ts.Node) {
|
|
365
|
-
return node.getSourceFile().getFullText().substring(node.getStart(),node.getEnd());
|
|
399
|
+
function getCode(node: ts.Node) {
|
|
400
|
+
return node.getSourceFile().getFullText().substring(node.getStart(), node.getEnd());
|
|
366
401
|
}
|
|
367
|
-
function parseFunctionSignature(node:ts.Node,docInfo:IDocInfo) {
|
|
402
|
+
function parseFunctionSignature(node: ts.Node, docInfo: IDocInfo) {
|
|
368
403
|
|
|
369
404
|
}
|
|
370
405
|
function parseInterfaceDeclaration(node: ts.Node, docInfo: IDocInfo) {
|
|
371
406
|
|
|
372
407
|
let name = (node as any).name.getText();
|
|
373
408
|
let members = (node as any).members;
|
|
374
|
-
if (members.length==1 && members[0].kind == ts.SyntaxKind.CallSignature) {
|
|
375
|
-
return parseFunctionSignature(members[0],docInfo);
|
|
409
|
+
if (members.length == 1 && members[0].kind == ts.SyntaxKind.CallSignature) {
|
|
410
|
+
return parseFunctionSignature(members[0], docInfo);
|
|
376
411
|
}
|
|
377
412
|
|
|
378
413
|
let docs = extractComment(node);
|
|
379
|
-
let inf: IInterfaceDeclaration = { comment: docs, members: [], name: name
|
|
414
|
+
let inf: IInterfaceDeclaration = { comment: docs, members: [], name: name, code: getCode(node) };
|
|
380
415
|
for (let i = 0; i < members.length; i++) {
|
|
381
416
|
let member = members[i];
|
|
382
417
|
let name = member.name.getText();
|
|
@@ -390,12 +425,11 @@ function parseInterfaceDeclaration(node: ts.Node, docInfo: IDocInfo) {
|
|
|
390
425
|
function parseVariableDeclaration(node: ts.Node, docInfo: IDocInfo) {
|
|
391
426
|
|
|
392
427
|
let type = (node as any).type?.typeName?.getText();
|
|
393
|
-
if ((node as any)?.type?.kind == ts.SyntaxKind.CallSignature ||
|
|
428
|
+
if ((node as any)?.type?.kind == ts.SyntaxKind.CallSignature ||
|
|
394
429
|
(node as any)?.type?.kind == ts.SyntaxKind.FunctionType
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
}
|
|
430
|
+
) {
|
|
431
|
+
console.log('dug');
|
|
432
|
+
}
|
|
399
433
|
if (!type) {
|
|
400
434
|
return;
|
|
401
435
|
}
|
|
@@ -403,27 +437,52 @@ function parseVariableDeclaration(node: ts.Node, docInfo: IDocInfo) {
|
|
|
403
437
|
if (type == 'React.FunctionComponent') {
|
|
404
438
|
let propType = (node as any).type.typeArguments[0].getText();
|
|
405
439
|
let comment = extractComment(node.parent);
|
|
406
|
-
docInfo.components[name] = { comment, propType, name };
|
|
440
|
+
docInfo.components[name] = { comment, propType, name, type: 'functional' };
|
|
441
|
+
return;
|
|
442
|
+
}
|
|
443
|
+
if (type == 'React.ForwardRefExoticComponent') {
|
|
444
|
+
let cType = (node as any).type.typeArguments[0].getText();
|
|
445
|
+
// get prop type and ref type
|
|
446
|
+
// assume
|
|
447
|
+
// - props defined as following format <PropType & RefType>
|
|
448
|
+
// - RefType always starts with `React.RefAttributes`
|
|
449
|
+
let parts = (cType as string).split("&", 2).map(p => p.trim())
|
|
450
|
+
let propType = parts[0]
|
|
451
|
+
let refType = parts[1]
|
|
452
|
+
if (parts[0].startsWith('React.RefAttributes')) {
|
|
453
|
+
propType = parts[1]
|
|
454
|
+
refType = parts[0]
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
refType = refType
|
|
458
|
+
.replace('React.RefAttributes<', '')
|
|
459
|
+
.replace(">", '')
|
|
460
|
+
.trim()
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
let comment = extractComment(node.parent);
|
|
464
|
+
docInfo.components[name] = { comment, propType, refType, name, type: 'forwardRef' };
|
|
407
465
|
return;
|
|
408
466
|
}
|
|
409
467
|
if (name.startsWith('use')) {
|
|
410
468
|
let comment = extractComment(node.parent);
|
|
411
|
-
let parameters:IReactHookParam[] = [];
|
|
469
|
+
let parameters: IReactHookParam[] = [];
|
|
412
470
|
|
|
413
|
-
docInfo.hooks[name] = {name,type,parameters,comment};
|
|
471
|
+
docInfo.hooks[name] = { name, type, parameters, comment };
|
|
414
472
|
}
|
|
415
473
|
}
|
|
416
474
|
function parseClassDeclaration(node: ts.Node, docInfo: IDocInfo) {
|
|
417
475
|
let className = (node as any)?.heritageClauses[0]?.types[0].expression.getText();
|
|
418
|
-
if (className
|
|
476
|
+
if (className == 'React.Component') {
|
|
419
477
|
let propType = (node as any).heritageClauses[0].types[0].typeArguments[0].getText();
|
|
478
|
+
let stateType = (node as any).heritageClauses[0].types[0].typeArguments[1].getText();
|
|
420
479
|
let comment = extractComment(node);
|
|
421
480
|
let name = (node as any).name.getText();
|
|
422
|
-
docInfo.components[name] = { comment, propType, name };
|
|
481
|
+
docInfo.components[name] = { comment, propType, name, stateType, type: 'class' };
|
|
423
482
|
|
|
424
483
|
}
|
|
425
484
|
}
|
|
426
|
-
function parseTypeAlias(node:ts.Node,docInfo:IDocInfo) {
|
|
485
|
+
function parseTypeAlias(node: ts.Node, docInfo: IDocInfo) {
|
|
427
486
|
let name = (node as any).name.getText();
|
|
428
487
|
let type = (node as any).type;
|
|
429
488
|
if (type.kind == ts.SyntaxKind.FunctionType) {
|
|
@@ -431,10 +490,10 @@ function parseTypeAlias(node:ts.Node,docInfo:IDocInfo) {
|
|
|
431
490
|
let parameters = type.parameters;
|
|
432
491
|
let comment = extractComment(node);
|
|
433
492
|
let code = getCode(node);
|
|
434
|
-
let f:IFunctionSignature = {parameters:[],return:returnType,comment,code};
|
|
435
|
-
for(let p=0;p<parameters.length;p++) {
|
|
493
|
+
let f: IFunctionSignature = { parameters: [], return: returnType, comment, code };
|
|
494
|
+
for (let p = 0; p < parameters.length; p++) {
|
|
436
495
|
let parameter = parameters[p];
|
|
437
|
-
let fp:IFunctionParam = {name:parameter.name.getText(),type:parameter.type.getText()};
|
|
496
|
+
let fp: IFunctionParam = { name: parameter.name.getText(), type: parameter.type.getText() };
|
|
438
497
|
f.parameters.push(fp);
|
|
439
498
|
|
|
440
499
|
}
|
|
@@ -445,9 +504,9 @@ function parseTypeAlias(node:ts.Node,docInfo:IDocInfo) {
|
|
|
445
504
|
let types = type.types;
|
|
446
505
|
let comment = extractComment(node);
|
|
447
506
|
let code = getCode(node);
|
|
448
|
-
let u:IUnion = {items:[],comment,code};
|
|
507
|
+
let u: IUnion = { items: [], comment, code };
|
|
449
508
|
|
|
450
|
-
for(let p=0;p<types.length;p++) {
|
|
509
|
+
for (let p = 0; p < types.length; p++) {
|
|
451
510
|
let txt = types[p].getText();
|
|
452
511
|
u.items.push(txt);
|
|
453
512
|
}
|
|
@@ -458,7 +517,7 @@ function parseTypeAlias(node:ts.Node,docInfo:IDocInfo) {
|
|
|
458
517
|
function walkTree(node: ts.Node, docInfo: IDocInfo) {
|
|
459
518
|
switch (node.kind) {
|
|
460
519
|
case ts.SyntaxKind.TypeAliasDeclaration:
|
|
461
|
-
parseTypeAlias(node,docInfo);
|
|
520
|
+
parseTypeAlias(node, docInfo);
|
|
462
521
|
break;
|
|
463
522
|
case ts.SyntaxKind.InterfaceDeclaration:
|
|
464
523
|
parseInterfaceDeclaration(node, docInfo);
|
|
@@ -470,13 +529,12 @@ function walkTree(node: ts.Node, docInfo: IDocInfo) {
|
|
|
470
529
|
parseClassDeclaration(node, docInfo);
|
|
471
530
|
break;
|
|
472
531
|
case ts.SyntaxKind.FunctionDeclaration:
|
|
473
|
-
|
|
532
|
+
case 242:
|
|
533
|
+
parseVariableDeclaration(node, docInfo);
|
|
474
534
|
break;
|
|
475
535
|
|
|
476
|
-
|
|
477
|
-
|
|
478
536
|
}
|
|
479
|
-
node.forEachChild(child => walkTree(child, docInfo));
|
|
537
|
+
node.forEachChild((child: any) => walkTree(child, docInfo));
|
|
480
538
|
|
|
481
539
|
}
|
|
482
540
|
function validateProgram(program: ts.Program) {
|
|
@@ -505,12 +563,12 @@ function getSources(program: ts.Program) {
|
|
|
505
563
|
}).map(f => f.fileName);
|
|
506
564
|
}
|
|
507
565
|
|
|
508
|
-
function generateExportModule(docs:IDocObject,docInfo:IDocInfo,options:IExportModuleOptions) {
|
|
566
|
+
function generateExportModule(docs: IDocObject, docInfo: IDocInfo, options: IExportModuleOptions) {
|
|
509
567
|
let code = '';
|
|
510
568
|
if (options?.moduleName) {
|
|
511
569
|
code += `declare module "${options.moduleName}" {\n`;
|
|
512
570
|
}
|
|
513
|
-
for(let i in docs.types) {
|
|
571
|
+
for (let i in docs.types) {
|
|
514
572
|
let obj = docs.types[i];
|
|
515
573
|
let comment = '';
|
|
516
574
|
if (docInfo.interfaces[obj.name]) {
|
|
@@ -523,23 +581,24 @@ function generateExportModule(docs:IDocObject,docInfo:IDocInfo,options:IExportMo
|
|
|
523
581
|
comment = docInfo.unions[obj.name].comment;
|
|
524
582
|
}
|
|
525
583
|
if (ComponentFlags.Export === (obj.flags & ComponentFlags.Export)) {
|
|
526
|
-
code += indentCode('\n' + comment + '\n' +
|
|
584
|
+
code += indentCode('\n' + comment + '\n' + 'export ' + obj.code + '\n', ' ');
|
|
527
585
|
}
|
|
528
586
|
}
|
|
529
|
-
for(let i in docs.components) {
|
|
587
|
+
for (let i in docs.components) {
|
|
530
588
|
let doc = docs.components[i];
|
|
589
|
+
|
|
531
590
|
if (ComponentFlags.Export === (doc.flags & ComponentFlags.Export)) {
|
|
532
591
|
let component = docInfo.components[doc.name];
|
|
533
|
-
let componentCode = generateComponentTypeDefinition(component,docInfo.interfaces);
|
|
534
|
-
code += indentCode(componentCode,' ');
|
|
592
|
+
let componentCode = generateComponentTypeDefinition(component, docInfo.interfaces);
|
|
593
|
+
code += indentCode(componentCode, ' ');
|
|
535
594
|
}
|
|
536
595
|
}
|
|
537
|
-
for(let i in docs.hooks) {
|
|
596
|
+
for (let i in docs.hooks) {
|
|
538
597
|
let doc = docs.hooks[i];
|
|
539
598
|
if (ComponentFlags.Export === (doc.flags & ComponentFlags.Export)) {
|
|
540
599
|
let hook = docInfo.hooks[doc.name];
|
|
541
600
|
let hookCode = generateHookTypeDefinition(hook);
|
|
542
|
-
code += indentCode(hookCode,' ');
|
|
601
|
+
code += indentCode(hookCode, ' ');
|
|
543
602
|
}
|
|
544
603
|
|
|
545
604
|
}
|
|
@@ -547,18 +606,18 @@ function generateExportModule(docs:IDocObject,docInfo:IDocInfo,options:IExportMo
|
|
|
547
606
|
return code;
|
|
548
607
|
}
|
|
549
608
|
|
|
550
|
-
function load(root: string):[IDocInfo,IDocObject] {
|
|
609
|
+
function load(root: string): [IDocInfo, IDocObject] {
|
|
551
610
|
let options: ts.CompilerOptions = {
|
|
552
611
|
jsx: ts.JsxEmit.React,
|
|
553
612
|
};
|
|
554
|
-
logDebug('Loading',root);
|
|
613
|
+
logDebug('Loading', root);
|
|
555
614
|
logDebug('Loading', root);
|
|
556
615
|
let program = ts.createProgram([root], options);
|
|
557
616
|
logDebug('Compiled');
|
|
558
617
|
validateProgram(program);
|
|
559
618
|
logDebug('Validated');
|
|
560
619
|
let sources = getSources(program);
|
|
561
|
-
let docInfo: IDocInfo = { interfaces: {}, components: {},hooks:{},functions:{},unions:{} };
|
|
620
|
+
let docInfo: IDocInfo = { interfaces: {}, components: {}, hooks: {}, functions: {}, unions: {} };
|
|
562
621
|
for (var i = 0; i < sources.length; i++) {
|
|
563
622
|
let source = sources[i];
|
|
564
623
|
logDebug('Loading', source);
|
|
@@ -574,179 +633,179 @@ function load(root: string):[IDocInfo,IDocObject] {
|
|
|
574
633
|
}
|
|
575
634
|
}
|
|
576
635
|
let docs = generateDocObject(docInfo);
|
|
577
|
-
return [docInfo,docs];
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
/*
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
636
|
+
return [docInfo, docs];
|
|
637
|
+
|
|
638
|
+
|
|
639
|
+
|
|
640
|
+
/*
|
|
641
|
+
for(let i in docInfo.components) {
|
|
642
|
+
let c = docInfo.components[i];
|
|
643
|
+
let inf = docInfo.interfaces[c.propType];
|
|
644
|
+
if (!!inf) {
|
|
645
|
+
console.log(inf.comment);
|
|
646
|
+
console.log(inf.code);
|
|
647
|
+
}
|
|
648
|
+
console.log(c.comment);
|
|
649
|
+
console.log(`export const ${c.name} : React.FunctionComponent<${c.propType}>;`)
|
|
650
|
+
}*/
|
|
592
651
|
|
|
593
652
|
}
|
|
594
653
|
|
|
595
654
|
|
|
596
|
-
function generateHookDoc(cdoc:IHookDocumentation,docs:IDocObject) {
|
|
597
|
-
let md =new MarkdownBuilder();
|
|
598
|
-
md.addTitle(cdoc.name,1)
|
|
655
|
+
function generateHookDoc(cdoc: IHookDocumentation, docs: IDocObject) {
|
|
656
|
+
let md = new MarkdownBuilder();
|
|
657
|
+
md.addTitle(cdoc.name, 1)
|
|
599
658
|
md.addParagraph(cdoc.summary);
|
|
600
|
-
md.addTitle('Installation',2);
|
|
659
|
+
md.addTitle('Installation', 2);
|
|
601
660
|
md.addCode(`import {${cdoc.name}} from 'uxp/components';`);
|
|
602
661
|
if (cdoc.examples.length > 0) {
|
|
603
|
-
md.addTitle('Examples',2);
|
|
604
|
-
for(let i in cdoc.examples) {
|
|
662
|
+
md.addTitle('Examples', 2);
|
|
663
|
+
for (let i in cdoc.examples) {
|
|
605
664
|
md.addCode(cdoc.examples[i].summary)
|
|
606
665
|
}
|
|
607
666
|
}
|
|
608
|
-
|
|
667
|
+
|
|
609
668
|
return md.toString();
|
|
610
669
|
}
|
|
611
670
|
|
|
612
|
-
function generateTypeDoc(cdoc:ITypeDocumentation,docs:IDocObject) {
|
|
613
|
-
let md =new MarkdownBuilder();
|
|
614
|
-
md.addTitle(cdoc.name,1)
|
|
671
|
+
function generateTypeDoc(cdoc: ITypeDocumentation, docs: IDocObject) {
|
|
672
|
+
let md = new MarkdownBuilder();
|
|
673
|
+
md.addTitle(cdoc.name, 1)
|
|
615
674
|
md.addParagraph(cdoc.summary);
|
|
616
675
|
md.addCode(cdoc.code);
|
|
617
|
-
md.addTitle('Usage',2);
|
|
676
|
+
md.addTitle('Usage', 2);
|
|
618
677
|
md.addCode(`import {${cdoc.name}} from 'uxp/components';`);
|
|
619
678
|
if (cdoc.examples.length > 0) {
|
|
620
|
-
md.addTitle('Examples',2);
|
|
621
|
-
for(let i in cdoc.examples) {
|
|
679
|
+
md.addTitle('Examples', 2);
|
|
680
|
+
for (let i in cdoc.examples) {
|
|
622
681
|
md.addCode(cdoc.examples[i].summary)
|
|
623
682
|
}
|
|
624
683
|
}
|
|
625
|
-
|
|
626
|
-
|
|
684
|
+
|
|
685
|
+
|
|
627
686
|
return md.toString();
|
|
628
687
|
}
|
|
629
|
-
function linkedType(t: string, docs:IDocObject) {
|
|
688
|
+
function linkedType(t: string, docs: IDocObject) {
|
|
630
689
|
if (docs.types.find(x => x.name.toUpperCase() == t.toUpperCase())) {
|
|
631
690
|
return `[${t}](types/${t})`;
|
|
632
691
|
}
|
|
633
692
|
return t;
|
|
634
693
|
}
|
|
635
|
-
function generateComponentDoc(cdoc:IComponentDocumentation,docs:IDocObject) {
|
|
636
|
-
let md =new MarkdownBuilder();
|
|
637
|
-
md.addTitle(cdoc.name,1)
|
|
694
|
+
function generateComponentDoc(cdoc: IComponentDocumentation, docs: IDocObject) {
|
|
695
|
+
let md = new MarkdownBuilder();
|
|
696
|
+
md.addTitle(cdoc.name, 1)
|
|
638
697
|
md.addParagraph(cdoc.summary);
|
|
639
|
-
md.addTitle('Installation',2);
|
|
698
|
+
md.addTitle('Installation', 2);
|
|
640
699
|
md.addCode(`import {${cdoc.name}} from 'uxp/components';`);
|
|
641
700
|
if (cdoc.examples.length > 0) {
|
|
642
|
-
md.addTitle('Examples',2);
|
|
643
|
-
for(let i in cdoc.examples) {
|
|
701
|
+
md.addTitle('Examples', 2);
|
|
702
|
+
for (let i in cdoc.examples) {
|
|
644
703
|
md.addCode(cdoc.examples[i].summary)
|
|
645
704
|
}
|
|
646
705
|
}
|
|
647
706
|
if (cdoc.props.length > 0) {
|
|
648
707
|
|
|
649
|
-
md.addTitle('Properties',2);
|
|
650
|
-
md.addTable(cdoc.props.map(p => ({Name:p.name,Type:linkedType(p.type,docs),Description:p.summary})));
|
|
651
|
-
for(let i in cdoc.props) {
|
|
708
|
+
md.addTitle('Properties', 2);
|
|
709
|
+
md.addTable(cdoc.props.map(p => ({ Name: p.name, Type: linkedType(p.type, docs), Description: p.summary })));
|
|
710
|
+
for (let i in cdoc.props) {
|
|
652
711
|
let prop = cdoc.props[i];
|
|
653
|
-
md.addTitle(prop.name,3);
|
|
712
|
+
md.addTitle(prop.name, 3);
|
|
654
713
|
md.addParagraph('---');
|
|
655
714
|
md.addParagraph(prop.summary);
|
|
656
|
-
md.addTable([{'type':linkedType(prop.type,docs)}]);
|
|
657
|
-
|
|
658
|
-
for(let j in prop.examples) {
|
|
715
|
+
md.addTable([{ 'type': linkedType(prop.type, docs) }]);
|
|
716
|
+
|
|
717
|
+
for (let j in prop.examples) {
|
|
659
718
|
md.addCode(prop.examples[j].summary);
|
|
660
719
|
}
|
|
661
720
|
}
|
|
662
|
-
|
|
721
|
+
|
|
663
722
|
}
|
|
664
723
|
return md.toString();
|
|
665
724
|
}
|
|
666
|
-
function generateDocs(root: string, outputPath:string) {
|
|
667
|
-
let [docInfo,docs] = load(root);
|
|
725
|
+
function generateDocs(root: string, outputPath: string) {
|
|
726
|
+
let [docInfo, docs] = load(root);
|
|
668
727
|
let components = docs.components;
|
|
669
|
-
if (outputPath.endsWith('/')) outputPath = outputPath.substring(0,outputPath.length-1);
|
|
728
|
+
if (outputPath.endsWith('/')) outputPath = outputPath.substring(0, outputPath.length - 1);
|
|
670
729
|
|
|
671
730
|
mkdirp.sync(outputPath + '/components/');
|
|
672
731
|
mkdirp.sync(outputPath + '/types/');
|
|
673
732
|
mkdirp.sync(outputPath + '/hooks/');
|
|
674
733
|
|
|
675
|
-
for(let i in components) {
|
|
734
|
+
for (let i in components) {
|
|
676
735
|
let component = components[i];
|
|
677
736
|
if (ComponentFlags.Export === (component.flags & ComponentFlags.Export)) {
|
|
678
|
-
let md = generateComponentDoc(component,docs);
|
|
737
|
+
let md = generateComponentDoc(component, docs);
|
|
679
738
|
let path = outputPath + '/components/' + component.name + '.md';
|
|
680
739
|
|
|
681
|
-
console.log(chalk.gray('Writing component',component.name,'to',path));
|
|
682
|
-
fs.writeFileSync(path,md.toString());
|
|
740
|
+
console.log(chalk.gray('Writing component', component.name, 'to', path));
|
|
741
|
+
fs.writeFileSync(path, md.toString());
|
|
683
742
|
}
|
|
684
743
|
}
|
|
685
|
-
for(let i in docs.types) {
|
|
744
|
+
for (let i in docs.types) {
|
|
686
745
|
let type = docs.types[i];
|
|
687
746
|
if (ComponentFlags.Export === (type.flags & ComponentFlags.Export)) {
|
|
688
|
-
let md = generateTypeDoc(type,docs);
|
|
747
|
+
let md = generateTypeDoc(type, docs);
|
|
689
748
|
let path = outputPath + '/types/' + type.name + '.md';
|
|
690
|
-
console.log(chalk.gray('Writing type',type.name,'to',path));
|
|
691
|
-
fs.writeFileSync(path,md.toString());
|
|
749
|
+
console.log(chalk.gray('Writing type', type.name, 'to', path));
|
|
750
|
+
fs.writeFileSync(path, md.toString());
|
|
692
751
|
}
|
|
693
752
|
}
|
|
694
753
|
|
|
695
|
-
for(let i in docs.hooks) {
|
|
754
|
+
for (let i in docs.hooks) {
|
|
696
755
|
let hook = docs.hooks[i];
|
|
697
756
|
if (ComponentFlags.Export === (hook.flags & ComponentFlags.Export)) {
|
|
698
|
-
let md = generateHookDoc(hook,docs);
|
|
757
|
+
let md = generateHookDoc(hook, docs);
|
|
699
758
|
let path = outputPath + '/hooks/' + hook.name + '.md';
|
|
700
|
-
console.log(chalk.gray('Writing hook',hook.name,'to',path));
|
|
701
|
-
fs.writeFileSync(path,md.toString());
|
|
759
|
+
console.log(chalk.gray('Writing hook', hook.name, 'to', path));
|
|
760
|
+
fs.writeFileSync(path, md.toString());
|
|
702
761
|
}
|
|
703
762
|
}
|
|
704
763
|
}
|
|
705
|
-
function generateTypeDefinition(root:string,outputPath:string,moduleName:string) {
|
|
706
|
-
|
|
764
|
+
function generateTypeDefinition(root: string, outputPath: string, moduleName: string) {
|
|
765
|
+
|
|
707
766
|
|
|
708
|
-
let [docInfo,docs] = load(root);
|
|
709
|
-
let moduleCode = generateExportModule(docs,docInfo,{moduleName:moduleName || 'module'});
|
|
710
|
-
fs.writeFileSync(outputPath,moduleCode);
|
|
767
|
+
let [docInfo, docs] = load(root);
|
|
768
|
+
let moduleCode = generateExportModule(docs, docInfo, { moduleName: moduleName || 'module' });
|
|
769
|
+
fs.writeFileSync(outputPath, moduleCode);
|
|
711
770
|
}
|
|
712
771
|
|
|
713
772
|
export function main() {
|
|
714
773
|
try {
|
|
715
774
|
let cmd = clap
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
775
|
+
.command('react-tsdoc')
|
|
776
|
+
.description('Generate docs for React components')
|
|
777
|
+
.version('0.0.1')
|
|
778
|
+
;
|
|
720
779
|
cmd.command('types [input.ts] [output.t.ds]')
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
.action((actionArgs:{args:string[],options:any})=>{
|
|
725
|
-
let args = actionArgs.args || [];
|
|
726
|
-
let options = actionArgs.options || {};
|
|
727
|
-
|
|
728
|
-
generateTypeDefinition(
|
|
729
|
-
args[0],
|
|
730
|
-
args[1],
|
|
731
|
-
options.moduleName
|
|
732
|
-
);
|
|
733
|
-
})
|
|
780
|
+
.option('--module-name <name>')
|
|
734
781
|
|
|
735
|
-
|
|
782
|
+
|
|
783
|
+
.action((actionArgs: { args: string[], options: any }) => {
|
|
784
|
+
let args = actionArgs.args || [];
|
|
785
|
+
let options = actionArgs.options || {};
|
|
786
|
+
|
|
787
|
+
generateTypeDefinition(
|
|
788
|
+
args[0],
|
|
789
|
+
args[1],
|
|
790
|
+
options.moduleName
|
|
791
|
+
);
|
|
792
|
+
})
|
|
793
|
+
|
|
794
|
+
;
|
|
736
795
|
|
|
737
796
|
cmd.command('docs [input.ts] [output-folder]')
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
797
|
+
.action((actionArgs: { args: string[], options: any }) => {
|
|
798
|
+
let { args, options } = actionArgs;
|
|
799
|
+
generateDocs(args[0], args[1]);
|
|
800
|
+
})
|
|
801
|
+
;
|
|
802
|
+
|
|
744
803
|
cmd.run();
|
|
745
|
-
} catch(e) {
|
|
804
|
+
} catch (e) {
|
|
746
805
|
console.error(chalk.red(e));
|
|
747
806
|
|
|
748
807
|
}
|
|
749
|
-
|
|
808
|
+
|
|
750
809
|
|
|
751
810
|
}
|
|
752
811
|
|