@@ -18,7 +18,7 @@ export class Transpiler {
18
18
19
19
constructor ( private failFast : boolean = false , private generateLibraryName : boolean = false ) { }
20
20
21
- options : ts . CompilerOptions = {
21
+ static OPTIONS : ts . CompilerOptions = {
22
22
target : ts . ScriptTarget . ES6 ,
23
23
module : ts . ModuleKind . CommonJS ,
24
24
allowNonTsExtensions : true ,
@@ -33,15 +33,39 @@ export class Transpiler {
33
33
. join ( '\n' ) ;
34
34
}
35
35
36
+ createCompilerHost ( files : string [ ] ) : ts . CompilerHost {
37
+ var fileMap : { [ s : string ] : boolean } = { } ;
38
+ files . forEach ( ( f ) => fileMap [ f ] = true ) ;
39
+ return {
40
+ getSourceFile ( sourceName , languageVersion ) {
41
+ // Only transpile the files directly passed in, do not transpile transitive dependencies.
42
+ if ( fileMap . hasOwnProperty ( sourceName ) ) {
43
+ var contents = fs . readFileSync ( sourceName , 'UTF-8' ) ;
44
+ return ts . createSourceFile ( sourceName , contents , Transpiler . OPTIONS . target , true ) ;
45
+ }
46
+ if ( sourceName === 'lib.d.ts' ) {
47
+ return ts . createSourceFile ( sourceName , '' , Transpiler . OPTIONS . target , true ) ;
48
+ }
49
+ return undefined ;
50
+ } ,
51
+ writeFile ( name , text , writeByteOrderMark ) { fs . writeFile ( name , text ) ; } ,
52
+ getDefaultLibFileName : ( ) => 'lib.d.ts' ,
53
+ useCaseSensitiveFileNames : ( ) => true ,
54
+ getCanonicalFileName : ( filename ) => filename ,
55
+ getCurrentDirectory : ( ) => '' ,
56
+ getNewLine : ( ) => '\n'
57
+ } ;
58
+ }
59
+
36
60
translateFile ( fileName : string , relativeFileName : string ) : string {
37
- var host = ts . createCompilerHost ( this . options , /*setParentNodes*/ true ) ;
38
- var program = ts . createProgram ( [ fileName ] , this . options , host ) ;
61
+ var host = this . createCompilerHost ( [ fileName ] ) ;
62
+ var program = ts . createProgram ( [ fileName ] , Transpiler . OPTIONS , host ) ;
39
63
return this . translateProgram ( program , relativeFileName ) ;
40
64
}
41
65
42
66
translateFiles ( fileNames : string [ ] ) : void {
43
- var host = ts . createCompilerHost ( this . options , /*setParentNodes*/ true ) ;
44
- var program = ts . createProgram ( fileNames , this . options , host ) ;
67
+ var host = this . createCompilerHost ( fileNames ) ;
68
+ var program = ts . createProgram ( fileNames , Transpiler . OPTIONS , host ) ;
45
69
program . getSourceFiles ( )
46
70
. filter ( ( sourceFile : ts . SourceFile ) => ! sourceFile . fileName . match ( / \. d \. t s $ / ) &&
47
71
! ! sourceFile . fileName . match ( / \. [ j t ] s $ / ) )
0 commit comments