@remotex-labs/xmap
Version:
A library with a sourcemap parser and TypeScript code formatter for the CLI
4 lines (3 loc) • 3.27 kB
JavaScript
var s={V8:{GLOBAL:/at\s(.*):(\d+):(\d+)/,STANDARD:/at\s(.*?)\((?:(.+?):(\d+):(\d+)|(native))\)/,EVAL:/^at\s(.+?)\s\(eval\sat\s(.+?)\s?\((.*):(\d+):(\d+)\),\s(.+?):(\d+):(\d+)\)$/},SPIDERMONKEY:{EVAL:/^(.*)@(.+?):(\d+):(\d+),\s(.+?)@(.+?):(\d+):(\d+)$/,STANDARD:/^(.*)@(.*?)(?:(\[native code\])|:(\d+):(\d+))$/},JAVASCRIPT_CORE:{STANDARD:/^(?:(global|eval)\s)?(.*)@(.*?)(?::(\d+)(?::(\d+))?)?$/}},m=(r=>(r[r.V8=0]="V8",r[r.SPIDERMONKEY=1]="SPIDERMONKEY",r[r.JAVASCRIPT_CORE=2]="JAVASCRIPT_CORE",r[r.UNKNOWN=3]="UNKNOWN",r))(m||{});function l(n){return n.startsWith(" at ")||n.startsWith("at ")?0:n.includes("@")?/(?:global|eval) code@/.test(n)?2:1:3}function c(n){return n.startsWith("file://")?n.startsWith("file:///")&&/^file:\/\/\/[A-Za-z]:/.test(n)?n.substring(8):n.substring(7):(n=n.replace(/\\/g,"/"),n)}function u(n){return{source:n,eval:!1,async:!1,native:!1,constructor:!1}}function a(n){return n&&n.trim()!==""?parseInt(n,10):void 0}function N(n){let e=u(n);n.toLowerCase().includes("new")&&(e.constructor=!0),n.toLowerCase().includes("async")&&(e.async=!0);let t=n.match(s.V8.EVAL),i=n.match(s.V8.GLOBAL),r=!t&&n.match(s.V8.STANDARD);return t?(e.eval=!0,e.functionName=t[1]||void 0,e.evalOrigin={line:a(t[4])??void 0,column:a(t[5])??void 0,fileName:t[3]?c(t[3]):void 0,functionName:t[2]||"<anonymous>"},e.line=a(t[7])??void 0,e.column=a(t[8])??void 0,e.fileName=t[6]?c(t[6]):void 0):r?(e.functionName=r[1]?r[1].trim():void 0,r[5]==="native"?(e.native=!0,e.fileName="[native code]"):(e.line=a(r[3])??void 0,e.column=a(r[4])??void 0,e.fileName=r[2]?c(r[2]):void 0,e.fileName?.includes("node:")&&(e.native=!0))):i&&(e.fileName=i[1]?c(i[1]):void 0,e.line=a(i[2])??void 0,e.column=a(i[3])??void 0),e}function S(n){let e=u(n),t=n.match(s.SPIDERMONKEY.EVAL);if(t)return e.eval=!0,e.functionName=t[1]?t[1]:void 0,n.toLowerCase().includes("constructor")&&(e.constructor=!0),n.toLowerCase().includes("async")&&(e.async=!0),e.evalOrigin={line:a(t[7])??void 0,column:a(t[8])??void 0,fileName:c(t[6]),functionName:t[5]?t[5]:void 0},e.line=a(t[3])??void 0,e.column=a(t[4])??void 0,e;let i=n.match(s.SPIDERMONKEY.STANDARD);return i&&(e.functionName=i[1]?i[1]:void 0,e.fileName=c(i[2]),i[3]==="[native code]"?e.fileName="[native code]":(e.line=a(i[4])??void 0,e.column=a(i[5])??void 0)),e}function p(n){let e=u(n),t=n.match(s.JAVASCRIPT_CORE.STANDARD);return t&&(e.functionName=t[2],e.eval=t[1]==="eval"||t[3]==="eval",n.toLowerCase().includes("constructor")&&(e.constructor=!0),n.toLowerCase().includes("async")&&(e.async=!0),t[3]==="[native code]"?(e.native=!0,e.fileName="[native code]"):(e.line=a(t[4])??void 0,e.column=a(t[5])??void 0,e.fileName=c(t[3]))),e}function A(n,e){switch(e){case 1:return S(n);case 2:return p(n);case 0:default:return N(n)}}function E(n){let e=typeof n=="string"?new Error(n):n,t=e.stack||"",i=e.message||"",r=e.name||"Error",d=l(t),f=t.split(`
`).map(o=>o.trim()).filter(o=>o.trim()!=="").slice(1);return{name:r,message:i,stack:f.map(o=>A(o,d)),rawStack:t}}export{m as JSEngines,u as createDefaultFrame,l as detectJSEngine,c as normalizePath,E as parseErrorStack,p as parseJavaScriptCoreStackLine,S as parseSpiderMonkeyStackLine,A as parseStackLine,N as parseV8StackLine,a as safeParseInt};
//# sourceMappingURL=parser.component.js.map