@visulima/cerebro
Version:
A delightful toolkit for building cross-runtime CLIs for Node.js, Deno, and Bun.
77 lines (60 loc) • 17.3 kB
JavaScript
var q=Object.defineProperty;var s=(e,r)=>q(e,"name",{value:r,configurable:!0});import{createRequire as z}from"node:module";import{k as Rr,N as Fr,P as Mr,G as Vr}from"./renderError-ZMlMvw1N-eVUSdl6c.js";import{p as qr,V as zr}from"./isVisulimaError-jVZgumOU-C4fgdbWg.js";const B=z(import.meta.url),g=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,K=s(e=>{if(typeof g<"u"&&g.versions&&g.versions.node){const[r,t]=g.versions.node.split(".").map(Number);if(r>22||r===22&&t>=3||r===20&&t>=16)return g.getBuiltinModule(e)}return B(e)},"__cjs_getBuiltinModule"),{createRequire:Y}=K("node:module");var H=Object.defineProperty,X=s((e,r)=>H(e,"name",{value:r,configurable:!0}),"s$6"),W=Object.defineProperty,G=X((e,r)=>W(e,"name",{value:r,configurable:!0}),"o"),Q=Object.defineProperty,x=G((e,r)=>Q(e,"name",{value:r,configurable:!0}),"l");const A=x((e,r)=>{let t=0,n=r.length-2;for(;t<n;){const o=t+(n-t>>1);if(e<r[o])n=o-1;else if(e>=r[o+1])t=o+1;else{t=o;break}}return t},"binarySearch"),Z=x(e=>e.split(/\n|\r(?!\n)/).reduce((r,t)=>(r.push(r.at(-1)+t.length+1),r),[0]),"getLineStartIndexes"),Er=x((e,r,t)=>{const n=t?.skipChecks??!1;if(!n&&(!Array.isArray(e)&&typeof e!="string"||(typeof e=="string"||Array.isArray(e))&&e.length===0))return{column:0,line:0};if(!n&&(typeof r!="number"||typeof e=="string"&&r>=e.length||Array.isArray(e)&&r+1>=e.at(-1)))return{column:0,line:0};if(typeof e=="string"){const a=Z(e),i=A(r,a);return{column:r-a[i]+1,line:i+1}}const o=A(r,e);return{column:r-e[o]+1,line:o+1}},"indexToLineColumn");var ee=Object.defineProperty,re=s((e,r)=>ee(e,"name",{value:r,configurable:!0}),"t$5"),te=Object.defineProperty,ne=re((e,r)=>te(e,"name",{value:r,configurable:!0}),"n"),oe=Object.defineProperty,ae=ne((e,r)=>oe(e,"name",{value:r,configurable:!0}),"t");const Pr=ae(({applicationType:e,error:r,file:t})=>`You are a very skilled ${t.language} programmer.
${e?`You are working on a ${e} application.`:""}
Use the following context to find a possible fix for the exception message at the end. Limit your answer to 4 or 5 sentences. Also include a few links to documentation that might help.
Use this format in your answer, make sure links are json:
FIX
insert the possible fix here
ENDFIX
LINKS
{"title": "Title link 1", "url": "URL link 1"}
{"title": "Title link 2", "url": "URL link 2"}
ENDLINKS
---
Here comes the context and the exception message:
Line: ${t.line}
File:
${t.file}
Snippet including line numbers:
${t.snippet}
Exception class:
${r.name}
Exception message:
${r.message}`,"aiPrompt");var ie=Object.defineProperty,se=s((e,r)=>ie(e,"name",{value:r,configurable:!0}),"o$6"),ue=Object.defineProperty,ce=se((e,r)=>ue(e,"name",{value:r,configurable:!0}),"i"),le=Object.defineProperty,C=ce((e,r)=>le(e,"name",{value:r,configurable:!0}),"i");const T=C((e,r,t)=>{const n=t.indexOf(e);if(n===-1)return"";const o=n+e.length,a=t.indexOf(r,o);return a===-1?"":t.slice(o,a).trim()},"between"),xr=C(e=>{const r=T("FIX","ENDFIX",e);if(!r)return["No solution found.",'Provide this response to the Maintainer of <a href="https://github.com/visulima/visulima/issues/new?assignees=&labels=s%3A+pending+triage%2Cc%3A+bug&projects=&template=bug_report.yml" target="_blank" rel="noopener noreferrer" class="text-blue-500 hover:underline inline-flex items-center text-sm">/error</a>.',`"${e}"`].join("</br></br>");const t=T("LINKS","ENDLINKS",e).split(`
`).map(n=>JSON.parse(n));return`${r.replaceAll(/"([^"]*)"(\s|\.)/g,"<code>$1</code> ")}
## Links
${t.map(n=>`- <a href="${n.url}" target="_blank" rel="noopener noreferrer">${n.title}</a>`).join(`
`)}
--------------------
This solution was generated with the <a href="https://sdk.vercel.ai/" target="_blank" rel="noopener noreferrer">AI SDK</a> and may not be 100% accurate.`},"aiSolutionResponse");var fe=Object.defineProperty,me=s((e,r)=>fe(e,"name",{value:r,configurable:!0}),"r$2"),pe=Object.defineProperty,de=me((e,r)=>pe(e,"name",{value:r,configurable:!0}),"r"),ge=Object.defineProperty,be=de((e,r)=>ge(e,"name",{value:r,configurable:!0}),"i");const kr={handle:be(async e=>{if(!(e.hint===void 0||e.hint===null)){if(typeof e.hint=="string"&&e.hint!=="")return{body:e.hint};if(typeof e.hint=="object"&&typeof e.hint.body=="string")return e.hint;if(Array.isArray(e.hint))return{body:e.hint.join(`
`)}}},"handle"),name:"errorHint",priority:1};var ye=Object.defineProperty,he=s((e,r)=>ye(e,"name",{value:r,configurable:!0}),"m$2"),ve=Object.defineProperty,$e=he((e,r)=>ve(e,"name",{value:r,configurable:!0}),"m"),je=Object.defineProperty,u=$e((e,r)=>je(e,"name",{value:r,configurable:!0}),"t");const Se=u(e=>`\`\`\`
${e.trim()}
\`\`\``,"code"),h=u(e=>`\`\`\`bash
${e.trim()}
\`\`\``,"bash"),v=u(e=>`\`\`\`ts
${e.trim()}
\`\`\``,"ts"),Oe=u(e=>`\`\`\`js
${e.trim()}
\`\`\``,"js"),f=u((e,...r)=>{const t=e.toLowerCase();return r.some(n=>t.includes(n.toLowerCase()))},"has"),Ee=[{name:"esm-cjs-interop",test:u(e=>{const r=(e?.message||String(e||"")).toString();if(f(r,"err_require_esm","cannot use import statement outside a module","must use import to load es module","require() of es module","does not provide an export named"))return{md:["Your project or a dependency may be mixing CommonJS and ES Modules.","","Try:","- Ensure package.json has the correct `type` (either `module` or `commonjs`).","- Use dynamic `import()` when requiring ESM from CJS.","- Prefer ESM-compatible entrypoints from dependencies.","- In Node, align `module` resolution with your bundler config.","","Check Node resolution:",h(`node -v
cat package.json | jq .type`),"","Example dynamic import in CJS:",Oe("(async () => { const mod = await import('some-esm'); mod.default(); })();")].join(`
`),title:"ESM/CJS interop"}},"test")},{name:"missing-default-export",test:u(e=>{const r=(e?.message||String(e||"")).toString();if(f(r,"default export not found","has no default export","does not provide an export named 'default'","is not exported from"))return{md:["Verify your import/export shapes.","","Default export example:",v(`export default function Component() {}
// import Component from './file'`),"","Named export example:",v(`export function Component() {}
// import { Component } from './file'`)].join(`
`),title:"Export mismatch (default vs named)"}},"test")},{name:"port-in-use",test:u(e=>{const r=(e?.message||String(e||"")).toString();if(f(r,"eaddrinuse","address already in use","listen eaddrinuse"))return{md:["Another process is using the port.","","Change the port or stop the other process.","","On macOS/Linux:",h(`lsof -i :3000
kill -9 <PID>`),"","On Windows (PowerShell):",h(`netstat -ano | findstr :3000
taskkill /PID <PID> /F`)].join(`
`),title:"Port already in use"}},"test")},{name:"file-not-found-or-case",test:u((e,r)=>{const t=(e?.message||String(e||"")).toString();if(f(t,"enoent","module not found","cannot find module"))return{md:["Check the import path and filename case (Linux/macOS are case-sensitive).","If using TS path aliases, verify `tsconfig.paths` and bundler aliases.","","Current file:",Se(`${r.file}:${r.line}`)].join(`
`),title:"Missing file or path case mismatch"}},"test")},{name:"ts-path-mapping",test:u(e=>{const r=(e?.message||String(e||"")).toString();if(f(r,"ts2307","cannot find module")||r.includes("TS2307"))return{md:["If you use path aliases, align TS `paths` with Vite/Webpack resolve aliases.","Ensure file extensions are correct and included in resolver.","","tsconfig.json excerpt:",v(`{
"compilerOptions": {
"baseUrl": ".",
"paths": { "@/*": ["src/*"] }
}
}`)].join(`
`),title:"TypeScript path mapping / resolution"}},"test")},{name:"network-dns-enotfound",test:u(e=>{const r=(e?.message||String(e||"")).toString();if(f(r,"enotfound","getaddrinfo enotfound","dns","fetch failed","ecconnrefused","econnrefused"))return{md:["The host may be unreachable or misconfigured.","","Try:","- Verify the hostname and protocol (http/https).","- Check VPN/proxy and firewall.","- Confirm the service is running and listening on the expected port.","",h(`ping <host>
nslookup <host>
curl -v http://<host>:<port>`)].join(`
`),title:"Network/DNS connection issue"}},"test")},{name:"undefined-property",test:u(e=>{const r=(e?.message||String(e||"")).toString();if(f(r,"cannot read properties of undefined","reading '"))return{md:["A variable or function returned `undefined`.","","Mitigations:","- Add nullish checks before property access.","- Validate function return values and input props/state.","",v("const value = maybe?.prop; // or: if (maybe) { use(maybe.prop) }")].join(`
`),title:"Accessing property of undefined"}},"test")}],wr={handle:u(async(e,r)=>{try{const t=Ee.map(o=>({match:o.test(e,r),rule:o})).filter(o=>!!o.match);if(t.length===0)return;const n=t.toSorted((o,a)=>(o.match.priority||0)-(a.match.priority||0)).map(o=>`#### ${o.match.title}
${o.match.md}`).join(`
---
`);return n===""?void 0:{body:n,header:"### Potential fixes detected"}}catch{return}},"handle"),name:"ruleBasedHints",priority:0};var Pe=Object.defineProperty,xe=s((e,r)=>Pe(e,"name",{value:r,configurable:!0}),"a$3"),ke=Object.defineProperty,we=xe((e,r)=>ke(e,"name",{value:r,configurable:!0}),"a"),Ne=Object.defineProperty,Ae=we((e,r)=>Ne(e,"name",{value:r,configurable:!0}),"e");const Nr=Ae(()=>{if(!Error.captureStackTrace)return;const e=new Error;return Error.captureStackTrace(e),e.stack},"captureRawStackTrace");var Te=Object.defineProperty,_=s((e,r)=>Te(e,"name",{value:r,configurable:!0}),"r"),Ie=Object.defineProperty,D=_((e,r)=>Ie(e,"name",{value:r,configurable:!0}),"o"),Ce=Object.defineProperty,_e=D((e,r)=>Ce(e,"name",{value:r,configurable:!0}),"e");function d(e){if(typeof e!="object"||e===null)return!1;const r=Object.getPrototypeOf(e);return(r===null||r===Object.prototype||Object.getPrototypeOf(r)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}s(d,"o$3");_(d,"i");D(d,"r");_e(d,"isPlainObject");var De=Object.defineProperty,Je=s((e,r)=>De(e,"name",{value:r,configurable:!0}),"E$1"),Le=Object.defineProperty,Re=Je((e,r)=>Le(e,"name",{value:r,configurable:!0}),"E"),Fe=Object.defineProperty,j=Re((e,r)=>Fe(e,"name",{value:r,configurable:!0}),"n");const y=new Map([["Error",Error],["EvalError",EvalError],["RangeError",RangeError],["ReferenceError",ReferenceError],["SyntaxError",SyntaxError],["TypeError",TypeError],["URIError",URIError]]);typeof AggregateError<"u"&&y.set("AggregateError",AggregateError);const Ar=j((e,r)=>{let t;try{t=new e}catch(o){throw new Error(`The error constructor "${e.name}" is not compatible`,{cause:o})}const n=r??t.name;if(y.has(n))throw new Error(`The error constructor "${n}" is already known.`);y.set(n,e)},"addKnownErrorConstructor");j(()=>new Map(y),"getKnownErrorConstructors");const J=j(e=>y.get(e),"getErrorConstructor"),k=j(e=>e!==null&&typeof e=="object"&&typeof e.name=="string"&&typeof e.message=="string"&&(J(e.name)!==void 0||e.name==="Error"),"isErrorLike");var Me=Object.defineProperty,L=s((e,r)=>Me(e,"name",{value:r,configurable:!0}),"t$1"),Ve=Object.defineProperty,R=L((e,r)=>Ve(e,"name",{value:r,configurable:!0}),"t"),Ue=Object.defineProperty,qe=R((e,r)=>Ue(e,"name",{value:r,configurable:!0}),"s");let p=class extends Error{static{s(this,"i")}static{L(this,"c")}static{R(this,"e")}static{qe(this,"NonError")}constructor(r){super(r),this.name="NonError"}};var ze=Object.defineProperty,Be=s((e,r)=>ze(e,"name",{value:r,configurable:!0}),"y$1"),Ke=Object.defineProperty,Ye=Be((e,r)=>Ke(e,"name",{value:r,configurable:!0}),"p"),He=Object.defineProperty,c=Ye((e,r)=>He(e,"name",{value:r,configurable:!0}),"o");const Xe={maxDepth:Number.POSITIVE_INFINITY},F=c((e,r,t=0)=>k(e)?w(e,r,t):r.maxDepth!==void 0&&t>=r.maxDepth?new p(JSON.stringify(e)):new p(JSON.stringify(e)),"deserializePlainObject"),We=c((e,r,t,n,o)=>{const a=r.map(i=>S(i,n,o+1));return new e(a,t)},"reconstructAggregateError"),w=c((e,r,t)=>{if(r.maxDepth!==void 0&&t>=r.maxDepth)return new p(JSON.stringify(e));const{cause:n,errors:o,message:a,name:i,stack:m,...E}=e,N=J(i)||Error,l=i==="AggregateError"&&Array.isArray(o)?We(N,o,a,r,t):new N(a);return!l.name&&i&&(l.name=i),a!==void 0&&(l.message=a),m&&(l.stack=m),Ge(l,E,n,i,r,t),n!==void 0&&(l.cause=S(n,r,t+1)),Qe(l,e),l},"reconstructError"),S=c((e,r,t)=>d(e)?F(e,r,t):Array.isArray(e)?e.map(n=>S(n,r,t)):e,"deserializeValue"),Ge=c((e,r,t,n,o,a)=>{const i=e;for(const[m,E]of Object.entries(r))if(!(m==="cause"&&t!==void 0)){if(m==="errors"&&n==="AggregateError")continue;i[m]=S(E,o,a+1)}},"restoreErrorProperties"),Qe=c((e,r)=>{const t=new Set;t.add("name"),t.add("message"),t.add("stack");for(const n of Object.keys(r))t.add(n);for(const n of t)if(n in e){const o=Object.getOwnPropertyDescriptor(e,n);o&&!o.enumerable&&Object.defineProperty(e,n,{...o,enumerable:!0})}},"makePropertiesEnumerable"),I=c(e=>new p(JSON.stringify(e)),"handlePrimitive"),Ze=c(e=>new p(JSON.stringify(e)),"handleArray"),er=c((e,r)=>k(e)?w(e,r,0):F(e,r),"handlePlainObject"),Ir=c((e,r={})=>{const t={...Xe,...r};return e instanceof Error?e:e===null?I(null):typeof e=="string"||typeof e=="number"||typeof e=="boolean"?I(e):Array.isArray(e)?Ze(e):k(e)?w(e,t,0):d(e)?er(e,t):new p(JSON.stringify(e))},"deserialize");var rr=Object.defineProperty,tr=s((e,r)=>rr(e,"name",{value:r,configurable:!0}),"a"),nr=Object.defineProperty,M=tr((e,r)=>nr(e,"name",{value:r,configurable:!0}),"n");const or=Y(import.meta.url),b=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,ar=M(e=>{if(typeof b<"u"&&b.versions&&b.versions.node){const[r,t]=b.versions.node.split(".").map(Number);if(r>22||r===22&&t>=3||r===20&&t>=16)return b.getBuiltinModule(e)}return or(e)},"__cjs_getBuiltinModule"),{inspect:ir}=ar("node:util");var sr=Object.defineProperty,ur=M((e,r)=>sr(e,"name",{value:r,configurable:!0}),"a");const Cr=ur(e=>{const r=new Set,t=[];let n=e;for(;n;){if(r.has(n)){console.error(`Circular reference detected in error causes: ${ir(e)}`);break}if(t.push(n),r.add(n),!n.cause)break;n=n.cause}return t},"getErrorCauses");var cr=Object.defineProperty,lr=s((e,r)=>cr(e,"name",{value:r,configurable:!0}),"l"),fr=Object.defineProperty,mr=lr((e,r)=>fr(e,"name",{value:r,configurable:!0}),"f");const pr=Object.create({},{cause:{enumerable:!0,value:void 0,writable:!0},code:{enumerable:!0,value:void 0,writable:!0},errors:{enumerable:!0,value:void 0,writable:!0},message:{enumerable:!0,value:void 0,writable:!0},name:{enumerable:!0,value:void 0,writable:!0},stack:{enumerable:!0,value:void 0,writable:!0}});var dr=Object.defineProperty,O=mr((e,r)=>dr(e,"name",{value:r,configurable:!0}),"c");const P=new WeakSet,gr=O(e=>{P.add(e);const r=e.toJSON();return P.delete(e),r},"toJSON"),V=O((e,r,t,n)=>{if(e&&e instanceof Uint8Array&&e.constructor.name==="Buffer")return"[object Buffer]";if(e!==null&&typeof e=="object"&&typeof e.pipe=="function")return"[object Stream]";if(e instanceof Error)return r.includes(e)?"[Circular]":(t+=1,$(e,n,r,t));if(n.useToJSON&&typeof e.toJSON=="function")return e.toJSON();if(typeof e=="object"&&e instanceof Date)return e.toISOString();if(typeof e=="function")return`[Function: ${e.name||"anonymous"}]`;if(d(e)){if(t+=1,n.maxDepth&&t>=n.maxDepth)return{};const o={};for(const a in e)o[a]=V(e[a],r,t,n);return o}try{return e}catch{return"[Not Available]"}},"serializeValue"),$=O((e,r,t,n)=>{if(t.push(e),r.maxDepth===0)return{};if(r.useToJSON&&typeof e.toJSON=="function"&&!P.has(e))return gr(e);const o=Object.create(pr);if(o.name=Object.prototype.toString.call(e.constructor)==="[object Function]"?e.constructor.name:e.name,o.message=e.message,o.stack=e.stack,Array.isArray(e.errors)){const a=[];for(const i of e.errors){if(!(i instanceof Error))throw new TypeError("All errors in the 'errors' property must be instances of Error");if(t.includes(i))return o.errors=[],o;a.push($(i,r,t,n))}o.errors=a}e.cause instanceof Error&&!t.includes(e.cause)&&(o.cause=$(e.cause,r,t,n));for(const a in e)if(o[a]===void 0){const i=e[a];o[a]=V(i,t,n,r)}if(Array.isArray(r.exclude)&&r.exclude.length>0)for(const a of r.exclude)try{delete o[a]}catch{}return o},"_serialize"),_r=O((e,r={})=>$(e,{exclude:r.exclude??[],maxDepth:r.maxDepth??Number.POSITIVE_INFINITY,useToJSON:r.useToJSON??!1},[],0),"serialize");var br=Object.defineProperty,yr=s((e,r)=>br(e,"name",{value:r,configurable:!0}),"o"),hr=Object.defineProperty,vr=yr((e,r)=>hr(e,"name",{value:r,configurable:!0}),"n"),$r=Object.defineProperty,U=vr((e,r)=>$r(e,"name",{value:r,configurable:!0}),"s");const jr=U(e=>{const r=e.methodName&&e.methodName!=="<unknown>"?`${e.methodName} `:"",t=e.file??"<unknown>",n=e.line??0,o=e.column??0;return r.trim()?` at ${r}(${t}:${n}:${o})`:` at ${t}:${n}:${o}`},"formatStackFrameLine"),Dr=U((e,r)=>{const t=[];if(r?.header&&(r.header.name||r.header.message)){const n=String(r.header.name||"Error"),o=String(r.header.message||"");t.push(`${n}${o?": ":""}${o}`)}for(const n of e)t.push(jr(n));return t.join(`
`)},"formatStacktrace");export{Rr as CODE_FRAME_POINTER,p as NonError,qr as VisulimaError,Ar as addKnownErrorConstructor,Pr as aiPrompt,xr as aiSolutionResponse,Nr as captureRawStackTrace,Fr as codeFrame,Ir as deserializeError,kr as errorHintFinder,jr as formatStackFrameLine,Dr as formatStacktrace,Cr as getErrorCauses,Er as indexToLineColumn,k as isErrorLike,zr as isVisulimaError,Mr as parseStacktrace,Vr as renderError,wr as ruleBasedFinder,_r as serializeError};