@@ -241,6 +241,44 @@ export class Dependencies {
241
241
return deps ;
242
242
}
243
243
244
+ private processClass ( node , file , srcFile , deps , outputSymbols ) {
245
+ let name = this . getSymboleName ( node ) ;
246
+ let IO = this . getClassIO ( file , srcFile , node ) ;
247
+ deps = {
248
+ name,
249
+ id : 'class-' + name + '-' + Date . now ( ) ,
250
+ file : file ,
251
+ type : 'class' ,
252
+ sourceCode : srcFile . getText ( )
253
+ } ;
254
+ if ( IO . constructor ) {
255
+ deps . constructorObj = IO . constructor ;
256
+ }
257
+ if ( IO . properties ) {
258
+ deps . properties = IO . properties ;
259
+ }
260
+ if ( IO . description ) {
261
+ deps . description = IO . description ;
262
+ }
263
+ if ( IO . methods ) {
264
+ deps . methods = IO . methods ;
265
+ }
266
+ if ( IO . indexSignatures ) {
267
+ deps . indexSignatures = IO . indexSignatures ;
268
+ }
269
+ if ( IO . extends ) {
270
+ deps . extends = IO . extends ;
271
+ }
272
+ if ( IO . jsdoctags && IO . jsdoctags . length > 0 ) {
273
+ deps . jsdoctags = IO . jsdoctags [ 0 ] . tags
274
+ }
275
+ if ( IO . implements && IO . implements . length > 0 ) {
276
+ deps . implements = IO . implements ;
277
+ }
278
+ this . debug ( deps ) ;
279
+ outputSymbols [ 'classes' ] . push ( deps ) ;
280
+ }
281
+
244
282
private getSourceFileDecorators ( srcFile : ts . SourceFile , outputSymbols : Object ) : void {
245
283
246
284
let cleaner = ( process . cwd ( ) + path . sep ) . replace ( / \\ / g, '/' ) ,
@@ -253,6 +291,7 @@ export class Dependencies {
253
291
if ( this . hasJSDocInternalTag ( file , srcFile , node ) && this . configuration . mainData . disablePrivateOrInternalSupport ) { return ; }
254
292
255
293
if ( node . decorators ) {
294
+ let classWithCustomDecorator = false ;
256
295
let visitNode = ( visitedNode , index ) => {
257
296
258
297
let metadata = node . decorators ;
@@ -395,16 +434,25 @@ export class Dependencies {
395
434
deps . constructorObj = IO . constructor ;
396
435
}
397
436
outputSymbols [ 'directives' ] . push ( deps ) ;
437
+ } else {
438
+ //Just a class
439
+ if ( ! classWithCustomDecorator ) {
440
+ classWithCustomDecorator = true ;
441
+ this . processClass ( node , file , srcFile , deps , outputSymbols ) ;
442
+ }
398
443
}
399
444
400
445
this . debug ( deps ) ;
401
446
402
447
this . __cache [ name ] = deps ;
403
448
}
404
449
405
- let filterByDecorators = ( node ) => {
406
- if ( node . expression && node . expression . expression ) {
407
- return / ( N g M o d u l e | C o m p o n e n t | I n j e c t a b l e | P i p e | D i r e c t i v e ) / . test ( node . expression . expression . text )
450
+ let filterByDecorators = ( filteredNode ) => {
451
+ if ( filteredNode . expression && filteredNode . expression . expression ) {
452
+ return / ( N g M o d u l e | C o m p o n e n t | I n j e c t a b l e | P i p e | D i r e c t i v e ) / . test ( filteredNode . expression . expression . text )
453
+ }
454
+ if ( node . kind === ts . SyntaxKind . ClassDeclaration ) {
455
+ return true ;
408
456
}
409
457
return false ;
410
458
} ;
@@ -415,41 +463,7 @@ export class Dependencies {
415
463
}
416
464
else if ( node . symbol ) {
417
465
if ( node . symbol . flags === ts . SymbolFlags . Class ) {
418
- let name = this . getSymboleName ( node ) ;
419
- let IO = this . getClassIO ( file , srcFile , node ) ;
420
- deps = {
421
- name,
422
- id : 'class-' + name + '-' + Date . now ( ) ,
423
- file : file ,
424
- type : 'class' ,
425
- sourceCode : srcFile . getText ( )
426
- } ;
427
- if ( IO . constructor ) {
428
- deps . constructorObj = IO . constructor ;
429
- }
430
- if ( IO . properties ) {
431
- deps . properties = IO . properties ;
432
- }
433
- if ( IO . description ) {
434
- deps . description = IO . description ;
435
- }
436
- if ( IO . methods ) {
437
- deps . methods = IO . methods ;
438
- }
439
- if ( IO . indexSignatures ) {
440
- deps . indexSignatures = IO . indexSignatures ;
441
- }
442
- if ( IO . extends ) {
443
- deps . extends = IO . extends ;
444
- }
445
- if ( IO . jsdoctags && IO . jsdoctags . length > 0 ) {
446
- deps . jsdoctags = IO . jsdoctags [ 0 ] . tags
447
- }
448
- if ( IO . implements && IO . implements . length > 0 ) {
449
- deps . implements = IO . implements ;
450
- }
451
- this . debug ( deps ) ;
452
- outputSymbols [ 'classes' ] . push ( deps ) ;
466
+ this . processClass ( node , file , srcFile , deps , outputSymbols ) ;
453
467
} else if ( node . symbol . flags === ts . SymbolFlags . Interface ) {
454
468
let name = this . getSymboleName ( node ) ;
455
469
let IO = this . getInterfaceIO ( file , srcFile , node ) ;
@@ -541,41 +555,7 @@ export class Dependencies {
541
555
outputSymbols [ 'routes' ] = [ ...outputSymbols [ 'routes' ] , ...newRoutes ] ;
542
556
}
543
557
if ( node . kind === ts . SyntaxKind . ClassDeclaration ) {
544
- let name = this . getSymboleName ( node ) ;
545
- let IO = this . getClassIO ( file , srcFile , node ) ;
546
- deps = {
547
- name,
548
- id : 'class-' + name + '-' + Date . now ( ) ,
549
- file : file ,
550
- type : 'class' ,
551
- sourceCode : srcFile . getText ( )
552
- } ;
553
- if ( IO . constructor ) {
554
- deps . constructorObj = IO . constructor ;
555
- }
556
- if ( IO . properties ) {
557
- deps . properties = IO . properties ;
558
- }
559
- if ( IO . indexSignatures ) {
560
- deps . indexSignatures = IO . indexSignatures ;
561
- }
562
- if ( IO . description ) {
563
- deps . description = IO . description ;
564
- }
565
- if ( IO . methods ) {
566
- deps . methods = IO . methods ;
567
- }
568
- if ( IO . extends ) {
569
- deps . extends = IO . extends ;
570
- }
571
- if ( IO . implements && IO . implements . length > 0 ) {
572
- deps . implements = IO . implements ;
573
- }
574
- if ( IO . jsdoctags && IO . jsdoctags . length > 0 ) {
575
- deps . jsdoctags = IO . jsdoctags [ 0 ] . tags
576
- }
577
- this . debug ( deps ) ;
578
- outputSymbols [ 'classes' ] . push ( deps ) ;
558
+ this . processClass ( node , file , srcFile , deps , outputSymbols ) ;
579
559
}
580
560
if ( node . kind === ts . SyntaxKind . ExpressionStatement ) {
581
561
let bootstrapModuleReference = 'bootstrapModule' ;
@@ -858,7 +838,7 @@ export class Dependencies {
858
838
}
859
839
860
840
private findProps ( visitedNode ) {
861
- if ( visitedNode . expression . arguments . length > 0 ) {
841
+ if ( visitedNode . expression . arguments && visitedNode . expression . arguments . length > 0 ) {
862
842
return visitedNode . expression . arguments . pop ( ) . properties ;
863
843
} else {
864
844
return '' ;
@@ -1570,7 +1550,19 @@ export class Dependencies {
1570
1550
jsdoctags : jsdoctags
1571
1551
} ] ;
1572
1552
} else {
1573
- //console.log('custom decorator');
1553
+ members = this . visitMembers ( classDeclaration . members , sourceFile ) ;
1554
+
1555
+ return [ {
1556
+ description,
1557
+ methods : members . methods ,
1558
+ indexSignatures : members . indexSignatures ,
1559
+ properties : members . properties ,
1560
+ kind : members . kind ,
1561
+ constructor : members . constructor ,
1562
+ jsdoctags : jsdoctags ,
1563
+ extends : extendsElement ,
1564
+ implements : implementsElements
1565
+ } ] ;
1574
1566
}
1575
1567
}
1576
1568
} else if ( description ) {
0 commit comments