@@ -7,17 +7,22 @@ export class HybridFileSystem implements FileSystem, VirtualFileSystem {
77
88 private filesStats : { [ filePath : string ] : VirtualFileStats } = { } ;
99 private directoryStats : { [ filePath : string ] : VirtualDirStats } = { } ;
10- private originalFileSystem : FileSystem ;
10+ private inputFileSystem : FileSystem ;
11+ private outputFileSystem : FileSystem ;
1112
1213 constructor ( private fileCache : FileCache ) {
1314 }
1415
15- setFileSystem ( fs : FileSystem ) {
16- this . originalFileSystem = fs ;
16+ setInputFileSystem ( fs : FileSystem ) {
17+ this . inputFileSystem = fs ;
18+ }
19+
20+ setOutputFileSystem ( fs : FileSystem ) {
21+ this . outputFileSystem = fs ;
1722 }
1823
1924 isSync ( ) {
20- return this . originalFileSystem . isSync ( ) ;
25+ return this . inputFileSystem . isSync ( ) ;
2126 }
2227
2328 stat ( path : string , callback : Function ) : any {
@@ -32,19 +37,19 @@ export class HybridFileSystem implements FileSystem, VirtualFileSystem {
3237 return callback ( null , directoryStat ) ;
3338 }
3439 // fallback to list
35- return this . originalFileSystem . stat ( path , callback ) ;
40+ return this . inputFileSystem . stat ( path , callback ) ;
3641 }
3742
3843 readdir ( path : string , callback : Function ) : any {
39- return this . originalFileSystem . readdir ( path , callback ) ;
44+ return this . inputFileSystem . readdir ( path , callback ) ;
4045 }
4146
4247 readJson ( path : string , callback : Function ) : any {
43- return this . originalFileSystem . readJson ( path , callback ) ;
48+ return this . inputFileSystem . readJson ( path , callback ) ;
4449 }
4550
4651 readlink ( path : string , callback : Function ) : any {
47- return this . originalFileSystem . readlink ( path , ( err : Error , response : any ) => {
52+ return this . inputFileSystem . readlink ( path , ( err : Error , response : any ) => {
4853 callback ( err , response ) ;
4954 } ) ;
5055 }
@@ -63,7 +68,7 @@ export class HybridFileSystem implements FileSystem, VirtualFileSystem {
6368 callback ( null , new Buffer ( file . content ) ) ;
6469 return ;
6570 }
66- return this . originalFileSystem . readFile ( path , callback ) ;
71+ return this . inputFileSystem . readFile ( path , callback ) ;
6772 }
6873
6974 addVirtualFile ( filePath : string , fileContent : string ) {
@@ -106,7 +111,19 @@ export class HybridFileSystem implements FileSystem, VirtualFileSystem {
106111 }
107112
108113 mkdirp ( filePath : string , callback : Function ) {
109- callback ( ) ;
114+ return this . outputFileSystem . mkdirp ( filePath , callback ) ;
115+ }
116+
117+ mkdir ( filePath : string , callback : Function ) {
118+ return this . outputFileSystem . mkdir ( filePath , callback ) ;
119+ }
120+
121+ rmdir ( filePath : string , callback : Function ) {
122+ return this . outputFileSystem . rmdir ( filePath , callback ) ;
123+ }
124+
125+ unlink ( filePath : string , callback : Function ) {
126+ return this . outputFileSystem . unlink ( filePath , callback ) ;
110127 }
111128
112129 join ( dirPath : string , fileName : string ) {
@@ -116,6 +133,6 @@ export class HybridFileSystem implements FileSystem, VirtualFileSystem {
116133 writeFile ( filePath : string , fileContent : Buffer , callback : Function ) {
117134 const stringContent = fileContent . toString ( ) ;
118135 this . addVirtualFile ( filePath , stringContent ) ;
119- callback ( ) ;
136+ return this . outputFileSystem . writeFile ( filePath , fileContent , callback ) ;
120137 }
121138}
0 commit comments