-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstack-trace.js
More file actions
2 lines (2 loc) · 1.19 KB
/
stack-trace.js
File metadata and controls
2 lines (2 loc) · 1.19 KB
1
2
/* Copyright (c) 2022 Read Write Tools. */
export default class StackTrace{constructor(){Object.seal(this)}static getFunctionName(e){var t=(new Error).stack.split('\n')[e],l=/at (.*) ?\(/,a=l.exec(t);null==a&&(a=(l=/(.*)@/).exec(t));var n='';return null==a?t:(a.length>1&&(n+=a[1].trim()),`{${n=n.padStart(30,' ')}}`)}static getSitus(e){var t=(new Error).stack.split('\n')[e],l=/at .*\((.*)\)/,a=l.exec(t);null==a&&(a=(l=/.*@(.*)/).exec(t));var n='';return null==a?t:(a.length>1&&(n+=a[1].trim()),n)}static getInfo(e){var t={classname:'',member:'',path:'',filename:'',line:'',column:''},l=(new Error).stack.split('\n')[e],a=/at (.*) ?\(/,n=a.exec(l);null==n&&(n=(a=/(.*)@/).exec(l));var r='';null!=n&&n.length>1&&(r=n[1].trim());var c=r.split('.');t.classname=c[0],c.length>1&&(t.member=c[1],t.member=t.member.replace(' (eval at evaluate',''));var s=/at .*\((.*)\)/g,i=s.exec(l);null==i&&(i=(s=/.*@(.*)/).exec(l));var m='';null!=i&&i.length>1&&(m=i[1].trim());var u='',v=m.split(':');4==v.length?(u=v[0]+v[1],t.line=v[2],t.column=v[3]):3==v.length?(u=v[0],t.line=v[1],t.column=v[2]):2==v.length&&(u=v[0],t.line=v[1]);var g=u.lastIndexOf('/');return-1!=g?(t.path=u.substr(0,g),t.filename=u.substr(g+1)):t.filename=u,t}}