1+ let sourcemap = require ( "source-map" ) ;
2+ import * as path from "path" ;
3+
14export class IOSLogFilter implements Mobile . IPlatformLogFilter {
25
3- constructor ( private $loggingLevels : Mobile . ILoggingLevels ) { }
6+ constructor (
7+ private $fs : IFileSystem ,
8+ private $projectData : IProjectData ,
9+ private $loggingLevels : Mobile . ILoggingLevels ) { }
410
511 public filterData ( data : string , logLevel : string , pid ?: string ) : string {
612
@@ -23,12 +29,40 @@ export class IOSLogFilter implements Mobile.IPlatformLogFilter {
2329 let pidIndex = data . indexOf ( searchString ) ;
2430 if ( pidIndex > 0 ) {
2531 data = data . substring ( pidIndex + searchString . length , data . length ) ;
32+ data = this . getOriginalFileLocation ( data ) ;
2633 }
2734 }
2835 return data . trim ( ) ;
2936 }
3037
3138 return data ;
3239 }
40+
41+ private getOriginalFileLocation ( data : string ) : string {
42+ let fileString = "file:///" ;
43+ let fileIndex = data . indexOf ( fileString ) ;
44+ if ( fileIndex >= 0 ) {
45+ let parts = data . substring ( fileIndex + fileString . length ) . split ( ":" ) ;
46+ if ( parts . length >= 4 ) {
47+ let file = parts [ 0 ] ;
48+ let sourceMapFile = path . join ( this . $projectData . projectDir , file + ".map" ) ;
49+ let row = parseInt ( parts [ 1 ] ) ;
50+ let column = parseInt ( parts [ 2 ] ) ;
51+ if ( this . $fs . exists ( sourceMapFile ) . wait ( ) ) {
52+ let sourceMap = this . $fs . readText ( sourceMapFile , "utf8" ) . wait ( ) ;
53+ let smc = new sourcemap . SourceMapConsumer ( sourceMap ) ;
54+ let originalPosition = smc . originalPositionFor ( { line :row , column :column } ) ;
55+ data = data . substring ( 0 , fileIndex + fileString . length )
56+ + file . replace ( ".js" , ".ts" ) + ":"
57+ + originalPosition . line + ":"
58+ + originalPosition . column ;
59+ for ( let i = 3 ; i < parts . length ; i ++ ) {
60+ data += ":" + parts [ i ] ;
61+ }
62+ }
63+ }
64+ }
65+ return data ;
66+ }
3367}
3468$injector . register ( "iOSLogFilter" , IOSLogFilter ) ;
0 commit comments