(stack)
| 2 | import * as walk from "acorn-walk" |
| 3 | |
| 4 | function parseStack(stack) { |
| 5 | let found = [], m |
| 6 | let re = /([\w$]*)@(.*?):(\d+)|\bat (?:([^\s(]+) \()?(.*?):(\d+)/g |
| 7 | while (m = re.exec(stack)) { |
| 8 | let fn = m[1] || m[4] || null |
| 9 | let file = m[2] || m[5] || null |
| 10 | if (fn && /sandbox/i.test(fn)) break |
| 11 | found.push({fn, file, line: m[3] || m[6]}) |
| 12 | } |
| 13 | return found |
| 14 | } |
| 15 | function frameString(frame) { |
| 16 | return "line " + frame.line + (frame.fn ? " in function " + frame.fn : "") |
| 17 | } |