This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.7 KiB
53 lines
1.7 KiB
|
|
|
|
var UNKNOWN_FUNCTION = '<unknown>'; |
|
|
|
var StackTraceParser = { |
|
/** |
|
* This parses the different stack traces and puts them into one format |
|
* This borrows heavily from TraceKit (https://github.com/occ/TraceKit) |
|
*/ |
|
parse: function(stackString) { |
|
var chrome = /^\s*at (?:(?:(?:Anonymous function)?|((?:\[object object\])?\S+(?: \[as \S+\])?)) )?\(?((?:file|http|https):.*?):(\d+)(?::(\d+))?\)?\s*$/i, |
|
gecko = /^(?:\s*([^@]*)(?:\((.*?)\))?@)?(\S.*?):(\d+)(?::(\d+))?\s*$/i, |
|
node = /^\s*at (?:((?:\[object object\])?\S+(?: \[as \S+\])?) )?\(?(.*?):(\d+)(?::(\d+))?\)?\s*$/i, |
|
lines = stackString.split('\n'), |
|
stack = [], |
|
parts, |
|
element; |
|
|
|
for (var i = 0, j = lines.length; i < j; ++i) { |
|
if ((parts = gecko.exec(lines[i]))) { |
|
element = { |
|
'file': parts[3], |
|
'methodName': parts[1] || UNKNOWN_FUNCTION, |
|
'lineNumber': +parts[4], |
|
'column': parts[5] ? +parts[5] : null |
|
}; |
|
} else if ((parts = chrome.exec(lines[i]))) { |
|
element = { |
|
'file': parts[2], |
|
'methodName': parts[1] || UNKNOWN_FUNCTION, |
|
'lineNumber': +parts[3], |
|
'column': parts[4] ? +parts[4] : null |
|
}; |
|
} else if ((parts = node.exec(lines[i]))) { |
|
element = { |
|
'file': parts[2], |
|
'methodName': parts[1] || UNKNOWN_FUNCTION, |
|
'lineNumber': +parts[3], |
|
'column': parts[4] ? +parts[4] : null |
|
}; |
|
} else { |
|
continue; |
|
} |
|
|
|
stack.push(element); |
|
} |
|
|
|
return stack; |
|
} |
|
}; |
|
|
|
|
|
module.exports = StackTraceParser;
|
|
|