@visulima/cerebro
Version:
A delightful toolkit for building cross-runtime CLIs for Node.js, Deno, and Bun.
25 lines (21 loc) • 11.4 kB
JavaScript
var Y=Object.defineProperty;var N=(r,e)=>Y(r,"name",{value:e,configurable:!0});import{createRequire as K}from"node:module";const Q=K(import.meta.url),S=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,X=N(r=>{if(typeof S<"u"&&S.versions&&S.versions.node){const[e,t]=S.versions.node.split(".").map(Number);if(e>22||e===22&&t>=3||e===20&&t>=16)return S.getBuiltinModule(r)}return Q(r)},"__cjs_getBuiltinModule"),{createRequire:Z}=X("node:module");var ee=Object.defineProperty,re=N((r,e)=>ee(r,"name",{value:e,configurable:!0}),"A$2"),te=Object.defineProperty,A=re((r,e)=>te(r,"name",{value:e,configurable:!0}),"v"),ie=Object.defineProperty,oe=A((r,e)=>ie(r,"name",{value:e,configurable:!0}),"r$1");const ne=oe(r=>r.replaceAll(/\r\n|\r(?!\n)|\n/gu,`
`),"normalizeLF"),se=globalThis.process||Object.create(null),M={versions:{}},_=new Proxy(se,{get(r,e){if(e in r)return r[e];if(e in M)return M[e]}});var ae=Object.defineProperty,le=A((r,e)=>ae(r,"name",{value:e,configurable:!0}),"b");const ce=le((r,e,t,i)=>{const o={column:0,line:-1,...r.start},n={...o,...r.end},s=o.line,a=o.column,c=n.line,u=n.column;let l=Math.max(s-(t+1),0),g=Math.min(e.length,c+i);s===-1&&(l=0),c===-1&&(g=e.length);const w=c-s,m={};if(w)for(let d=0;d<=w;d++){const v=d+s;if(!a)m[v]=!0;else if(d===0){const $=e[v-1]?.length;m[v]=[a,($??0)-a+1]}else if(d===w)m[v]=[0,u];else{const $=e[v-d]?.length;m[v]=[0,$]}}else a===u?m[s]=a?[a,0]:!0:m[s]=[a,(u??0)-(a??0)];return{end:g,markerLines:m,start:l}},"getMarkerLines");var ue=Object.defineProperty,E=A((r,e)=>ue(r,"name",{value:e,configurable:!0}),"o");const de=_.platform==="win32"&&!_.env?.WT_SESSION?">":"❯",fe=E((r,e,t)=>{const i={linesAbove:2,linesBelow:3,prefix:"",showGutter:!0,tabWidth:4,...t,color:{gutter:E(d=>d,"gutter"),marker:E(d=>d,"marker"),message:E(d=>d,"message"),...t?.color}},o=e.start&&typeof e.start.column=="number";let n=ne(r).split(`
`);typeof i?.tabWidth=="number"&&(n=n.map(d=>d.replaceAll(" "," ".repeat(i.tabWidth))));const{end:s,markerLines:a,start:c}=ce(e,n,i.linesAbove,i.linesBelow),u=String(s).length,{gutter:l,marker:g,message:w}=i.color;let m=n.slice(c,s).map((d,v)=>{const $=c+1+v,k=a[$],z=` ${$}`.slice(-u),D=!a[$+1],j=` ${z}${i.showGutter?" |":""}`;if(k){let O="";if(Array.isArray(k)){const U=d.replaceAll(/[^\t]/g," ").slice(0,Math.max(k[0]-1,0)),H=k[1]||1;O=[`
`,i.prefix+l(j.replaceAll(/\d/g," "))," ",U,g("^").repeat(H)].join(""),D&&i.message&&(O+=` ${w(i.message)}`)}return[i.prefix+g(de),l(j),d.length>0?` ${d}`:"",O].join("")}return`${i.prefix} ${l(j)}${d.length>0?` ${d}`:""}`}).join(`
`);return i.message&&!o&&(m=`${i.prefix+" ".repeat(u+1)+i.message}
${m}`),m},"codeFrame");var me=Object.defineProperty,pe=N((r,e)=>me(r,"name",{value:e,configurable:!0}),"v$1"),ve=Object.defineProperty,ge=pe((r,e)=>ve(r,"name",{value:e,configurable:!0}),"v"),$e=Object.defineProperty,p=ge((r,e)=>$e(r,"name",{value:e,configurable:!0}),"u");const h=p((r,...e)=>{process.env.DEBUG&&String(process.env.DEBUG)==="true"&&console.debug(`error:parse-stacktrace: ${r}`,...e)},"debugLog"),b="<unknown>",he=/^.*?\s*at\s(?:(.+?\)(?:\s\[.+\])?|\(?.*?)\s?\((?:address\sat\s)?)?(?:async\s)?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,be=/\((\S+)\),\s(<[^>]+>)?:(\d+)?:(\d+)?\)?/,ye=/(.*?):(\d+):(\d+)(\s<-\s(.+):(\d+):(\d+))?/,xe=/(eval)\sat\s(<anonymous>)\s\((.*)\)?:(\d+)?:(\d+)\),\s*(<anonymous>)?:(\d+)?:(\d+)/,we=/^\s*in\s(?:([^\\/]+(?:\s\[as\s\S+\])?)\s\(?)?\(at?\s?(.*?):(\d+)(?::(\d+))?\)?\s*$/,Ne=/in\s(.*)\s\(at\s(.+)\)\sat/,Se=/^(?:.*@)?(.*):(\d+):(\d+)$/,ke=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. \/=]+)(?::(\d+))?(?::(\d+))?\s*$/i,Ee=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,je=/(\S[^\s[]*\[.*\]|.*?)@(.*):(\d+):(\d+)/,T=/\(error: (.*)\)/,B=p((r,e)=>{const t=r.includes("safari-extension"),i=r.includes("safari-web-extension");return t||i?[r.includes("@")?r.split("@")[0]:b,t?`safari-extension:${e}`:`safari-web-extension:${e}`]:[r,e]},"extractSafariExtensionDetails"),C=p((r,e)=>{const t=ye.exec(e);t&&(r.file=t[1],r.line=+t[2],r.column=+t[3])},"parseMapped"),Oe=p(r=>{const e=Ne.exec(r);if(e){h(`parse nested node error stack line: "${r}"`,`found: ${JSON.stringify(e)}`);const i=e[2].split(":");return{column:i[2]?+i[2]:void 0,file:i[0],line:i[1]?+i[1]:void 0,methodName:e[1]||b,raw:r,type:void 0}}const t=we.exec(r);if(t){h(`parse node error stack line: "${r}"`,`found: ${JSON.stringify(t)}`);const i={column:t[4]?+t[4]:void 0,file:t[2]?t[2].replace(/at\s/,""):void 0,line:t[3]?+t[3]:void 0,methodName:t[1]||b,raw:r,type:r.startsWith("internal")?"internal":void 0};return C(i,`${t[2]}:${t[3]}:${t[4]}`),i}},"parseNode"),Ae=p(r=>{const e=he.exec(r);if(e){h(`parse chrome error stack line: "${r}"`,`found: ${JSON.stringify(e)}`);const t=e[2]?.startsWith("native"),i=e[2]?.startsWith("eval")||e[1]?.startsWith("eval");let o,n;if(i){const u=be.exec(r);if(u){const l=/^(\S+):(\d+):(\d+)$|^(\S+):(\d+)$/.exec(u[1]);l?(e[2]=l[4]??l[1],e[3]=l[5]??l[2],e[4]=l[3]):u[2]&&(e[2]=u[1]),u[2]&&(o={column:u[4]?+u[4]:void 0,file:u[2],line:u[3]?+u[3]:void 0,methodName:"eval",raw:r,type:"eval"})}else{const l=xe.exec(r);l&&(n={column:l[5]?+l[5]:void 0,file:l[3],line:l[4]?+l[4]:void 0},o={column:l[8]?+l[8]:void 0,file:l[2],line:l[7]?+l[7]:void 0,methodName:"eval",raw:l[0],type:"eval"})}}const[s,a]=B(e[1]?e[1].replace(/^Anonymous function$/,"<anonymous>"):b,e[2]),c={column:e[4]?+e[4]:void 0,evalOrigin:o,file:a,line:e[3]?+e[3]:void 0,methodName:s,raw:r,type:i?"eval":t?"native":void 0};return n?(c.column=n.column,c.file=n.file,c.line=n.line):C(c,`${a}:${e[3]}:${e[4]}`),c}},"parseChromium"),Le=p((r,e)=>{const t=ke.exec(r);if(t){h(`parse gecko error stack line: "${r}"`,`found: ${JSON.stringify(t)}`);const i=t[3]?.includes(" > eval"),o=i&&t[3]&&Ee.exec(t[3]);let n;i&&o&&(t[3]=o[1],n={column:t[5]?+t[5]:void 0,file:t[3],line:t[4]?+t[4]:void 0,methodName:"eval",raw:r,type:"eval"},t[4]=o[2]);const[s,a]=B(t[1]?t[1].replace(/^Anonymous function$/,"<anonymous>"):b,t[3]);let c;(e?.type==="safari"||!i&&e?.type==="firefox")&&e.column?c=e.column:!i&&t[5]&&(c=+t[5]);let u;return(e?.type==="safari"||!i&&e?.type==="firefox")&&e.line?u=e.line:t[4]&&(u=+t[4]),{column:c,evalOrigin:n,file:a,line:u,methodName:s,raw:r,type:i?"eval":a.includes("[native code]")?"native":void 0}}},"parseGecko"),Pe=p((r,e)=>{const t=je.exec(r);if(!(t&&t[2].includes(" > eval"))&&t)return h(`parse firefox error stack line: "${r}"`,`found: ${JSON.stringify(t)}`),{column:t[4]?+t[4]:e?.column??void 0,file:t[2],line:t[3]?+t[3]:e?.line??void 0,methodName:t[1]||b,raw:r,type:void 0}},"parseFirefox"),Me=p(r=>{const e=Se.exec(r);if(e)return h(`parse react android native error stack line: "${r}"`,`found: ${JSON.stringify(e)}`),{column:e[3]?+e[3]:void 0,file:e[1],line:e[2]?+e[2]:void 0,methodName:b,raw:r,type:void 0}},"parseReactAndroidNative"),W=p((r,{filter:e,frameLimit:t=50}={})=>{let i=(r.stacktrace??r.stack??"").split(`
`).map(o=>(T.test(o)?o.replace(T,"$1"):o).replace(/^\s+|\s+$/g,"")).filter(o=>!/\S*(?:Error: |AggregateError:)/.test(o)&&o!=="eval code");return e&&(i=i.filter(o=>e(o))),i=i.slice(0,t),i.reduce((o,n,s)=>{if(!n||n.length>1024)return o;let a;if(/^\s*in\s.*/.test(n))a=Oe(n);else if(/^.*?\s*at\s.*/.test(n))a=Ae(n);else if(/^.*?\s*@.*|\[native code\]/.test(n)){let c;s===0&&(r.columnNumber||r.lineNumber?c={column:r.columnNumber,line:r.lineNumber,type:"firefox"}:(r.line||r.column)&&(c={column:r.column,line:r.line,type:"safari"})),a=Pe(n,c)||Le(n,c)}else a=Me(n);return a?o.push(a):h(`parse error stack line: "${n}"`,"not parser found"),o},[])},"parseStacktrace");var _e=Object.defineProperty,Te=N((r,e)=>_e(r,"name",{value:e,configurable:!0}),"p"),Be=Object.defineProperty,G=Te((r,e)=>Be(r,"name",{value:e,configurable:!0}),"m");const Ce=Z(import.meta.url),y=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,L=G(r=>{if(typeof y<"u"&&y.versions&&y.versions.node){const[e,t]=y.versions.node.split(".").map(Number);if(e>22||e===22&&t>=3||e===20&&t>=16)return y.getBuiltinModule(r)}return Ce(r)},"__cjs_getBuiltinModule"),{existsSync:We,readFileSync:Ge}=L("node:fs"),{relative:Re}=L("node:path"),{cwd:Ve}=y,{fileURLToPath:Fe}=L("node:url");var Ie=Object.defineProperty,f=G((r,e)=>Ie(r,"name",{value:e,configurable:!0}),"o");const x=f((r,e,t)=>t===0?r.toString():e===" "?r+" ".repeat(t):r+" ".repeat(e*t),"getPrefix"),Je=f((r,e)=>{const t=r.replace("async file:","file:");return Re(e,t.startsWith("file:")?Fe(t):t)},"getRelativePath"),qe=f((r,e,t)=>{if(e)return t.title(r.message);const i=r.message?`: ${r.message}`:"";return t.title(r.name+i)},"getTitleText"),R=f((r,{color:e,hideErrorTitle:t,indentation:i,prefix:o},n)=>`${x(o,i,n)}${qe(r,t,e)}
`,"getMessage"),V=f((r,{color:e,indentation:t,prefix:i},o)=>{if(r.hint===void 0)return;const n=x(i,t,o);let s="";if(Array.isArray(r.hint))for(const a of r.hint)s+=`${(n+a).toString()}
`;else s+=n+r.hint;return e.hint(s)},"getHint"),P=f((r,{color:e,cwd:t,displayShortPath:i,indentation:o,prefix:n},s=0)=>{const a=i?Je(r.file,t):r.file,{fileLine:c,method:u}=e;return`${x(n,o,s)}at ${r.methodName?`${u(r.methodName)} `:""}${c(a)}:${c(r.line?.toString()??"")}`.toString()},"getMainFrame"),F=f((r,{color:e,indentation:t,linesAbove:i,linesBelow:o,prefix:n,showGutter:s,showLineNumbers:a,tabWidth:c},u)=>{if(r.file===void 0)return;const l=r.file.replace("file://","");if(!We(l))return;const g=Ge(l,"utf8");return fe(g,{start:{column:r.column,line:r.line}},{color:e,linesAbove:i,linesBelow:o,prefix:x(n,t,u),showGutter:s,showLineNumbers:a,tabWidth:c})},"getCode"),I=f((r,e,t)=>{if(r.errors.length===0)return;let i=`${x(e.prefix,e.indentation,t)}Errors:
`,o=!0;for(const n of r.errors)o?o=!1:i+=`
`,i+=q(n,{...e,framesMaxLimit:1,hideErrorCodeView:e.hideErrorErrorsCodeView},t+1);return`
${i}`},"getErrors"),J=f((r,e,t)=>{let i=`${x(e.prefix,e.indentation,t)}Caused by:
`;const o=r.cause;i+=R(o,e,t);const n=W(o).shift(),s=V(o,e,t);if(s&&(i+=`${s}
`),n&&(i+=P(n,e,t),!e.hideErrorCauseCodeView)){const a=F(n,e,t);a!==void 0&&(i+=`
${a}`)}if(o.cause)i+=`
${J(o,e,t+1)}`;else if(o instanceof AggregateError){const a=I(o,e,t);a!==void 0&&(i+=`
${a}`)}return`
${i}`},"getCause"),ze=f((r,e)=>(r.length>0?`
`:"")+r.map(t=>P(t,e)).join(`
`),"getStacktrace"),q=f((r,e,t)=>{const i={cwd:Ve(),displayShortPath:!1,filterStacktrace:void 0,framesMaxLimit:Number.POSITIVE_INFINITY,hideErrorCauseCodeView:!1,hideErrorCodeView:!1,hideErrorErrorsCodeView:!1,hideErrorTitle:!1,hideMessage:!1,indentation:4,linesAbove:2,linesBelow:3,prefix:"",showGutter:!0,showLineNumbers:!0,tabWidth:4,...e,color:{fileLine:f(s=>s,"fileLine"),gutter:f(s=>s,"gutter"),hint:f(s=>s,"hint"),marker:f(s=>s,"marker"),message:f(s=>s,"message"),method:f(s=>s,"method"),title:f(s=>s,"title"),...e.color}},o=W(r,{filter:e.filterStacktrace,frameLimit:i.framesMaxLimit}),n=o.shift();return[e.hideMessage?void 0:R(r,i,t),V(r,i,t),n?P(n,i,t):void 0,n&&!i.hideErrorCodeView?F(n,i,t):void 0,r instanceof AggregateError?I(r,i,t):void 0,r.cause===void 0?void 0:J(r,i,t),o.length>0?ze(o,i):void 0].filter(Boolean).join(`
`).replaceAll("\\","/")},"internalRenderError"),He=f((r,e={})=>{if(e.framesMaxLimit!==void 0&&e.framesMaxLimit<=0)throw new RangeError("The 'framesMaxLimit' option must be a positive number");return q(r,e,0)},"renderError");export{He as G,fe as N,W as P,de as k};