-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patherror-stack.js
More file actions
25 lines (21 loc) · 681 Bytes
/
error-stack.js
File metadata and controls
25 lines (21 loc) · 681 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function parseStackTrace(stack) {
return stack.split('\n').map(parseStackLine).filter(Boolean);
}
const V8_OUTER1 = /^\s*(eval )?at (.*) \((.*)\)$/;
const V8_OUTER2 = /^\s*at()() (\S+)$/;
const V8_INNER = /^\(?([^\(]+):(\d+):(\d+)\)?$/;
function parseStackLine(line) {
var outer = line.match(V8_OUTER1) || line.match(V8_OUTER2);
if (!outer) return null;
var inner = outer[3].match(V8_INNER);
if (!inner) return null;
var method = outer[2] || '';
if (outer[1]) method = 'eval at ' + method;
return {
method: method,
location: inner[1] || '',
line: parseInt(inner[2]) || 0,
column: parseInt(inner[3]) || 0,
};
}
module.exports = parseStackTrace;