@iviva/react-tsdoc 0.1.0 → 0.1.4
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 +74 -18
- package/dist/index.js.map +1 -1
- package/package-lock.json +1 -1
- package/package.json +1 -1
- package/src/index.ts +285 -222
|
@@ -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
|
@@ -157,13 +157,38 @@ function generateHookTypeDefinition(hook) {
|
|
|
157
157
|
}
|
|
158
158
|
function generateComponentTypeDefinition(c, interfaces) {
|
|
159
159
|
let code = "";
|
|
160
|
+
let type = c.type || 'functional';
|
|
160
161
|
let inf = interfaces[c.propType];
|
|
161
162
|
if (inf) {
|
|
162
163
|
code += inf.comment + '\n';
|
|
163
164
|
code += inf.code + '\n';
|
|
164
165
|
}
|
|
166
|
+
if (c.stateType) {
|
|
167
|
+
let stateInf = interfaces[c.stateType];
|
|
168
|
+
if (stateInf) {
|
|
169
|
+
code += stateInf.comment + '\n';
|
|
170
|
+
code += stateInf.code + '\n';
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (c.refType) {
|
|
174
|
+
let refInf = interfaces[c.refType];
|
|
175
|
+
if (refInf) {
|
|
176
|
+
code += refInf.comment + '\n';
|
|
177
|
+
code += refInf.code + '\n';
|
|
178
|
+
}
|
|
179
|
+
}
|
|
165
180
|
code += c.comment + '\n';
|
|
166
|
-
|
|
181
|
+
switch (type) {
|
|
182
|
+
case 'functional':
|
|
183
|
+
code += `export const ${c.name} : React.FunctionComponent<${c.propType}>;\n`;
|
|
184
|
+
break;
|
|
185
|
+
case 'class':
|
|
186
|
+
code += `export class ${c.name} extends React.Component<${c.propType}, ${c.stateType || 'any'}> {}\n`;
|
|
187
|
+
break;
|
|
188
|
+
case 'forwardRef':
|
|
189
|
+
code += `export const ${c.name}:React.ForwardRefExoticComponent<${c.propType} & React.RefAttributes<${c.refType || 'any'}>>;\n`;
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
167
192
|
return code;
|
|
168
193
|
}
|
|
169
194
|
function fillRelatedTypes(t, types, docInfo) {
|
|
@@ -285,7 +310,28 @@ function parseVariableDeclaration(node, docInfo) {
|
|
|
285
310
|
if (type == 'React.FunctionComponent') {
|
|
286
311
|
let propType = node.type.typeArguments[0].getText();
|
|
287
312
|
let comment = extractComment(node.parent);
|
|
288
|
-
docInfo.components[name] = { comment, propType, name };
|
|
313
|
+
docInfo.components[name] = { comment, propType, name, type: 'functional' };
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
316
|
+
if (type == 'React.ForwardRefExoticComponent') {
|
|
317
|
+
let cType = node.type.typeArguments[0].getText();
|
|
318
|
+
// get prop type and ref type
|
|
319
|
+
// assume
|
|
320
|
+
// - props defined as following format <PropType & RefType>
|
|
321
|
+
// - RefType always starts with `React.RefAttributes`
|
|
322
|
+
let parts = cType.split("&", 2).map(p => p.trim());
|
|
323
|
+
let propType = parts[0];
|
|
324
|
+
let refType = parts[1];
|
|
325
|
+
if (parts[0].startsWith('React.RefAttributes')) {
|
|
326
|
+
propType = parts[1];
|
|
327
|
+
refType = parts[0];
|
|
328
|
+
}
|
|
329
|
+
refType = refType
|
|
330
|
+
.replace('React.RefAttributes<', '')
|
|
331
|
+
.replace(">", '')
|
|
332
|
+
.trim();
|
|
333
|
+
let comment = extractComment(node.parent);
|
|
334
|
+
docInfo.components[name] = { comment, propType, refType, name, type: 'forwardRef' };
|
|
289
335
|
return;
|
|
290
336
|
}
|
|
291
337
|
if (name.startsWith('use')) {
|
|
@@ -297,11 +343,12 @@ function parseVariableDeclaration(node, docInfo) {
|
|
|
297
343
|
function parseClassDeclaration(node, docInfo) {
|
|
298
344
|
var _a, _b;
|
|
299
345
|
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
|
|
346
|
+
if (className == 'React.Component') {
|
|
301
347
|
let propType = node.heritageClauses[0].types[0].typeArguments[0].getText();
|
|
348
|
+
let stateType = node.heritageClauses[0].types[0].typeArguments[1].getText();
|
|
302
349
|
let comment = extractComment(node);
|
|
303
350
|
let name = node.name.getText();
|
|
304
|
-
docInfo.components[name] = { comment, propType, name };
|
|
351
|
+
docInfo.components[name] = { comment, propType, name, stateType, type: 'class' };
|
|
305
352
|
}
|
|
306
353
|
}
|
|
307
354
|
function parseTypeAlias(node, docInfo) {
|
|
@@ -348,10 +395,11 @@ function walkTree(node, docInfo) {
|
|
|
348
395
|
parseClassDeclaration(node, docInfo);
|
|
349
396
|
break;
|
|
350
397
|
case ts.SyntaxKind.FunctionDeclaration:
|
|
398
|
+
case 242:
|
|
351
399
|
parseVariableDeclaration(node, docInfo);
|
|
352
400
|
break;
|
|
353
401
|
}
|
|
354
|
-
node.forEachChild(child => walkTree(child, docInfo));
|
|
402
|
+
node.forEachChild((child) => walkTree(child, docInfo));
|
|
355
403
|
}
|
|
356
404
|
function validateProgram(program) {
|
|
357
405
|
const compilerDiagnostics = program.getSemanticDiagnostics();
|
|
@@ -487,6 +535,12 @@ function generateTypeDoc(cdoc, docs) {
|
|
|
487
535
|
}
|
|
488
536
|
return md.toString();
|
|
489
537
|
}
|
|
538
|
+
function linkedType(t, docs) {
|
|
539
|
+
if (docs.types.find(x => x.name.toUpperCase() == t.toUpperCase())) {
|
|
540
|
+
return `[${t}](types/${t})`;
|
|
541
|
+
}
|
|
542
|
+
return t;
|
|
543
|
+
}
|
|
490
544
|
function generateComponentDoc(cdoc, docs) {
|
|
491
545
|
let md = new MarkdownBuilder();
|
|
492
546
|
md.addTitle(cdoc.name, 1);
|
|
@@ -499,16 +553,18 @@ function generateComponentDoc(cdoc, docs) {
|
|
|
499
553
|
md.addCode(cdoc.examples[i].summary);
|
|
500
554
|
}
|
|
501
555
|
}
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
let
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
556
|
+
if (cdoc.props.length > 0) {
|
|
557
|
+
md.addTitle('Properties', 2);
|
|
558
|
+
md.addTable(cdoc.props.map(p => ({ Name: p.name, Type: linkedType(p.type, docs), Description: p.summary })));
|
|
559
|
+
for (let i in cdoc.props) {
|
|
560
|
+
let prop = cdoc.props[i];
|
|
561
|
+
md.addTitle(prop.name, 3);
|
|
562
|
+
md.addParagraph('---');
|
|
563
|
+
md.addParagraph(prop.summary);
|
|
564
|
+
md.addTable([{ 'type': linkedType(prop.type, docs) }]);
|
|
565
|
+
for (let j in prop.examples) {
|
|
566
|
+
md.addCode(prop.examples[j].summary);
|
|
567
|
+
}
|
|
512
568
|
}
|
|
513
569
|
}
|
|
514
570
|
return md.toString();
|
|
@@ -518,9 +574,9 @@ function generateDocs(root, outputPath) {
|
|
|
518
574
|
let components = docs.components;
|
|
519
575
|
if (outputPath.endsWith('/'))
|
|
520
576
|
outputPath = outputPath.substring(0, outputPath.length - 1);
|
|
521
|
-
mkdirp_1.default(outputPath + '/components/');
|
|
522
|
-
mkdirp_1.default(outputPath + '/types/');
|
|
523
|
-
mkdirp_1.default(outputPath + '/hooks/');
|
|
577
|
+
mkdirp_1.default.sync(outputPath + '/components/');
|
|
578
|
+
mkdirp_1.default.sync(outputPath + '/types/');
|
|
579
|
+
mkdirp_1.default.sync(outputPath + '/hooks/');
|
|
524
580
|
for (let i in components) {
|
|
525
581
|
let component = components[i];
|
|
526
582
|
if (ComponentFlags.Export === (component.flags & ComponentFlags.Export)) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wDAA0C;AAC1C,uCAAyB;AACzB,+CAAiC;AACjC,kDAA0B;AAE1B,gDAAwB;AACxB,oDAA4B;AAE5B,IAAK,cAIJ;AAJD,WAAK,cAAc;IACf,mDAAQ,CAAA;IACR,uDAAe,CAAA;IACf,mDAAa,CAAA;AACjB,CAAC,EAJI,cAAc,KAAd,cAAc,QAIlB;AAED,SAAS,kBAAkB,CAAC,OAAc;IACtC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AACD,SAAS,QAAQ,CAAC,GAAG,OAAa;IAC9B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AACxC,CAAC;AACD,SAAS,OAAO,CAAC,GAAG,OAAa;IAC7B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AACzC,CAAC;AACD,SAAS,UAAU,CAAC,GAAG,OAAa;IAChC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AAC7C,CAAC;AACD,SAAS,QAAQ,CAAC,GAAG,OAAa;IAC9B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AAC7C,CAAC;AACD,SAAS,UAAU,CAAC,IAAW,EAAC,KAAY;IACxC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC3D,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC;AACD,MAAM,eAAe;IAArB;QACY,SAAI,GAAG,EAAE,CAAC;IAyCtB,CAAC;IAxCU,QAAQ,CAAC,KAAY,EAAC,KAAa;QACtC,IAAI,UAAU,GAAG,GAAG,CAAC;QACrB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAI,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,KAAK,EAAC,CAAC,EAAE,EAAE;YACrB,MAAM,IAAI,UAAU,CAAC;SACxB;QACD,IAAI,CAAC,IAAI,IAAI,MAAM,GAAE,GAAG,GAAG,KAAK,GAAC,MAAM,CAAC;IAC5C,CAAC;IACM,YAAY,CAAC,CAAQ;QAExB,IAAI,CAAC,IAAI,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;IACrC,CAAC;IAEM,OAAO,CAAC,IAAW;QACtB,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;YACxB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SAC5B;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACtB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAC,IAAI,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;SAC1C;QACD,IAAI,CAAC,IAAI,IAAI,cAAc,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,WAAW,CAAA;IAC3D,CAAC;IACM,QAAQ,CAAC,KAAW;QACvB,MAAM,WAAW,GAAG,CAAC,CAAQ,EAAE,EAAE;YAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAC,KAAK,CAAC,CAAC;QACtD,CAAC,CAAA;QACD,IAAI,KAAK,CAAC,MAAM,IAAE,CAAC;YAAE,OAAO;QAC5B,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAChE,IAAI,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAC,KAAK,CAAC;QACzD,KAAI,IAAI,CAAC,IAAI,KAAK,EAAE;YAChB,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SAChF;IAEL,CAAC;IACM,QAAQ;QACX,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;CACJ;AAsHD,SAAS,+BAA+B,CAAC,IAAkB;IACvD,IAAI,CAAC,IAAI,EAAE;QACP,OAAO,EAAE,CAAC;KACb;IACD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,IAAI,YAAY,KAAK,CAAC,UAAU,EAAE;QAClC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;KACrC;IACD,KAAI,MAAM,SAAS,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;QACzC,MAAM,IAAI,+BAA+B,CAAC,SAAS,CAAC,CAAC;KACxD;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AACD,SAAS,iBAAiB,CAAC,OAAe;IACtC,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAE5C,MAAM,CAAC,gBAAgB,CACnB,IAAI,KAAK,CAAC,kBAAkB,CAAC;QACzB,OAAO,EAAC,SAAS;QACjB,UAAU,EAAC,KAAK,CAAC,kBAAkB,CAAC,WAAW;QAC/C,aAAa,EAAC,KAAK;KACtB,CAAE,CACN,CAAC;IAEF,MAAM,CAAC,gBAAgB,CACnB,IAAI,KAAK,CAAC,kBAAkB,CAAC;QACzB,OAAO,EAAC,OAAO;QACf,UAAU,EAAC,KAAK,CAAC,kBAAkB,CAAC,WAAW;QAC/C,aAAa,EAAC,KAAK;KACtB,CAAE,CACN,CAAC;IAEF,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAE3C,IAAI,GAAG,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,OAAO,GAAG,+BAA+B,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAC7E,IAAI,QAAQ,GAAc,EAAE,CAAC;IAC7B,IAAI,KAAK,GAAkB,cAAc,CAAC,IAAI,CAAC;IAC/C,KAAI,MAAM,KAAK,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,EAAE;QAC5C,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,UAAU,EAAE;YACtC,IAAI,OAAO,GAAG,EAAC,OAAO,EAAC,+BAA+B,CAAC,KAAK,CAAC,OAAO,CAAC,EAAC,CAAC;YACvE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAE1B;KACJ;IACD,IAAI,KAAK,GAAmB,cAAc,CAAC,IAAI,CAAC;IAEhD,IAAI,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QACrD,KAAK,GAAG,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC;KACzC;IAED,IAAI,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QACnD,KAAK,GAAG,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC;KACvC;IAED,OAAO,CAAC,OAAO,EAAC,QAAQ,EAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AACD,SAAS,gBAAgB,CAAC,GAA0B;IAChD,IAAI,OAAO,GAAkC,EAAE,CAAC;IAChD,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE;QACvB,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,OAAO,GAAgC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3G,CAAC,OAAO,CAAC,OAAO,EAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACzB;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AACD,SAAS,0BAA0B,CAAC,IAAe;IAC/C,OAAO,gBAAgB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;AACrD,CAAC;AACD,SAAS,+BAA+B,CAAC,CAAiB,EAAC,UAA+C;IACtG,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACjC,IAAI,GAAG,EAAE;QACL,IAAI,IAAI,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;QAC3B,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;KAC3B;IACD,IAAI,IAAI,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;IACzB,IAAI,IAAI,gBAAgB,CAAC,CAAC,IAAI,8BAA8B,CAAC,CAAC,QAAQ,MAAM,CAAA;IAC5E,OAAO,IAAI,CAAC;AAChB,CAAC;AACD,SAAS,gBAAgB,CAAC,CAAQ,EAAC,KAAS,EAAC,OAAgB;IACzD,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;QACvB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,IAAI,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,KAAI,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE;YACtB,gBAAgB,CAAC,CAAC,CAAC,OAAO,EAAC,KAAK,EAAC,OAAO,CAAC,CAAC;SAC7C;QACD,OAAO;KACV;IACD,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QACnB,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,OAAO;KACV;IACD,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;QACtB,IAAI,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7B,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,gBAAgB,CAAC,CAAC,CAAC,MAAM,EAAC,KAAK,EAAC,OAAO,CAAC,CAAC;QACzC,KAAI,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE;YACvB,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC;YAChB,gBAAgB,CAAC,EAAE,EAAC,KAAK,EAAC,OAAO,CAAC,CAAC;SACtC;KACJ;AAEL,CAAC;AACD,SAAS,iBAAiB,CAAC,OAAiB;IACxC,IAAI,UAAU,GAA8B,EAAE,CAAC;IAC/C,6BAA6B;IAC7B,KAAK,IAAI,EAAE,IAAI,OAAO,CAAC,UAAU,EAAE;QAC/B,IAAI,YAAY,GAA4B,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAC,cAAc,CAAC,IAAI,EAAC,CAAC;QACzH,IAAI,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC,YAAY,CAAC,OAAO,EAAC,YAAY,CAAC,QAAQ,EAAC,YAAY,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAE3G,IAAI,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,CAAC,CAAC,QAAQ,EAAE;YACZ,YAAY,CAAC,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;SAClD;QACD,4CAA4C;QAE5C,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAEjC;IACD,IAAI,KAAK,GAAwB,EAAE,CAAC;IACpC,KAAI,IAAI,EAAE,IAAI,OAAO,CAAC,KAAK,EAAE;QACzB,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,OAAO,GAAsB,EAAC,IAAI,EAAC,IAAI,CAAC,IAAI,EAAC,KAAK,EAAC,cAAc,CAAC,IAAI,EAAC,OAAO,EAAC,EAAE,EAAC,QAAQ,EAAC,EAAE,EAAC,CAAC;QACnG,CAAC,OAAO,CAAC,OAAO,EAAC,OAAO,CAAC,QAAQ,EAAC,OAAO,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnF,IAAI,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,oBAAoB;QACpB,oCAAoC;QACpC,IAAI;QACJ,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvB;IACD,6BAA6B;IAC7B,6CAA6C;IAC7C,iDAAiD;IACjD,IAAI;IACJ,IAAI,KAAK,GAAwB,EAAE,CAAC;IACpC,KAAI,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QAC1C,IAAI,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,OAAO,GAAsB,EAAE,QAAQ,EAAC,EAAE,EAAC,IAAI,EAAC,GAAG,CAAC,IAAI,EAAC,OAAO,EAAC,EAAE,EAAC,IAAI,EAAC,WAAW,EAAC,IAAI,EAAC,EAAE,EAAC,KAAK,EAAC,cAAc,CAAC,IAAI,EAAC,CAAC;QAC5H,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACxB,CAAC,OAAO,CAAC,OAAO,EAAC,OAAO,CAAC,QAAQ,EAAC,OAAO,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClF,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvB;IACD,KAAI,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QACzC,IAAI,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,OAAO,GAAsB,EAAE,QAAQ,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,OAAO,EAAC,EAAE,EAAC,IAAI,EAAC,UAAU,EAAC,IAAI,EAAC,EAAE,EAAC,KAAK,EAAC,cAAc,CAAC,IAAI,EAAC,CAAC;QACpH,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACxB,CAAC,OAAO,CAAC,OAAO,EAAC,OAAO,CAAC,QAAQ,EAAC,OAAO,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClF,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvB;IACD,KAAI,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACtC,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,OAAO,GAAsB,EAAE,QAAQ,EAAC,EAAE,EAAC,IAAI,EAAC,CAAC,EAAC,OAAO,EAAC,EAAE,EAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAC,EAAE,EAAC,KAAK,EAAC,cAAc,CAAC,IAAI,EAAC,CAAC;QACjH,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACxB,CAAC,OAAO,CAAC,OAAO,EAAC,OAAO,CAAC,QAAQ,EAAC,OAAO,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClF,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvB;IAGD,OAAO,EAAC,UAAU,EAAC,KAAK,EAAC,KAAK,EAAC,CAAC;AACpC,CAAC;AAED,SAAS,cAAc,CAAC,IAAa;IACjC,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,CAAC;IAClD,IAAI,QAAQ,GAAG,EAAE,CAAC,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9D,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IACzB,OAAO,QAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvE,CAAC;AACD,SAAS,OAAO,CAAC,IAAY;IACzB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACvF,CAAC;AACD,SAAS,sBAAsB,CAAC,IAAY,EAAC,OAAgB;AAE7D,CAAC;AACD,SAAS,yBAAyB,CAAC,IAAa,EAAE,OAAiB;IAE/D,IAAI,IAAI,GAAI,IAAY,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACxC,IAAI,OAAO,GAAI,IAAY,CAAC,OAAO,CAAC;IACpC,IAAI,OAAO,CAAC,MAAM,IAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,EAAE;QACrE,OAAO,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,OAAO,CAAC,CAAC;KACrD;IAED,IAAI,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,GAAG,GAA0B,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,OAAO,CAAC,IAAI,CAAC,EAAC,CAAC;IAC/F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,IAAI,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QAClC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;KAC/D;IACD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;AAEnC,CAAC;AACD,SAAS,wBAAwB,CAAC,IAAa,EAAE,OAAiB;;IAE9D,IAAI,IAAI,eAAI,IAAY,CAAC,IAAI,0CAAE,QAAQ,0CAAE,OAAO,EAAE,CAAC;IACnD,IAAI,aAAC,IAAY,0CAAE,IAAI,0CAAE,IAAI,KAAI,EAAE,CAAC,UAAU,CAAC,aAAa;QACxD,aAAC,IAAY,0CAAE,IAAI,0CAAE,IAAI,KAAI,EAAE,CAAC,UAAU,CAAC,YAAY,EAEvD;QACI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;KACtB;IACL,IAAI,CAAC,IAAI,EAAE;QACP,OAAO;KACV;IACD,IAAI,IAAI,GAAI,IAAY,CAAC,IAAI,CAAC,OAAO,EAAY,CAAC;IAClD,IAAI,IAAI,IAAI,yBAAyB,EAAE;QACnC,IAAI,QAAQ,GAAI,IAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAC7D,IAAI,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACvD,OAAO;KACV;IACD,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;QACxB,IAAI,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,UAAU,GAAqB,EAAE,CAAC;QAEtC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAC,IAAI,EAAC,IAAI,EAAC,UAAU,EAAC,OAAO,EAAC,CAAC;KACxD;AACL,CAAC;AACD,SAAS,qBAAqB,CAAC,IAAa,EAAE,OAAiB;;IAC3D,IAAI,SAAS,eAAI,IAAY,0CAAE,eAAe,CAAC,CAAC,2CAAG,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC;IACjF,IAAI,SAAS,GAAG,iBAAiB,EAAE;QAC/B,IAAI,QAAQ,GAAI,IAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACpF,IAAI,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI,GAAI,IAAY,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACxC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KAE1D;AACL,CAAC;AACD,SAAS,cAAc,CAAC,IAAY,EAAC,OAAgB;IACjD,IAAI,IAAI,GAAI,IAAY,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACxC,IAAI,IAAI,GAAI,IAAY,CAAC,IAAI,CAAC;IAC9B,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE;QACzC,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAChC,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACjC,IAAI,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,GAAsB,EAAC,UAAU,EAAC,EAAE,EAAC,MAAM,EAAC,UAAU,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC;QAC1E,KAAI,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,UAAU,CAAC,MAAM,EAAC,CAAC,EAAE,EAAE;YACjC,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,EAAE,GAAkB,EAAC,IAAI,EAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAC,IAAI,EAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAC,CAAC;YACtF,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAEzB;QACD,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO;KACV;IACD,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE;QACtC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,IAAI,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,GAAU,EAAC,KAAK,EAAC,EAAE,EAAC,OAAO,EAAC,IAAI,EAAC,CAAC;QAEvC,KAAI,IAAI,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,KAAK,CAAC,MAAM,EAAC,CAAC,EAAE,EAAE;YAC5B,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAC7B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACrB;QACD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC5B;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,IAAa,EAAE,OAAiB;IAC9C,QAAQ,IAAI,CAAC,IAAI,EAAE;QACf,KAAK,EAAE,CAAC,UAAU,CAAC,oBAAoB;YACnC,cAAc,CAAC,IAAI,EAAC,OAAO,CAAC,CAAC;YAC7B,MAAM;QACV,KAAK,EAAE,CAAC,UAAU,CAAC,oBAAoB;YACnC,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACzC,MAAM;QACV,KAAK,EAAE,CAAC,UAAU,CAAC,mBAAmB;YAClC,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACxC,MAAM;QACV,KAAK,EAAE,CAAC,UAAU,CAAC,gBAAgB;YAC/B,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACrC,MAAM;QACV,KAAK,EAAE,CAAC,UAAU,CAAC,mBAAmB;YAClC,wBAAwB,CAAC,IAAI,EAAC,OAAO,CAAC,CAAC;YACvC,MAAM;KAIb;IACD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAEzD,CAAC;AACD,SAAS,eAAe,CAAC,OAAmB;IACxC,MAAM,mBAAmB,GAAiC,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAC3F,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;QAChC,KAAK,MAAM,UAAU,IAAI,mBAAmB,EAAE;YAE1C,MAAM,OAAO,GAAW,EAAE,CAAC,4BAA4B,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACtF,IAAI,UAAU,CAAC,IAAI,EAAE;gBACjB,MAAM,QAAQ,GAAwB,UAAU,CAAC,IAAI,CAAC,6BAA6B,CAAC,UAAU,CAAC,KAAM,CAAC,CAAC;gBACvG,MAAM,gBAAgB,GAAW,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,QAAQ,CAAC,SAAS,GAAG,CAAC,IAAI;sBACzG,GAAG,OAAO,EAAE,CAAC;gBACnB,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;aACxC;iBAAM;gBACH,kBAAkB,CAAC,OAAO,CAAC,CAAC;aAC/B;SACJ;KACJ;SAAM;QACH,kBAAkB,CAAC,iCAAiC,CAAC,CAAC;KACzD;AACL,CAAC;AAED,SAAS,UAAU,CAAC,OAAmB;IACnC,OAAO,OAAO,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QACvC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;IACjD,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAe,EAAC,OAAgB,EAAC,OAA4B;IACvF,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,EAAE;QACrB,IAAI,IAAI,mBAAmB,OAAO,CAAC,UAAU,OAAO,CAAC;KACxD;IACD,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;QACrB,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC9B,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;SAClD;QACD,IAAI,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC7B,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;SACjD;QACD,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC1B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;SAC9C;QACD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE;YAC/D,IAAI,IAAI,UAAU,CAAC,IAAI,GAAG,OAAO,GAAG,IAAI,GAAI,SAAS,GAAG,GAAG,CAAC,IAAI,GAAC,IAAI,EAAC,MAAM,CAAC,CAAC;SACjF;KACJ;IACD,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;QAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE;YAC/D,IAAI,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,aAAa,GAAG,+BAA+B,CAAC,SAAS,EAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAClF,IAAI,IAAI,UAAU,CAAC,aAAa,EAAC,MAAM,CAAC,CAAC;SAC5C;KACJ;IACD,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;QACrB,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE;YAC/D,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,QAAQ,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;YAChD,IAAI,IAAI,UAAU,CAAC,QAAQ,EAAC,MAAM,CAAC,CAAC;SACvC;KAEJ;IACD,IAAI,IAAI,OAAO,CAAC;IAChB,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,IAAI,CAAC,IAAY;IACtB,IAAI,OAAO,GAAuB;QAC9B,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK;KACxB,CAAC;IACF,QAAQ,CAAC,SAAS,EAAC,IAAI,CAAC,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC1B,IAAI,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAChD,QAAQ,CAAC,UAAU,CAAC,CAAC;IACrB,eAAe,CAAC,OAAO,CAAC,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,CAAC;IACtB,IAAI,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,OAAO,GAAa,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,SAAS,EAAC,EAAE,EAAC,MAAM,EAAC,EAAE,EAAE,CAAC;IAC3F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC5B,IAAI,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,EAAE;YACb,SAAS;SACZ;QAED,IAAI;YACA,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;SACjC;QAAC,OAAO,KAAK,EAAE;YACZ,QAAQ,CAAC,YAAY,MAAM,KAAK,KAAK,EAAE,CAAC,CAAA;SAC3C;KACJ;IACD,IAAI,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,CAAC,OAAO,EAAC,IAAI,CAAC,CAAC;IAI1B;;;;;;;;;;WAUO;AAEP,CAAC;AAGD,SAAS,eAAe,CAAC,IAAuB,EAAC,IAAe;IAC5D,IAAI,EAAE,GAAE,IAAI,eAAe,EAAE,CAAC;IAC9B,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC,CAAA;IACxB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAC,CAAC,CAAC,CAAC;IAC9B,EAAE,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,0BAA0B,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;QAC1B,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAC,CAAC,CAAC,CAAC;QAC1B,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACxB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;SACvC;KACJ;IAED,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,eAAe,CAAC,IAAuB,EAAC,IAAe;IAC5D,IAAI,EAAE,GAAE,IAAI,eAAe,EAAE,CAAC;IAC9B,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC,CAAA;IACxB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC;IACvB,EAAE,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,0BAA0B,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;QAC1B,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAC,CAAC,CAAC,CAAC;QAC1B,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACxB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;SACvC;KACJ;IAGD,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;AACzB,CAAC;AACD,SAAS,oBAAoB,CAAC,IAA4B,EAAC,IAAe;IACtE,IAAI,EAAE,GAAE,IAAI,eAAe,EAAE,CAAC;IAC9B,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC,CAAA;IACxB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAC,CAAC,CAAC,CAAC;IAC9B,EAAE,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,IAAI,0BAA0B,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;QAC1B,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAC,CAAC,CAAC,CAAC;QAC1B,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACxB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;SACvC;KACJ;IACD,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAC,CAAC,CAAC,CAAC;IAC5B,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,IAAI,EAAC,CAAC,CAAC,IAAI,EAAC,IAAI,EAAC,CAAC,CAAC,IAAI,EAAC,WAAW,EAAC,CAAC,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,CAAC;IACpF,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;QACrB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC,CAAC;QACzB,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACvB,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAC,MAAM,EAAC,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC,CAAC;QAElC,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACxB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;SACxC;KACJ;IAED,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;AACzB,CAAC;AACD,SAAS,YAAY,CAAC,IAAY,EAAE,UAAiB;IACjD,IAAI,CAAC,OAAO,EAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACjC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAC,UAAU,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC;IAEvF,gBAAM,CAAC,UAAU,GAAG,cAAc,CAAC,CAAC;IACpC,gBAAM,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAC/B,gBAAM,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAE/B,KAAI,IAAI,CAAC,IAAI,UAAU,EAAE;QACrB,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE;YACrE,IAAI,EAAE,GAAG,oBAAoB,CAAC,SAAS,EAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,IAAI,GAAG,UAAU,GAAG,cAAc,GAAG,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC;YAEhE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mBAAmB,EAAC,SAAS,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,CAAC,CAAC;YACtE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;SACxC;KACJ;IACD,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;QACrB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE;YAChE,IAAI,EAAE,GAAG,eAAe,CAAC,IAAI,EAAC,IAAI,CAAC,CAAC;YACpC,IAAI,IAAI,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,EAAC,IAAI,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,CAAC,CAAC;YAC5D,EAAE,CAAC,aAAa,CAAC,IAAI,EAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;SACxC;KACJ;IAED,KAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;QACrB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE;YAChE,IAAI,EAAE,GAAG,eAAe,CAAC,IAAI,EAAC,IAAI,CAAC,CAAC;YACpC,IAAI,IAAI,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,EAAC,IAAI,CAAC,IAAI,EAAC,IAAI,EAAC,IAAI,CAAC,CAAC,CAAC;YAC5D,EAAE,CAAC,aAAa,CAAC,IAAI,EAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;SACxC;KACJ;AACL,CAAC;AACD,SAAS,sBAAsB,CAAC,IAAW,EAAC,UAAiB,EAAC,UAAiB;IAG3E,IAAI,CAAC,OAAO,EAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,UAAU,GAAG,oBAAoB,CAAC,IAAI,EAAC,OAAO,EAAC,EAAC,UAAU,EAAC,UAAU,IAAI,QAAQ,EAAC,CAAC,CAAC;IACxF,EAAE,CAAC,aAAa,CAAC,UAAU,EAAC,UAAU,CAAC,CAAC;AAC5C,CAAC;AAED,SAAgB,IAAI;IAChB,IAAI;QACA,IAAI,GAAG,GAAG,cAAI;aACb,OAAO,CAAC,aAAa,CAAC;aACtB,WAAW,CAAC,oCAAoC,CAAC;aACjD,OAAO,CAAC,OAAO,CAAC,CAChB;QACD,GAAG,CAAC,OAAO,CAAC,gCAAgC,CAAC;aAC5C,MAAM,CAAC,sBAAsB,CAAC;aAG9B,MAAM,CAAC,CAAC,UAAsC,EAAC,EAAE;YAC9C,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC;YACjC,IAAI,OAAO,GAAG,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC;YAEvC,sBAAsB,CACtB,IAAI,CAAC,CAAC,CAAC,EACP,IAAI,CAAC,CAAC,CAAC,EACP,OAAO,CAAC,UAAU,CACjB,CAAC;QACN,CAAC,CAAC,CAED;QAED,GAAG,CAAC,OAAO,CAAC,iCAAiC,CAAC;aAC7C,MAAM,CAAC,CAAC,UAAsC,EAAC,EAAE;YAC9C,IAAI,EAAC,IAAI,EAAC,OAAO,EAAC,GAAG,UAAU,CAAC;YAChC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CACD;QAED,GAAG,CAAC,GAAG,EAAE,CAAC;KACb;IAAC,OAAM,CAAC,EAAE;QACP,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KAE/B;AAGL,CAAC;AAtCD,oBAsCC"}
|
|
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,63 @@ 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
62
|
}
|
|
63
|
-
if (table.length==0) return;
|
|
63
|
+
if (table.length == 0) return;
|
|
64
64
|
let headers = Object.keys(table[0]);
|
|
65
65
|
this.code += '|' + (headers.map(tableFormat)).join('|') + '|\n';
|
|
66
|
-
this.code += '|' + (headers.map(h=>'-')).join('|')+'|\n';
|
|
67
|
-
for(let i in table) {
|
|
66
|
+
this.code += '|' + (headers.map(h => '-')).join('|') + '|\n';
|
|
67
|
+
for (let i in table) {
|
|
68
68
|
let row = table[i];
|
|
69
69
|
this.code += '|' + (headers.map(h => tableFormat(row[h]))).join('|') + '|\n';
|
|
70
70
|
}
|
|
71
|
-
|
|
71
|
+
|
|
72
72
|
}
|
|
73
73
|
public toString() {
|
|
74
74
|
return this.code;
|
|
@@ -79,7 +79,7 @@ interface IExportModuleOptions {
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
interface ITypeDefinition {
|
|
82
|
-
comment:string;
|
|
82
|
+
comment: string;
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
interface IFunctionParam {
|
|
@@ -87,12 +87,12 @@ interface IFunctionParam {
|
|
|
87
87
|
type: string;
|
|
88
88
|
}
|
|
89
89
|
interface IFunctionSignature extends ITypeDefinition {
|
|
90
|
-
parameters:IFunctionParam[];
|
|
91
|
-
return:string;
|
|
90
|
+
parameters: IFunctionParam[];
|
|
91
|
+
return: string;
|
|
92
92
|
code: string;
|
|
93
93
|
}
|
|
94
|
-
interface IUnion extends ITypeDefinition{
|
|
95
|
-
items:string[];
|
|
94
|
+
interface IUnion extends ITypeDefinition {
|
|
95
|
+
items: string[];
|
|
96
96
|
code: string;
|
|
97
97
|
}
|
|
98
98
|
interface IInterfaceMember {
|
|
@@ -109,7 +109,10 @@ interface IInterfaceDeclaration extends ITypeDefinition {
|
|
|
109
109
|
interface IReactComponent {
|
|
110
110
|
name: string;
|
|
111
111
|
propType: string;
|
|
112
|
+
stateType?: string
|
|
113
|
+
refType?: string
|
|
112
114
|
comment: string;
|
|
115
|
+
type?: 'class' | 'functional' | 'forwardRef'
|
|
113
116
|
}
|
|
114
117
|
interface IReactHookParam {
|
|
115
118
|
name: string;
|
|
@@ -117,37 +120,37 @@ interface IReactHookParam {
|
|
|
117
120
|
}
|
|
118
121
|
interface IReactHook {
|
|
119
122
|
name: string;
|
|
120
|
-
type:string;
|
|
121
|
-
parameters:IReactHookParam[];
|
|
122
|
-
comment:string;
|
|
123
|
+
type: string;
|
|
124
|
+
parameters: IReactHookParam[];
|
|
125
|
+
comment: string;
|
|
123
126
|
}
|
|
124
127
|
interface IDocInfo {
|
|
125
128
|
interfaces: { [key: string]: IInterfaceDeclaration };
|
|
126
129
|
components: { [key: string]: IReactComponent };
|
|
127
130
|
hooks: { [key: string]: IReactHook };
|
|
128
|
-
functions:{[key:string]:IFunctionSignature};
|
|
129
|
-
unions:{[key:string]:IUnion};
|
|
131
|
+
functions: { [key: string]: IFunctionSignature };
|
|
132
|
+
unions: { [key: string]: IUnion };
|
|
130
133
|
|
|
131
134
|
}
|
|
132
135
|
interface IExample {
|
|
133
136
|
summary: string;
|
|
134
|
-
|
|
137
|
+
|
|
135
138
|
}
|
|
136
139
|
interface ITypeDocumentation {
|
|
137
140
|
name: string;
|
|
138
|
-
type: 'interface' | 'function' |'union';
|
|
141
|
+
type: 'interface' | 'function' | 'union';
|
|
139
142
|
summary: string;
|
|
140
|
-
examples:IExample[];
|
|
141
|
-
code:string;
|
|
142
|
-
flags:ComponentFlags;
|
|
143
|
+
examples: IExample[];
|
|
144
|
+
code: string;
|
|
145
|
+
flags: ComponentFlags;
|
|
143
146
|
|
|
144
147
|
}
|
|
145
148
|
|
|
146
149
|
interface IHookDocumentation {
|
|
147
150
|
name: string;
|
|
148
151
|
summary: string;
|
|
149
|
-
examples:IExample[];
|
|
150
|
-
flags:ComponentFlags;
|
|
152
|
+
examples: IExample[];
|
|
153
|
+
flags: ComponentFlags;
|
|
151
154
|
}
|
|
152
155
|
interface IComponentDocumentation {
|
|
153
156
|
/**
|
|
@@ -173,13 +176,13 @@ interface IComponentDocumentation {
|
|
|
173
176
|
/**
|
|
174
177
|
* Any custom @-attribute flags set on the component
|
|
175
178
|
*/
|
|
176
|
-
flags:ComponentFlags;
|
|
179
|
+
flags: ComponentFlags;
|
|
177
180
|
|
|
178
181
|
}
|
|
179
182
|
interface IDocObject {
|
|
180
|
-
components:IComponentDocumentation[];
|
|
181
|
-
hooks:IHookDocumentation[];
|
|
182
|
-
types:ITypeDocumentation[];
|
|
183
|
+
components: IComponentDocumentation[];
|
|
184
|
+
hooks: IHookDocumentation[];
|
|
185
|
+
types: ITypeDocumentation[];
|
|
183
186
|
}
|
|
184
187
|
|
|
185
188
|
/**
|
|
@@ -191,7 +194,7 @@ interface IComponentPropDocumentation {
|
|
|
191
194
|
summary: string;
|
|
192
195
|
examples: IExample[];
|
|
193
196
|
}
|
|
194
|
-
function extractActualContentFromDocMess(node:tsdoc.DocNode):string {
|
|
197
|
+
function extractActualContentFromDocMess(node: tsdoc.DocNode): string {
|
|
195
198
|
if (!node) {
|
|
196
199
|
return "";
|
|
197
200
|
}
|
|
@@ -199,85 +202,112 @@ function extractActualContentFromDocMess(node:tsdoc.DocNode):string {
|
|
|
199
202
|
if (node instanceof tsdoc.DocExcerpt) {
|
|
200
203
|
result += node.content.toString();
|
|
201
204
|
}
|
|
202
|
-
for(const childNode of node.getChildNodes()) {
|
|
205
|
+
for (const childNode of node.getChildNodes()) {
|
|
203
206
|
result += extractActualContentFromDocMess(childNode);
|
|
204
207
|
}
|
|
205
208
|
return result;
|
|
206
209
|
}
|
|
207
|
-
function parseTSDocComment(comment: string): [string, IExample[],ComponentFlags] {
|
|
210
|
+
function parseTSDocComment(comment: string): [string, IExample[], ComponentFlags] {
|
|
208
211
|
let config = new tsdoc.TSDocConfiguration();
|
|
209
212
|
|
|
210
213
|
config.addTagDefinition(
|
|
211
214
|
new tsdoc.TSDocTagDefinition({
|
|
212
|
-
tagName:'@export',
|
|
213
|
-
syntaxKind:tsdoc.TSDocTagSyntaxKind.ModifierTag,
|
|
214
|
-
allowMultiple:false
|
|
215
|
-
}
|
|
215
|
+
tagName: '@export',
|
|
216
|
+
syntaxKind: tsdoc.TSDocTagSyntaxKind.ModifierTag,
|
|
217
|
+
allowMultiple: false
|
|
218
|
+
})
|
|
216
219
|
);
|
|
217
220
|
|
|
218
221
|
config.addTagDefinition(
|
|
219
222
|
new tsdoc.TSDocTagDefinition({
|
|
220
|
-
tagName:'@hook',
|
|
221
|
-
syntaxKind:tsdoc.TSDocTagSyntaxKind.ModifierTag,
|
|
222
|
-
allowMultiple:false
|
|
223
|
-
}
|
|
223
|
+
tagName: '@hook',
|
|
224
|
+
syntaxKind: tsdoc.TSDocTagSyntaxKind.ModifierTag,
|
|
225
|
+
allowMultiple: false
|
|
226
|
+
})
|
|
224
227
|
);
|
|
225
228
|
|
|
226
229
|
let parser = new tsdoc.TSDocParser(config);
|
|
227
230
|
|
|
228
231
|
let ctx = parser.parseString(comment);
|
|
229
232
|
let summary = extractActualContentFromDocMess(ctx.docComment.summarySection);
|
|
230
|
-
let examples:IExample[] = [];
|
|
231
|
-
let props:ComponentFlags = ComponentFlags.None;
|
|
232
|
-
for(const block of ctx.docComment.customBlocks) {
|
|
233
|
+
let examples: IExample[] = [];
|
|
234
|
+
let props: ComponentFlags = ComponentFlags.None;
|
|
235
|
+
for (const block of ctx.docComment.customBlocks) {
|
|
233
236
|
if (block.blockTag.tagName == '@example') {
|
|
234
|
-
let example = {summary:extractActualContentFromDocMess(block.content)};
|
|
237
|
+
let example = { summary: extractActualContentFromDocMess(block.content) };
|
|
235
238
|
examples.push(example);
|
|
236
239
|
|
|
237
240
|
}
|
|
238
241
|
}
|
|
239
|
-
let flags:ComponentFlags =
|
|
242
|
+
let flags: ComponentFlags = ComponentFlags.None;
|
|
240
243
|
|
|
241
244
|
if (ctx.docComment.modifierTagSet.hasTagName('@export')) {
|
|
242
245
|
flags = flags | ComponentFlags.Export;
|
|
243
|
-
}
|
|
246
|
+
}
|
|
244
247
|
|
|
245
248
|
if (ctx.docComment.modifierTagSet.hasTagName('@hook')) {
|
|
246
249
|
flags = flags | ComponentFlags.Hook;
|
|
247
250
|
}
|
|
248
251
|
|
|
249
|
-
return [summary,examples,flags];
|
|
252
|
+
return [summary, examples, flags];
|
|
250
253
|
}
|
|
251
254
|
function generatePropDocs(inf: IInterfaceDeclaration) {
|
|
252
255
|
let results: IComponentPropDocumentation[] = [];
|
|
253
256
|
for (let i in inf.members) {
|
|
254
257
|
let prop = inf.members[i];
|
|
255
258
|
let propDoc: IComponentPropDocumentation = { examples: [], name: prop.name, summary: '', type: prop.type };
|
|
256
|
-
[propDoc.summary,propDoc.examples] = parseTSDocComment(prop.comment);
|
|
259
|
+
[propDoc.summary, propDoc.examples] = parseTSDocComment(prop.comment);
|
|
257
260
|
results.push(propDoc);
|
|
258
261
|
}
|
|
259
262
|
return results;
|
|
260
263
|
}
|
|
261
|
-
function generateHookTypeDefinition(hook:IReactHook) {
|
|
264
|
+
function generateHookTypeDefinition(hook: IReactHook) {
|
|
262
265
|
return `export const ${hook.name}:${hook.type};`;
|
|
263
266
|
}
|
|
264
|
-
function generateComponentTypeDefinition(c:IReactComponent,interfaces:{[key:string]:IInterfaceDeclaration}) {
|
|
267
|
+
function generateComponentTypeDefinition(c: IReactComponent, interfaces: { [key: string]: IInterfaceDeclaration }) {
|
|
265
268
|
let code = "";
|
|
269
|
+
let type = c.type || 'functional'
|
|
266
270
|
let inf = interfaces[c.propType];
|
|
267
271
|
if (inf) {
|
|
268
272
|
code += inf.comment + '\n';
|
|
269
273
|
code += inf.code + '\n';
|
|
270
274
|
}
|
|
275
|
+
if (c.stateType) {
|
|
276
|
+
let stateInf = interfaces[c.stateType];
|
|
277
|
+
if (stateInf) {
|
|
278
|
+
code += stateInf.comment + '\n';
|
|
279
|
+
code += stateInf.code + '\n';
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
if (c.refType) {
|
|
283
|
+
let refInf = interfaces[c.refType];
|
|
284
|
+
if (refInf) {
|
|
285
|
+
code += refInf.comment + '\n';
|
|
286
|
+
code += refInf.code + '\n';
|
|
287
|
+
}
|
|
288
|
+
}
|
|
271
289
|
code += c.comment + '\n';
|
|
272
|
-
|
|
290
|
+
|
|
291
|
+
switch (type) {
|
|
292
|
+
case 'functional':
|
|
293
|
+
code += `export const ${c.name} : React.FunctionComponent<${c.propType}>;\n`
|
|
294
|
+
break
|
|
295
|
+
case 'class':
|
|
296
|
+
code += `export class ${c.name} extends React.Component<${c.propType}, ${c.stateType || 'any'}> {}\n`
|
|
297
|
+
break
|
|
298
|
+
case 'forwardRef':
|
|
299
|
+
code += `export const ${c.name}:React.ForwardRefExoticComponent<${c.propType} & React.RefAttributes<${c.refType || 'any'}>>;\n`
|
|
300
|
+
break
|
|
301
|
+
}
|
|
302
|
+
|
|
273
303
|
return code;
|
|
274
304
|
}
|
|
275
|
-
function fillRelatedTypes(t:string,types:any,docInfo:IDocInfo) {
|
|
305
|
+
function fillRelatedTypes(t: string, types: any, docInfo: IDocInfo) {
|
|
276
306
|
if (docInfo.interfaces[t]) {
|
|
277
307
|
types[t] = 1;
|
|
278
308
|
let inf = docInfo.interfaces[t];
|
|
279
|
-
for(let m of inf.members) {
|
|
280
|
-
fillRelatedTypes(m.comment,types,docInfo);
|
|
309
|
+
for (let m of inf.members) {
|
|
310
|
+
fillRelatedTypes(m.comment, types, docInfo);
|
|
281
311
|
}
|
|
282
312
|
return;
|
|
283
313
|
}
|
|
@@ -288,10 +318,10 @@ function fillRelatedTypes(t:string,types:any,docInfo:IDocInfo) {
|
|
|
288
318
|
if (docInfo.functions[t]) {
|
|
289
319
|
let f = docInfo.functions[t];
|
|
290
320
|
types[t] = 1;
|
|
291
|
-
fillRelatedTypes(f.return,types,docInfo);
|
|
292
|
-
for(let p of f.parameters) {
|
|
321
|
+
fillRelatedTypes(f.return, types, docInfo);
|
|
322
|
+
for (let p of f.parameters) {
|
|
293
323
|
let pt = p.type;
|
|
294
|
-
fillRelatedTypes(pt,types,docInfo);
|
|
324
|
+
fillRelatedTypes(pt, types, docInfo);
|
|
295
325
|
}
|
|
296
326
|
}
|
|
297
327
|
|
|
@@ -300,9 +330,9 @@ function generateDocObject(docInfo: IDocInfo): IDocObject {
|
|
|
300
330
|
let components: IComponentDocumentation[] = [];
|
|
301
331
|
//let typesToExport:any = {};
|
|
302
332
|
for (let cn in docInfo.components) {
|
|
303
|
-
let componentDoc: IComponentDocumentation = { examples: [], name: cn, props: [], summary: ''
|
|
333
|
+
let componentDoc: IComponentDocumentation = { examples: [], name: cn, props: [], summary: '', flags: ComponentFlags.None };
|
|
304
334
|
let componentInfo = docInfo.components[cn];
|
|
305
|
-
[componentDoc.summary,componentDoc.examples,componentDoc.flags] = parseTSDocComment(componentInfo.comment);
|
|
335
|
+
[componentDoc.summary, componentDoc.examples, componentDoc.flags] = parseTSDocComment(componentInfo.comment);
|
|
306
336
|
|
|
307
337
|
let propType = docInfo.interfaces[componentInfo.propType];
|
|
308
338
|
if (!!propType) {
|
|
@@ -313,11 +343,11 @@ function generateDocObject(docInfo: IDocInfo): IDocObject {
|
|
|
313
343
|
components.push(componentDoc);
|
|
314
344
|
|
|
315
345
|
}
|
|
316
|
-
let hooks:IHookDocumentation[] = [];
|
|
317
|
-
for(let hi in docInfo.hooks) {
|
|
346
|
+
let hooks: IHookDocumentation[] = [];
|
|
347
|
+
for (let hi in docInfo.hooks) {
|
|
318
348
|
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);
|
|
349
|
+
let hookDoc: IHookDocumentation = { name: hook.name, flags: ComponentFlags.None, summary: '', examples: [] };
|
|
350
|
+
[hookDoc.summary, hookDoc.examples, hookDoc.flags] = parseTSDocComment(hook.comment);
|
|
321
351
|
let propType = docInfo.functions[hook.type];
|
|
322
352
|
// if (!!propType) {
|
|
323
353
|
// typesToExport[hook.type] = 1;
|
|
@@ -328,31 +358,31 @@ function generateDocObject(docInfo: IDocInfo): IDocObject {
|
|
|
328
358
|
// for(let k of Object.keys(typesToExport)) {
|
|
329
359
|
// fillRelatedTypes(k,typesToExport,docInfo);
|
|
330
360
|
// }
|
|
331
|
-
let types:ITypeDocumentation[] = [];
|
|
332
|
-
for(let k of Object.keys(docInfo.interfaces)) {
|
|
361
|
+
let types: ITypeDocumentation[] = [];
|
|
362
|
+
for (let k of Object.keys(docInfo.interfaces)) {
|
|
333
363
|
let inf = docInfo.interfaces[k];
|
|
334
|
-
let typeDoc:ITypeDocumentation = { examples:[],name:inf.name,summary:'',type:'interface',code:'',flags:ComponentFlags.None};
|
|
364
|
+
let typeDoc: ITypeDocumentation = { examples: [], name: inf.name, summary: '', type: 'interface', code: '', flags: ComponentFlags.None };
|
|
335
365
|
typeDoc.code = inf.code;
|
|
336
|
-
[typeDoc.summary,typeDoc.examples,typeDoc.flags] = parseTSDocComment(inf.comment);
|
|
366
|
+
[typeDoc.summary, typeDoc.examples, typeDoc.flags] = parseTSDocComment(inf.comment);
|
|
337
367
|
types.push(typeDoc);
|
|
338
368
|
}
|
|
339
|
-
for(let k of Object.keys(docInfo.functions)) {
|
|
369
|
+
for (let k of Object.keys(docInfo.functions)) {
|
|
340
370
|
let inf = docInfo.functions[k];
|
|
341
|
-
let typeDoc:ITypeDocumentation = { examples:[],name:k,summary:'',type:'function',code:'',flags:ComponentFlags.None};
|
|
371
|
+
let typeDoc: ITypeDocumentation = { examples: [], name: k, summary: '', type: 'function', code: '', flags: ComponentFlags.None };
|
|
342
372
|
typeDoc.code = inf.code;
|
|
343
|
-
[typeDoc.summary,typeDoc.examples,typeDoc.flags] = parseTSDocComment(inf.comment);
|
|
373
|
+
[typeDoc.summary, typeDoc.examples, typeDoc.flags] = parseTSDocComment(inf.comment);
|
|
344
374
|
types.push(typeDoc);
|
|
345
375
|
}
|
|
346
|
-
for(let k of Object.keys(docInfo.unions)) {
|
|
376
|
+
for (let k of Object.keys(docInfo.unions)) {
|
|
347
377
|
let inf = docInfo.unions[k];
|
|
348
|
-
let typeDoc:ITypeDocumentation = { examples:[],name:k,summary:'',type:'union',code:'',flags:ComponentFlags.None};
|
|
378
|
+
let typeDoc: ITypeDocumentation = { examples: [], name: k, summary: '', type: 'union', code: '', flags: ComponentFlags.None };
|
|
349
379
|
typeDoc.code = inf.code;
|
|
350
|
-
[typeDoc.summary,typeDoc.examples,typeDoc.flags] = parseTSDocComment(inf.comment);
|
|
380
|
+
[typeDoc.summary, typeDoc.examples, typeDoc.flags] = parseTSDocComment(inf.comment);
|
|
351
381
|
types.push(typeDoc);
|
|
352
382
|
}
|
|
353
|
-
|
|
354
383
|
|
|
355
|
-
|
|
384
|
+
|
|
385
|
+
return { components, hooks, types };
|
|
356
386
|
}
|
|
357
387
|
|
|
358
388
|
function extractComment(node: ts.Node) {
|
|
@@ -361,22 +391,22 @@ function extractComment(node: ts.Node) {
|
|
|
361
391
|
if (!comments) return '';
|
|
362
392
|
return comments!.map(c => fullText.slice(c.pos, c.end)).join('\n');
|
|
363
393
|
}
|
|
364
|
-
function getCode(node:ts.Node) {
|
|
365
|
-
return node.getSourceFile().getFullText().substring(node.getStart(),node.getEnd());
|
|
394
|
+
function getCode(node: ts.Node) {
|
|
395
|
+
return node.getSourceFile().getFullText().substring(node.getStart(), node.getEnd());
|
|
366
396
|
}
|
|
367
|
-
function parseFunctionSignature(node:ts.Node,docInfo:IDocInfo) {
|
|
397
|
+
function parseFunctionSignature(node: ts.Node, docInfo: IDocInfo) {
|
|
368
398
|
|
|
369
399
|
}
|
|
370
400
|
function parseInterfaceDeclaration(node: ts.Node, docInfo: IDocInfo) {
|
|
371
401
|
|
|
372
402
|
let name = (node as any).name.getText();
|
|
373
403
|
let members = (node as any).members;
|
|
374
|
-
if (members.length==1 && members[0].kind == ts.SyntaxKind.CallSignature) {
|
|
375
|
-
return parseFunctionSignature(members[0],docInfo);
|
|
404
|
+
if (members.length == 1 && members[0].kind == ts.SyntaxKind.CallSignature) {
|
|
405
|
+
return parseFunctionSignature(members[0], docInfo);
|
|
376
406
|
}
|
|
377
407
|
|
|
378
408
|
let docs = extractComment(node);
|
|
379
|
-
let inf: IInterfaceDeclaration = { comment: docs, members: [], name: name
|
|
409
|
+
let inf: IInterfaceDeclaration = { comment: docs, members: [], name: name, code: getCode(node) };
|
|
380
410
|
for (let i = 0; i < members.length; i++) {
|
|
381
411
|
let member = members[i];
|
|
382
412
|
let name = member.name.getText();
|
|
@@ -390,12 +420,11 @@ function parseInterfaceDeclaration(node: ts.Node, docInfo: IDocInfo) {
|
|
|
390
420
|
function parseVariableDeclaration(node: ts.Node, docInfo: IDocInfo) {
|
|
391
421
|
|
|
392
422
|
let type = (node as any).type?.typeName?.getText();
|
|
393
|
-
if ((node as any)?.type?.kind == ts.SyntaxKind.CallSignature ||
|
|
423
|
+
if ((node as any)?.type?.kind == ts.SyntaxKind.CallSignature ||
|
|
394
424
|
(node as any)?.type?.kind == ts.SyntaxKind.FunctionType
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
}
|
|
425
|
+
) {
|
|
426
|
+
console.log('dug');
|
|
427
|
+
}
|
|
399
428
|
if (!type) {
|
|
400
429
|
return;
|
|
401
430
|
}
|
|
@@ -403,27 +432,52 @@ function parseVariableDeclaration(node: ts.Node, docInfo: IDocInfo) {
|
|
|
403
432
|
if (type == 'React.FunctionComponent') {
|
|
404
433
|
let propType = (node as any).type.typeArguments[0].getText();
|
|
405
434
|
let comment = extractComment(node.parent);
|
|
406
|
-
docInfo.components[name] = { comment, propType, name };
|
|
435
|
+
docInfo.components[name] = { comment, propType, name, type: 'functional' };
|
|
436
|
+
return;
|
|
437
|
+
}
|
|
438
|
+
if (type == 'React.ForwardRefExoticComponent') {
|
|
439
|
+
let cType = (node as any).type.typeArguments[0].getText();
|
|
440
|
+
// get prop type and ref type
|
|
441
|
+
// assume
|
|
442
|
+
// - props defined as following format <PropType & RefType>
|
|
443
|
+
// - RefType always starts with `React.RefAttributes`
|
|
444
|
+
let parts = (cType as string).split("&", 2).map(p => p.trim())
|
|
445
|
+
let propType = parts[0]
|
|
446
|
+
let refType = parts[1]
|
|
447
|
+
if (parts[0].startsWith('React.RefAttributes')) {
|
|
448
|
+
propType = parts[1]
|
|
449
|
+
refType = parts[0]
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
refType = refType
|
|
453
|
+
.replace('React.RefAttributes<', '')
|
|
454
|
+
.replace(">", '')
|
|
455
|
+
.trim()
|
|
456
|
+
|
|
457
|
+
|
|
458
|
+
let comment = extractComment(node.parent);
|
|
459
|
+
docInfo.components[name] = { comment, propType, refType, name, type: 'forwardRef' };
|
|
407
460
|
return;
|
|
408
461
|
}
|
|
409
462
|
if (name.startsWith('use')) {
|
|
410
463
|
let comment = extractComment(node.parent);
|
|
411
|
-
let parameters:IReactHookParam[] = [];
|
|
464
|
+
let parameters: IReactHookParam[] = [];
|
|
412
465
|
|
|
413
|
-
docInfo.hooks[name] = {name,type,parameters,comment};
|
|
466
|
+
docInfo.hooks[name] = { name, type, parameters, comment };
|
|
414
467
|
}
|
|
415
468
|
}
|
|
416
469
|
function parseClassDeclaration(node: ts.Node, docInfo: IDocInfo) {
|
|
417
470
|
let className = (node as any)?.heritageClauses[0]?.types[0].expression.getText();
|
|
418
|
-
if (className
|
|
471
|
+
if (className == 'React.Component') {
|
|
419
472
|
let propType = (node as any).heritageClauses[0].types[0].typeArguments[0].getText();
|
|
473
|
+
let stateType = (node as any).heritageClauses[0].types[0].typeArguments[1].getText();
|
|
420
474
|
let comment = extractComment(node);
|
|
421
475
|
let name = (node as any).name.getText();
|
|
422
|
-
docInfo.components[name] = { comment, propType, name };
|
|
476
|
+
docInfo.components[name] = { comment, propType, name, stateType, type: 'class' };
|
|
423
477
|
|
|
424
478
|
}
|
|
425
479
|
}
|
|
426
|
-
function parseTypeAlias(node:ts.Node,docInfo:IDocInfo) {
|
|
480
|
+
function parseTypeAlias(node: ts.Node, docInfo: IDocInfo) {
|
|
427
481
|
let name = (node as any).name.getText();
|
|
428
482
|
let type = (node as any).type;
|
|
429
483
|
if (type.kind == ts.SyntaxKind.FunctionType) {
|
|
@@ -431,10 +485,10 @@ function parseTypeAlias(node:ts.Node,docInfo:IDocInfo) {
|
|
|
431
485
|
let parameters = type.parameters;
|
|
432
486
|
let comment = extractComment(node);
|
|
433
487
|
let code = getCode(node);
|
|
434
|
-
let f:IFunctionSignature = {parameters:[],return:returnType,comment,code};
|
|
435
|
-
for(let p=0;p<parameters.length;p++) {
|
|
488
|
+
let f: IFunctionSignature = { parameters: [], return: returnType, comment, code };
|
|
489
|
+
for (let p = 0; p < parameters.length; p++) {
|
|
436
490
|
let parameter = parameters[p];
|
|
437
|
-
let fp:IFunctionParam = {name:parameter.name.getText(),type:parameter.type.getText()};
|
|
491
|
+
let fp: IFunctionParam = { name: parameter.name.getText(), type: parameter.type.getText() };
|
|
438
492
|
f.parameters.push(fp);
|
|
439
493
|
|
|
440
494
|
}
|
|
@@ -445,9 +499,9 @@ function parseTypeAlias(node:ts.Node,docInfo:IDocInfo) {
|
|
|
445
499
|
let types = type.types;
|
|
446
500
|
let comment = extractComment(node);
|
|
447
501
|
let code = getCode(node);
|
|
448
|
-
let u:IUnion = {items:[],comment,code};
|
|
502
|
+
let u: IUnion = { items: [], comment, code };
|
|
449
503
|
|
|
450
|
-
for(let p=0;p<types.length;p++) {
|
|
504
|
+
for (let p = 0; p < types.length; p++) {
|
|
451
505
|
let txt = types[p].getText();
|
|
452
506
|
u.items.push(txt);
|
|
453
507
|
}
|
|
@@ -458,7 +512,7 @@ function parseTypeAlias(node:ts.Node,docInfo:IDocInfo) {
|
|
|
458
512
|
function walkTree(node: ts.Node, docInfo: IDocInfo) {
|
|
459
513
|
switch (node.kind) {
|
|
460
514
|
case ts.SyntaxKind.TypeAliasDeclaration:
|
|
461
|
-
parseTypeAlias(node,docInfo);
|
|
515
|
+
parseTypeAlias(node, docInfo);
|
|
462
516
|
break;
|
|
463
517
|
case ts.SyntaxKind.InterfaceDeclaration:
|
|
464
518
|
parseInterfaceDeclaration(node, docInfo);
|
|
@@ -470,13 +524,12 @@ function walkTree(node: ts.Node, docInfo: IDocInfo) {
|
|
|
470
524
|
parseClassDeclaration(node, docInfo);
|
|
471
525
|
break;
|
|
472
526
|
case ts.SyntaxKind.FunctionDeclaration:
|
|
473
|
-
|
|
527
|
+
case 242:
|
|
528
|
+
parseVariableDeclaration(node, docInfo);
|
|
474
529
|
break;
|
|
475
530
|
|
|
476
|
-
|
|
477
|
-
|
|
478
531
|
}
|
|
479
|
-
node.forEachChild(child => walkTree(child, docInfo));
|
|
532
|
+
node.forEachChild((child: any) => walkTree(child, docInfo));
|
|
480
533
|
|
|
481
534
|
}
|
|
482
535
|
function validateProgram(program: ts.Program) {
|
|
@@ -505,12 +558,12 @@ function getSources(program: ts.Program) {
|
|
|
505
558
|
}).map(f => f.fileName);
|
|
506
559
|
}
|
|
507
560
|
|
|
508
|
-
function generateExportModule(docs:IDocObject,docInfo:IDocInfo,options:IExportModuleOptions) {
|
|
561
|
+
function generateExportModule(docs: IDocObject, docInfo: IDocInfo, options: IExportModuleOptions) {
|
|
509
562
|
let code = '';
|
|
510
563
|
if (options?.moduleName) {
|
|
511
564
|
code += `declare module "${options.moduleName}" {\n`;
|
|
512
565
|
}
|
|
513
|
-
for(let i in docs.types) {
|
|
566
|
+
for (let i in docs.types) {
|
|
514
567
|
let obj = docs.types[i];
|
|
515
568
|
let comment = '';
|
|
516
569
|
if (docInfo.interfaces[obj.name]) {
|
|
@@ -523,23 +576,24 @@ function generateExportModule(docs:IDocObject,docInfo:IDocInfo,options:IExportMo
|
|
|
523
576
|
comment = docInfo.unions[obj.name].comment;
|
|
524
577
|
}
|
|
525
578
|
if (ComponentFlags.Export === (obj.flags & ComponentFlags.Export)) {
|
|
526
|
-
code += indentCode('\n' + comment + '\n' +
|
|
579
|
+
code += indentCode('\n' + comment + '\n' + 'export ' + obj.code + '\n', ' ');
|
|
527
580
|
}
|
|
528
581
|
}
|
|
529
|
-
for(let i in docs.components) {
|
|
582
|
+
for (let i in docs.components) {
|
|
530
583
|
let doc = docs.components[i];
|
|
584
|
+
|
|
531
585
|
if (ComponentFlags.Export === (doc.flags & ComponentFlags.Export)) {
|
|
532
586
|
let component = docInfo.components[doc.name];
|
|
533
|
-
let componentCode = generateComponentTypeDefinition(component,docInfo.interfaces);
|
|
534
|
-
code += indentCode(componentCode,' ');
|
|
587
|
+
let componentCode = generateComponentTypeDefinition(component, docInfo.interfaces);
|
|
588
|
+
code += indentCode(componentCode, ' ');
|
|
535
589
|
}
|
|
536
590
|
}
|
|
537
|
-
for(let i in docs.hooks) {
|
|
591
|
+
for (let i in docs.hooks) {
|
|
538
592
|
let doc = docs.hooks[i];
|
|
539
593
|
if (ComponentFlags.Export === (doc.flags & ComponentFlags.Export)) {
|
|
540
594
|
let hook = docInfo.hooks[doc.name];
|
|
541
595
|
let hookCode = generateHookTypeDefinition(hook);
|
|
542
|
-
code += indentCode(hookCode,' ');
|
|
596
|
+
code += indentCode(hookCode, ' ');
|
|
543
597
|
}
|
|
544
598
|
|
|
545
599
|
}
|
|
@@ -547,18 +601,18 @@ function generateExportModule(docs:IDocObject,docInfo:IDocInfo,options:IExportMo
|
|
|
547
601
|
return code;
|
|
548
602
|
}
|
|
549
603
|
|
|
550
|
-
function load(root: string):[IDocInfo,IDocObject] {
|
|
604
|
+
function load(root: string): [IDocInfo, IDocObject] {
|
|
551
605
|
let options: ts.CompilerOptions = {
|
|
552
606
|
jsx: ts.JsxEmit.React,
|
|
553
607
|
};
|
|
554
|
-
logDebug('Loading',root);
|
|
608
|
+
logDebug('Loading', root);
|
|
555
609
|
logDebug('Loading', root);
|
|
556
610
|
let program = ts.createProgram([root], options);
|
|
557
611
|
logDebug('Compiled');
|
|
558
612
|
validateProgram(program);
|
|
559
613
|
logDebug('Validated');
|
|
560
614
|
let sources = getSources(program);
|
|
561
|
-
let docInfo: IDocInfo = { interfaces: {}, components: {},hooks:{},functions:{},unions:{} };
|
|
615
|
+
let docInfo: IDocInfo = { interfaces: {}, components: {}, hooks: {}, functions: {}, unions: {} };
|
|
562
616
|
for (var i = 0; i < sources.length; i++) {
|
|
563
617
|
let source = sources[i];
|
|
564
618
|
logDebug('Loading', source);
|
|
@@ -574,170 +628,179 @@ function load(root: string):[IDocInfo,IDocObject] {
|
|
|
574
628
|
}
|
|
575
629
|
}
|
|
576
630
|
let docs = generateDocObject(docInfo);
|
|
577
|
-
return [docInfo,docs];
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
/*
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
631
|
+
return [docInfo, docs];
|
|
632
|
+
|
|
633
|
+
|
|
634
|
+
|
|
635
|
+
/*
|
|
636
|
+
for(let i in docInfo.components) {
|
|
637
|
+
let c = docInfo.components[i];
|
|
638
|
+
let inf = docInfo.interfaces[c.propType];
|
|
639
|
+
if (!!inf) {
|
|
640
|
+
console.log(inf.comment);
|
|
641
|
+
console.log(inf.code);
|
|
642
|
+
}
|
|
643
|
+
console.log(c.comment);
|
|
644
|
+
console.log(`export const ${c.name} : React.FunctionComponent<${c.propType}>;`)
|
|
645
|
+
}*/
|
|
592
646
|
|
|
593
647
|
}
|
|
594
648
|
|
|
595
649
|
|
|
596
|
-
function generateHookDoc(cdoc:IHookDocumentation,docs:IDocObject) {
|
|
597
|
-
let md =new MarkdownBuilder();
|
|
598
|
-
md.addTitle(cdoc.name,1)
|
|
650
|
+
function generateHookDoc(cdoc: IHookDocumentation, docs: IDocObject) {
|
|
651
|
+
let md = new MarkdownBuilder();
|
|
652
|
+
md.addTitle(cdoc.name, 1)
|
|
599
653
|
md.addParagraph(cdoc.summary);
|
|
600
|
-
md.addTitle('Installation',2);
|
|
654
|
+
md.addTitle('Installation', 2);
|
|
601
655
|
md.addCode(`import {${cdoc.name}} from 'uxp/components';`);
|
|
602
656
|
if (cdoc.examples.length > 0) {
|
|
603
|
-
md.addTitle('Examples',2);
|
|
604
|
-
for(let i in cdoc.examples) {
|
|
657
|
+
md.addTitle('Examples', 2);
|
|
658
|
+
for (let i in cdoc.examples) {
|
|
605
659
|
md.addCode(cdoc.examples[i].summary)
|
|
606
660
|
}
|
|
607
661
|
}
|
|
608
|
-
|
|
662
|
+
|
|
609
663
|
return md.toString();
|
|
610
664
|
}
|
|
611
665
|
|
|
612
|
-
function generateTypeDoc(cdoc:ITypeDocumentation,docs:IDocObject) {
|
|
613
|
-
let md =new MarkdownBuilder();
|
|
614
|
-
md.addTitle(cdoc.name,1)
|
|
666
|
+
function generateTypeDoc(cdoc: ITypeDocumentation, docs: IDocObject) {
|
|
667
|
+
let md = new MarkdownBuilder();
|
|
668
|
+
md.addTitle(cdoc.name, 1)
|
|
615
669
|
md.addParagraph(cdoc.summary);
|
|
616
670
|
md.addCode(cdoc.code);
|
|
617
|
-
md.addTitle('Usage',2);
|
|
671
|
+
md.addTitle('Usage', 2);
|
|
618
672
|
md.addCode(`import {${cdoc.name}} from 'uxp/components';`);
|
|
619
673
|
if (cdoc.examples.length > 0) {
|
|
620
|
-
md.addTitle('Examples',2);
|
|
621
|
-
for(let i in cdoc.examples) {
|
|
674
|
+
md.addTitle('Examples', 2);
|
|
675
|
+
for (let i in cdoc.examples) {
|
|
622
676
|
md.addCode(cdoc.examples[i].summary)
|
|
623
677
|
}
|
|
624
678
|
}
|
|
625
|
-
|
|
626
|
-
|
|
679
|
+
|
|
680
|
+
|
|
627
681
|
return md.toString();
|
|
628
682
|
}
|
|
629
|
-
function
|
|
630
|
-
|
|
631
|
-
|
|
683
|
+
function linkedType(t: string, docs: IDocObject) {
|
|
684
|
+
if (docs.types.find(x => x.name.toUpperCase() == t.toUpperCase())) {
|
|
685
|
+
return `[${t}](types/${t})`;
|
|
686
|
+
}
|
|
687
|
+
return t;
|
|
688
|
+
}
|
|
689
|
+
function generateComponentDoc(cdoc: IComponentDocumentation, docs: IDocObject) {
|
|
690
|
+
let md = new MarkdownBuilder();
|
|
691
|
+
md.addTitle(cdoc.name, 1)
|
|
632
692
|
md.addParagraph(cdoc.summary);
|
|
633
|
-
md.addTitle('Installation',2);
|
|
693
|
+
md.addTitle('Installation', 2);
|
|
634
694
|
md.addCode(`import {${cdoc.name}} from 'uxp/components';`);
|
|
635
695
|
if (cdoc.examples.length > 0) {
|
|
636
|
-
md.addTitle('Examples',2);
|
|
637
|
-
for(let i in cdoc.examples) {
|
|
696
|
+
md.addTitle('Examples', 2);
|
|
697
|
+
for (let i in cdoc.examples) {
|
|
638
698
|
md.addCode(cdoc.examples[i].summary)
|
|
639
699
|
}
|
|
640
700
|
}
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
701
|
+
if (cdoc.props.length > 0) {
|
|
702
|
+
|
|
703
|
+
md.addTitle('Properties', 2);
|
|
704
|
+
md.addTable(cdoc.props.map(p => ({ Name: p.name, Type: linkedType(p.type, docs), Description: p.summary })));
|
|
705
|
+
for (let i in cdoc.props) {
|
|
706
|
+
let prop = cdoc.props[i];
|
|
707
|
+
md.addTitle(prop.name, 3);
|
|
708
|
+
md.addParagraph('---');
|
|
709
|
+
md.addParagraph(prop.summary);
|
|
710
|
+
md.addTable([{ 'type': linkedType(prop.type, docs) }]);
|
|
711
|
+
|
|
712
|
+
for (let j in prop.examples) {
|
|
713
|
+
md.addCode(prop.examples[j].summary);
|
|
714
|
+
}
|
|
652
715
|
}
|
|
716
|
+
|
|
653
717
|
}
|
|
654
|
-
|
|
655
718
|
return md.toString();
|
|
656
719
|
}
|
|
657
|
-
function generateDocs(root: string, outputPath:string) {
|
|
658
|
-
let [docInfo,docs] = load(root);
|
|
720
|
+
function generateDocs(root: string, outputPath: string) {
|
|
721
|
+
let [docInfo, docs] = load(root);
|
|
659
722
|
let components = docs.components;
|
|
660
|
-
if (outputPath.endsWith('/')) outputPath = outputPath.substring(0,outputPath.length-1);
|
|
723
|
+
if (outputPath.endsWith('/')) outputPath = outputPath.substring(0, outputPath.length - 1);
|
|
661
724
|
|
|
662
|
-
mkdirp(outputPath + '/components/');
|
|
663
|
-
mkdirp(outputPath + '/types/');
|
|
664
|
-
mkdirp(outputPath + '/hooks/');
|
|
725
|
+
mkdirp.sync(outputPath + '/components/');
|
|
726
|
+
mkdirp.sync(outputPath + '/types/');
|
|
727
|
+
mkdirp.sync(outputPath + '/hooks/');
|
|
665
728
|
|
|
666
|
-
for(let i in components) {
|
|
729
|
+
for (let i in components) {
|
|
667
730
|
let component = components[i];
|
|
668
731
|
if (ComponentFlags.Export === (component.flags & ComponentFlags.Export)) {
|
|
669
|
-
let md = generateComponentDoc(component,docs);
|
|
732
|
+
let md = generateComponentDoc(component, docs);
|
|
670
733
|
let path = outputPath + '/components/' + component.name + '.md';
|
|
671
734
|
|
|
672
|
-
console.log(chalk.gray('Writing component',component.name,'to',path));
|
|
673
|
-
fs.writeFileSync(path,md.toString());
|
|
735
|
+
console.log(chalk.gray('Writing component', component.name, 'to', path));
|
|
736
|
+
fs.writeFileSync(path, md.toString());
|
|
674
737
|
}
|
|
675
738
|
}
|
|
676
|
-
for(let i in docs.types) {
|
|
739
|
+
for (let i in docs.types) {
|
|
677
740
|
let type = docs.types[i];
|
|
678
741
|
if (ComponentFlags.Export === (type.flags & ComponentFlags.Export)) {
|
|
679
|
-
let md = generateTypeDoc(type,docs);
|
|
742
|
+
let md = generateTypeDoc(type, docs);
|
|
680
743
|
let path = outputPath + '/types/' + type.name + '.md';
|
|
681
|
-
console.log(chalk.gray('Writing type',type.name,'to',path));
|
|
682
|
-
fs.writeFileSync(path,md.toString());
|
|
744
|
+
console.log(chalk.gray('Writing type', type.name, 'to', path));
|
|
745
|
+
fs.writeFileSync(path, md.toString());
|
|
683
746
|
}
|
|
684
747
|
}
|
|
685
748
|
|
|
686
|
-
for(let i in docs.hooks) {
|
|
749
|
+
for (let i in docs.hooks) {
|
|
687
750
|
let hook = docs.hooks[i];
|
|
688
751
|
if (ComponentFlags.Export === (hook.flags & ComponentFlags.Export)) {
|
|
689
|
-
let md = generateHookDoc(hook,docs);
|
|
752
|
+
let md = generateHookDoc(hook, docs);
|
|
690
753
|
let path = outputPath + '/hooks/' + hook.name + '.md';
|
|
691
|
-
console.log(chalk.gray('Writing hook',hook.name,'to',path));
|
|
692
|
-
fs.writeFileSync(path,md.toString());
|
|
754
|
+
console.log(chalk.gray('Writing hook', hook.name, 'to', path));
|
|
755
|
+
fs.writeFileSync(path, md.toString());
|
|
693
756
|
}
|
|
694
757
|
}
|
|
695
758
|
}
|
|
696
|
-
function generateTypeDefinition(root:string,outputPath:string,moduleName:string) {
|
|
697
|
-
|
|
759
|
+
function generateTypeDefinition(root: string, outputPath: string, moduleName: string) {
|
|
760
|
+
|
|
698
761
|
|
|
699
|
-
let [docInfo,docs] = load(root);
|
|
700
|
-
let moduleCode = generateExportModule(docs,docInfo,{moduleName:moduleName || 'module'});
|
|
701
|
-
fs.writeFileSync(outputPath,moduleCode);
|
|
762
|
+
let [docInfo, docs] = load(root);
|
|
763
|
+
let moduleCode = generateExportModule(docs, docInfo, { moduleName: moduleName || 'module' });
|
|
764
|
+
fs.writeFileSync(outputPath, moduleCode);
|
|
702
765
|
}
|
|
703
766
|
|
|
704
767
|
export function main() {
|
|
705
768
|
try {
|
|
706
769
|
let cmd = clap
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
770
|
+
.command('react-tsdoc')
|
|
771
|
+
.description('Generate docs for React components')
|
|
772
|
+
.version('0.0.1')
|
|
773
|
+
;
|
|
711
774
|
cmd.command('types [input.ts] [output.t.ds]')
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
.action((actionArgs:{args:string[],options:any})=>{
|
|
716
|
-
let args = actionArgs.args || [];
|
|
717
|
-
let options = actionArgs.options || {};
|
|
718
|
-
|
|
719
|
-
generateTypeDefinition(
|
|
720
|
-
args[0],
|
|
721
|
-
args[1],
|
|
722
|
-
options.moduleName
|
|
723
|
-
);
|
|
724
|
-
})
|
|
775
|
+
.option('--module-name <name>')
|
|
725
776
|
|
|
726
|
-
|
|
777
|
+
|
|
778
|
+
.action((actionArgs: { args: string[], options: any }) => {
|
|
779
|
+
let args = actionArgs.args || [];
|
|
780
|
+
let options = actionArgs.options || {};
|
|
781
|
+
|
|
782
|
+
generateTypeDefinition(
|
|
783
|
+
args[0],
|
|
784
|
+
args[1],
|
|
785
|
+
options.moduleName
|
|
786
|
+
);
|
|
787
|
+
})
|
|
788
|
+
|
|
789
|
+
;
|
|
727
790
|
|
|
728
791
|
cmd.command('docs [input.ts] [output-folder]')
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
792
|
+
.action((actionArgs: { args: string[], options: any }) => {
|
|
793
|
+
let { args, options } = actionArgs;
|
|
794
|
+
generateDocs(args[0], args[1]);
|
|
795
|
+
})
|
|
796
|
+
;
|
|
797
|
+
|
|
735
798
|
cmd.run();
|
|
736
|
-
} catch(e) {
|
|
799
|
+
} catch (e) {
|
|
737
800
|
console.error(chalk.red(e));
|
|
738
801
|
|
|
739
802
|
}
|
|
740
|
-
|
|
803
|
+
|
|
741
804
|
|
|
742
805
|
}
|
|
743
806
|
|