@@ -144,18 +144,23 @@ export class Dependencies {
144
144
145
145
private getSourceFileDecorators ( srcFile : ts . SourceFile , outputSymbols : Object ) : void {
146
146
147
+ let cleaner = ( process . cwd ( ) + path . sep ) . replace ( / \\ / g, '/' ) ;
148
+ let file = srcFile . fileName . replace ( cleaner , '' ) ;
149
+
150
+ this . programComponent = ts . createProgram ( [ file ] , { } ) ;
151
+ let sourceFile = this . programComponent . getSourceFile ( file ) ;
152
+ this . typeCheckerComponent = this . programComponent . getTypeChecker ( true ) ;
153
+
147
154
ts . forEachChild ( srcFile , ( node : ts . Node ) => {
148
155
149
156
let deps : Deps = < Deps > { } ;
150
- let cleaner = ( process . cwd ( ) + path . sep ) . replace ( / \\ / g, '/' ) ;
151
- let file = srcFile . fileName . replace ( cleaner , '' ) ;
152
157
if ( node . decorators ) {
153
158
let visitNode = ( visitedNode , index ) => {
154
159
155
160
let metadata = node . decorators . pop ( ) ;
156
161
let name = this . getSymboleName ( node ) ;
157
162
let props = this . findProps ( visitedNode ) ;
158
- let IO = this . getComponentIO ( file ) ;
163
+ let IO = this . getComponentIO ( file , sourceFile ) ;
159
164
160
165
if ( this . isModule ( metadata ) ) {
161
166
deps = {
@@ -252,7 +257,7 @@ export class Dependencies {
252
257
else if ( node . symbol ) {
253
258
if ( node . symbol . flags === ts . SymbolFlags . Class ) {
254
259
let name = this . getSymboleName ( node ) ;
255
- let IO = this . getComponentIO ( file ) ;
260
+ let IO = this . getComponentIO ( file , sourceFile ) ;
256
261
deps = {
257
262
name,
258
263
file : file ,
@@ -270,7 +275,7 @@ export class Dependencies {
270
275
outputSymbols [ 'classes' ] . push ( deps ) ;
271
276
}
272
277
} else {
273
- let IO = this . getRouteIO ( file ) ;
278
+ let IO = this . getRouteIO ( file , sourceFile ) ;
274
279
if ( IO . routes ) {
275
280
let newRoutes ;
276
281
try {
@@ -695,14 +700,10 @@ export class Dependencies {
695
700
return [ ] ;
696
701
}
697
702
698
- private getRouteIO ( filename : string ) {
703
+ private getRouteIO ( filename , sourceFile ) {
699
704
/**
700
705
* Copyright https://github.com/ng-bootstrap/ng-bootstrap
701
706
*/
702
- this . programComponent = ts . createProgram ( [ filename ] , { } ) ;
703
- let sourceFile = this . programComponent . getSourceFile ( filename ) ;
704
- this . typeCheckerComponent = this . programComponent . getTypeChecker ( true ) ;
705
-
706
707
var res = sourceFile . statements . reduce ( ( directive , statement ) => {
707
708
708
709
if ( statement . kind === ts . SyntaxKind . VariableStatement ) {
@@ -715,14 +716,10 @@ export class Dependencies {
715
716
return res [ 0 ] || { } ;
716
717
}
717
718
718
- private getComponentIO ( filename : string ) {
719
+ private getComponentIO ( filename : string , sourceFile ) {
719
720
/**
720
721
* Copyright https://github.com/ng-bootstrap/ng-bootstrap
721
722
*/
722
- this . programComponent = ts . createProgram ( [ filename ] , { } ) ;
723
- let sourceFile = this . programComponent . getSourceFile ( filename ) ;
724
- this . typeCheckerComponent = this . programComponent . getTypeChecker ( true ) ;
725
-
726
723
var res = sourceFile . statements . reduce ( ( directive , statement ) => {
727
724
728
725
if ( statement . kind === ts . SyntaxKind . ClassDeclaration ) {
0 commit comments