126ad19fcSEvan Baconimport { parse, StackFrame } from 'stacktrace-parser'; 226ad19fcSEvan Bacon 326ad19fcSEvan Baconfunction parseErrorStack(stack?: string): (StackFrame & { collapse?: boolean })[] { 426ad19fcSEvan Bacon if (stack == null) { 526ad19fcSEvan Bacon return []; 626ad19fcSEvan Bacon } 726ad19fcSEvan Bacon if (Array.isArray(stack)) { 826ad19fcSEvan Bacon return stack; 926ad19fcSEvan Bacon } 1026ad19fcSEvan Bacon 11*080145beSEvan Bacon // This file seems to be web-only, so we can remove this. 12*080145beSEvan Bacon // // Native support for parsing for non-standard Hermes stack traces. 13*080145beSEvan Bacon // if (global.HermesInternal) { 14*080145beSEvan Bacon // return require('./parseHermesStack').parseErrorStack(stack); 15*080145beSEvan Bacon // } 1626ad19fcSEvan Bacon 1726ad19fcSEvan Bacon return parse(stack).map((frame) => { 1826ad19fcSEvan Bacon // frame.file will mostly look like `http://localhost:8081/index.bundle?platform=web&dev=true&hot=false` 1926ad19fcSEvan Bacon return { 2026ad19fcSEvan Bacon ...frame, 2126ad19fcSEvan Bacon column: frame.column != null ? frame.column - 1 : null, 2226ad19fcSEvan Bacon }; 2326ad19fcSEvan Bacon }); 2426ad19fcSEvan Bacon} 2526ad19fcSEvan Bacon 2626ad19fcSEvan Baconexport default parseErrorStack; 27