55const path = require ( 'path' ) ;
66const espowerSource = require ( 'espower-source' ) ;
77const minimatch = require ( 'minimatch' ) ;
8+ const sourceMapSupport = require ( 'source-map-support' ) ;
89const tsNodeRegister = require ( 'ts-node' ) . register ;
10+ const sourceCache = { } ;
911
1012function espowerTypeScript ( options , tsNodeOptions ) {
1113 tsNodeRegister ( tsNodeOptions ) ;
14+
15+ // install source-map-support again to correct the source-map
16+ sourceMapSupport . install ( {
17+ environment : 'node' ,
18+ retrieveFile : path => sourceCache [ path ] ,
19+ } ) ;
20+
1221 const { extensions = [ 'ts' , 'tsx' ] } = options ;
1322 extensions . forEach ( ext => {
1423 espowerTsRegister ( `.${ ext } ` , options ) ;
@@ -26,7 +35,9 @@ function espowerTsRegister(ext, options) {
2635 }
2736 const originalCompile = module . _compile ;
2837 module . _compile = function ( code , filepath ) {
29- return originalCompile . call ( this , espowerSource ( code , filepath , options ) , filepath ) ;
38+ const newSource = espowerSource ( code , filepath , options ) ;
39+ sourceCache [ filepath ] = newSource ;
40+ return originalCompile . call ( this , newSource , filepath ) ;
3041 } ;
3142 return originalExtension ( module , filepath ) ;
3243 } ;
0 commit comments