1
1
let sourcemap = require ( "source-map" ) ;
2
2
import * as path from "path" ;
3
+ import { cache } from "../common/decorators" ;
3
4
4
5
export class IOSLogFilter implements Mobile . IPlatformLogFilter {
5
6
6
7
private partialLine : string = null ;
7
8
8
- constructor ( private $fs : IFileSystem ) {
9
- }
10
-
11
- public filterData ( data : string , logLevel : string , projectDir : string , pid ?: string ) : string {
9
+ constructor ( private $fs : IFileSystem ,
10
+ private $projectData : IProjectData ) { }
12
11
12
+ public filterData ( data : string , logLevel : string , pid ?: string ) : string {
13
13
if ( pid && data && data . indexOf ( `[${ pid } ]` ) === - 1 ) {
14
14
return null ;
15
15
}
@@ -40,15 +40,15 @@ export class IOSLogFilter implements Mobile.IPlatformLogFilter {
40
40
let pidIndex = line . indexOf ( searchString ) ;
41
41
if ( pidIndex > 0 ) {
42
42
line = line . substring ( pidIndex + searchString . length , line . length ) ;
43
- this . getOriginalFileLocation ( line , projectDir ) ;
44
- result += this . getOriginalFileLocation ( line , projectDir ) + "\n" ;
43
+ this . getOriginalFileLocation ( line ) ;
44
+ result += this . getOriginalFileLocation ( line ) + "\n" ;
45
45
continue ;
46
46
}
47
47
}
48
48
if ( skipLastLine && i === lines . length - 1 ) {
49
49
this . partialLine = line ;
50
50
} else {
51
- result += this . getOriginalFileLocation ( line , projectDir ) + "\n" ;
51
+ result += this . getOriginalFileLocation ( line ) + "\n" ;
52
52
}
53
53
}
54
54
return result ;
@@ -57,11 +57,12 @@ export class IOSLogFilter implements Mobile.IPlatformLogFilter {
57
57
return data ;
58
58
}
59
59
60
- private getOriginalFileLocation ( data : string , projectDir : string ) : string {
61
- let fileString = "file:///" ;
62
- let fileIndex = data . indexOf ( fileString ) ;
60
+ private getOriginalFileLocation ( data : string ) : string {
61
+ const fileString = "file:///" ;
62
+ const fileIndex = data . indexOf ( fileString ) ;
63
+ const projectDir = this . getProjectDir ( ) ;
63
64
64
- if ( fileIndex >= 0 ) {
65
+ if ( fileIndex >= 0 && projectDir ) {
65
66
let parts = data . substring ( fileIndex + fileString . length ) . split ( ":" ) ;
66
67
if ( parts . length >= 4 ) {
67
68
let file = parts [ 0 ] ;
@@ -87,5 +88,16 @@ export class IOSLogFilter implements Mobile.IPlatformLogFilter {
87
88
88
89
return data ;
89
90
}
91
+
92
+ @cache ( )
93
+ private getProjectDir ( ) : string {
94
+ try {
95
+ this . $projectData . initializeProjectData ( ) ;
96
+ return this . $projectData . projectDir ;
97
+ } catch ( err ) {
98
+ return null ;
99
+ }
100
+ }
90
101
}
102
+
91
103
$injector . register ( "iOSLogFilter" , IOSLogFilter ) ;
0 commit comments