Skip to content

Commit b3dfd45

Browse files
author
Tsvetan Raikov
committed
Filter iOS log to show original file location for ts files
1 parent 791f6ab commit b3dfd45

File tree

3 files changed

+37
-2
lines changed

3 files changed

+37
-2
lines changed

lib/services/ios-log-filter.ts

+35-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
1+
let sourcemap = require("source-map");
2+
import * as path from "path";
3+
14
export 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);

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
"ref-struct": "https://github.com/telerik/ref-struct/tarball/v1.0.2.3",
6969
"semver": "5.0.1",
7070
"shelljs": "0.5.3",
71+
"source-map": "0.5.6",
7172
"tabtab": "https://github.com/Icenium/node-tabtab/tarball/master",
7273
"temp": "0.8.3",
7374
"utf-8-validate": "https://github.com/telerik/utf-8-validate/tarball/v1.0.1.3",

0 commit comments

Comments
 (0)