@visulima/error-handler 1.0.5 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/dist/error-handler/html-error-handler.d.ts +2 -1
- package/dist/error-handler/html-error-handler.js +2 -2
- package/dist/error-handler/json-error-handler.d.ts +2 -1
- package/dist/error-handler/json-error-handler.js +1 -1
- package/dist/error-handler/jsonapi-error-handler.js +1 -1
- package/dist/error-handler/jsonp-error-handler.d.ts +2 -1
- package/dist/error-handler/jsonp-error-handler.js +1 -1
- package/dist/error-handler/problem-error-handler.js +1 -1
- package/dist/error-handler/text-error-handler.d.ts +2 -1
- package/dist/error-handler/text-error-handler.js +2 -2
- package/dist/error-handler/xml-error-handler.d.ts +2 -1
- package/dist/error-handler/xml-error-handler.js +1 -1
- package/dist/handler/cli-handler.d.ts +2 -1
- package/dist/handler/cli-handler.js +1 -1
- package/dist/packem_shared/add-status-code-to-response-Dq1lVRcO.js +1 -0
- package/dist/packem_shared/cliHandler-CB1c5j_A.js +1 -0
- package/package.json +3 -3
- package/dist/packem_shared/add-status-code-to-response-BE6paXjR.js +0 -1
- package/dist/packem_shared/cliHandler-CFffArNH.js +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
## @visulima/error-handler [1.0.6](https://github.com/visulima/visulima/compare/@visulima/error-handler@1.0.5...@visulima/error-handler@1.0.6) (2025-10-15)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* update @visulima/packem dependency and modify packem configuration ([fe6c29b](https://github.com/visulima/visulima/commit/fe6c29bc3ac7e9ef7d484d3998b2e1adb75164ea))
|
|
6
|
+
* update @visulima/packem to 2.0.0-alpha.30 across multiple packages for improved compatibility ([27b346e](https://github.com/visulima/visulima/commit/27b346eaa1c0fb0e420d9a9824482028307f4249))
|
|
7
|
+
* update package dependencies and enhance ESLint configuration for improved performance ([1a20ead](https://github.com/visulima/visulima/commit/1a20eadaf0a563ed5e6f621eb7649b5629f44164))
|
|
8
|
+
|
|
9
|
+
### Miscellaneous Chores
|
|
10
|
+
|
|
11
|
+
* restore lint:types command in package.json and remove deprecated @babel/core dependency ([7bffd47](https://github.com/visulima/visulima/commit/7bffd473b40705b7f27b863521fbd21351e464b5))
|
|
12
|
+
* update package dependencies across multiple packages for improved compatibility and performance ([9567591](https://github.com/visulima/visulima/commit/9567591c415da3002f3a4fe08f8caf7ce01ca5f7))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Dependencies
|
|
16
|
+
|
|
17
|
+
* **@visulima/boxen:** upgraded to 2.0.4
|
|
18
|
+
* **@visulima/error:** upgraded to 5.0.0
|
|
19
|
+
|
|
1
20
|
## @visulima/error-handler [1.0.5](https://github.com/visulima/visulima/compare/@visulima/error-handler@1.0.4...@visulima/error-handler@1.0.5) (2025-09-23)
|
|
2
21
|
|
|
3
22
|
|
|
@@ -13,4 +13,5 @@ type HtmlErrorHandlerOptions = {
|
|
|
13
13
|
};
|
|
14
14
|
declare const htmlErrorHandler: (options?: HtmlErrorHandlerOptions) => ErrorHandler;
|
|
15
15
|
|
|
16
|
-
export {
|
|
16
|
+
export { htmlErrorHandler };
|
|
17
|
+
export type { HtmlErrorHandlerOptions };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var
|
|
1
|
+
var s=Object.defineProperty;var n=(e,r)=>s(e,"name",{value:r,configurable:!0});import{createRequire as c}from"node:module";import{a as g}from"../packem_shared/add-status-code-to-response-Dq1lVRcO.js";const l=c(import.meta.url),f=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process;const{getReasonPhrase:m}=l("http-status-codes");var p=Object.defineProperty,b=n((e,r)=>p(e,"name",{value:r,configurable:!0}),"n");const u=b((e={})=>async(r,d,t)=>{g(t,r),t.setHeader("content-type","text/html; charset=utf-8");const o=m(t.statusCode)||"Error",a=e.cspNonce?` nonce="${e.cspNonce}"`:"";if(e.errorPage){const i=typeof e.errorPage=="function"?await e.errorPage({error:r,reasonPhrase:o,request:d,response:t,statusCode:t.statusCode}):e.errorPage;if(i){t.end(i);return}}t.end(`<!DOCTYPE html>
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8">
|
|
@@ -32,4 +32,4 @@ var l=Object.defineProperty;var d=(e,r)=>l(e,"name",{value:r,configurable:!0});i
|
|
|
32
32
|
</div>
|
|
33
33
|
</div>
|
|
34
34
|
</body>
|
|
35
|
-
</html>`)},"htmlErrorHandler");export{
|
|
35
|
+
</html>`)},"htmlErrorHandler");export{u as htmlErrorHandler};
|
|
@@ -14,4 +14,5 @@ type JsonErrorHandlerOptions = {
|
|
|
14
14
|
};
|
|
15
15
|
declare const jsonErrorHandler: (options?: JsonErrorHandlerOptions) => ErrorHandler;
|
|
16
16
|
|
|
17
|
-
export {
|
|
17
|
+
export { jsonErrorHandler };
|
|
18
|
+
export type { JsonErrorBody, JsonErrorFormatter, JsonErrorHandlerOptions };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var d=Object.defineProperty;var n=(s,e)=>d(s,"name",{value:e,configurable:!0});import{createRequire as p}from"node:module";import{a as l}from"../packem_shared/add-status-code-to-response-Dq1lVRcO.js";import{s as a}from"../packem_shared/send-json-Cedv8-Bt.js";import{a as _}from"../packem_shared/set-error-headers-DT9rVGtW.js";const m=p(import.meta.url),v=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process;const{getReasonPhrase:f}=m("http-status-codes");var g=Object.defineProperty,j=n((s,e)=>g(s,"name",{value:e,configurable:!0}),"n");const P=j((s={})=>async(e,i,r)=>{l(r,e),_(r,e);const{statusCode:o}=r,t=f(o)||"An error occurred";if(s.formatter){const u=await s.formatter({error:e,reasonPhrase:t,request:i,response:r,statusCode:o});a(r,u);return}const{expose:c}=e;a(r,{message:e.message||t,error:t,statusCode:o,...c?{stack:e.stack}:{}})},"jsonErrorHandler");export{P as jsonErrorHandler};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var l=Object.defineProperty;var n=(e,o)=>l(e,"name",{value:o,configurable:!0});import{createRequire as f}from"node:module";import{a as g}from"../packem_shared/add-status-code-to-response-Dq1lVRcO.js";import{s as i}from"../packem_shared/send-json-Cedv8-Bt.js";import{a as _}from"../packem_shared/set-error-headers-DT9rVGtW.js";const a=f(import.meta.url),C=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process;const{isHttpError:m}=a("http-errors"),{getReasonPhrase:u}=a("http-status-codes"),t=a("ts-japi");var b=Object.defineProperty,j=n((e,o)=>b(e,"name",{value:o,configurable:!0}),"n");const c="An error occurred",R=j((e,o,s)=>{if(g(s,e),_(s,e),e instanceof t.JapiError||t.JapiError.isLikeJapiError(e)){const r=new t.ErrorSerializer;i(s,r.serialize(e))}else if(m(e)){const r="statusCode"in e&&typeof e.statusCode=="number"?e.statusCode:"status"in e&&typeof e.status=="number"?e.status:s.statusCode,d="title"in e&&typeof e.title=="string"?e.title:void 0,p="message"in e&&typeof e.message=="string"?e.message:"";i(s,{errors:[{code:r??s.statusCode,title:d||u(r)||c,detail:p}]})}else{const{message:r}=e;i(s,{errors:[{code:"500",title:u(s.statusCode)||c,detail:r}]})}},"jsonapiErrorHandler");export{R as default};
|
|
@@ -15,4 +15,5 @@ type JsonpErrorHandlerOptions = {
|
|
|
15
15
|
};
|
|
16
16
|
declare const jsonpErrorHandler: (options?: JsonpErrorHandlerOptions) => ErrorHandler;
|
|
17
17
|
|
|
18
|
-
export {
|
|
18
|
+
export { jsonpErrorHandler };
|
|
19
|
+
export type { JsonpErrorBody, JsonpErrorFormatter, JsonpErrorHandlerOptions };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var d=Object.defineProperty;var c=(s,e)=>d(s,"name",{value:e,configurable:!0});import{createRequire as m}from"node:module";import{a as h}from"../packem_shared/add-status-code-to-response-Dq1lVRcO.js";import{a as _}from"../packem_shared/set-error-headers-DT9rVGtW.js";const f=m(import.meta.url),k=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process;const{getReasonPhrase:g}=f("http-status-codes");var b=Object.defineProperty,j=c((s,e)=>b(s,"name",{value:e,configurable:!0}),"c");const v="callback",C=j((s={})=>async(e,n,t)=>{h(t,e),_(t,e);const{statusCode:r}=t,o=g(r)||"An error occurred",i=new URL(n.url??"http://localhost","http://localhost"),l=s.callbackParamName||v,p=i.searchParams.get(l)||"callback";let a;if(s.formatter)a=await s.formatter({error:e,reasonPhrase:o,request:n,response:t,statusCode:r});else{const{expose:u}=e;a={message:e.message||o,error:o,statusCode:r,...u?{stack:e.stack}:{}}}t.setHeader("content-type","application/javascript; charset=utf-8"),t.end(`${p}(${JSON.stringify(a)});`)},"jsonpErrorHandler");export{C as jsonpErrorHandler};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var y=Object.defineProperty;var i=(e,o)=>y(e,"name",{value:o,configurable:!0});import{createRequire as b}from"node:module";import{a as g}from"../packem_shared/add-status-code-to-response-Dq1lVRcO.js";import{s as p}from"../packem_shared/send-json-Cedv8-Bt.js";import{a as v}from"../packem_shared/set-error-headers-DT9rVGtW.js";const c=b(import.meta.url),R=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process;const{isHttpError:_}=c("http-errors"),{getReasonPhrase:n}=c("http-status-codes");var j=Object.defineProperty,C=i((e,o)=>j(e,"name",{value:o,configurable:!0}),"i");const u="about:blank",d="An error occurred",k=C((e,o,t)=>{const{message:r,stack:a}=e;if(_(e)){const l="expose"in e?e.expose:void 0,s="statusCode"in e&&typeof e.statusCode=="number"?e.statusCode:"status"in e&&typeof e.status=="number"?e.status:t.statusCode,f="title"in e&&typeof e.title=="string"?e.title:void 0,m="type"in e&&typeof e.type=="string"?e.type:void 0;t.statusCode=s,v(t,e),p(t,{type:m||u,title:f||n(s)||d,status:s,detail:r,...l?{trace:a}:{}},"application/problem+json")}else g(t,e),p(t,{type:u,title:n(t.statusCode)||d,status:t.statusCode,detail:r,...e.expose?{trace:a}:{}},"application/problem+json")},"problemErrorHandler");export{k as default};
|
|
@@ -13,4 +13,5 @@ type TextErrorHandlerOptions = {
|
|
|
13
13
|
};
|
|
14
14
|
declare const textErrorHandler: (options?: TextErrorHandlerOptions) => ErrorHandler;
|
|
15
15
|
|
|
16
|
-
export {
|
|
16
|
+
export { textErrorHandler };
|
|
17
|
+
export type { TextErrorFormatter, TextErrorHandlerOptions };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var
|
|
1
|
+
var p=Object.defineProperty;var i=(s,e)=>p(s,"name",{value:e,configurable:!0});import{createRequire as f}from"node:module";import{a as _}from"../packem_shared/add-status-code-to-response-Dq1lVRcO.js";import{a as g}from"../packem_shared/set-error-headers-DT9rVGtW.js";const l=f(import.meta.url),y=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process;const{getReasonPhrase:m}=l("http-status-codes");var h=Object.defineProperty,v=i((s,e)=>h(s,"name",{value:e,configurable:!0}),"m");const P=v((s={})=>async(e,c,t)=>{_(t,e),g(t,e);const{statusCode:r}=t,o=m(r)||"Error";if(t.setHeader("content-type","text/plain; charset=utf-8"),s.formatter){const u=await s.formatter({error:e,reasonPhrase:o,request:c,response:t,statusCode:r});t.end(u);return}const n=e.message||o,{expose:d}=e,a=d?e.stack:void 0;t.end(a?`${n}
|
|
2
2
|
|
|
3
|
-
${
|
|
3
|
+
${a}`:n)},"textErrorHandler");export{P as textErrorHandler};
|
|
@@ -26,4 +26,5 @@ type XmlErrorHandlerOptions = {
|
|
|
26
26
|
};
|
|
27
27
|
declare const xmlErrorHandler: (options?: XmlErrorHandlerOptions) => ErrorHandler;
|
|
28
28
|
|
|
29
|
-
export {
|
|
29
|
+
export { xmlErrorHandler };
|
|
30
|
+
export type { ToXmlOptions, XmlErrorBody, XmlErrorFormatter, XmlErrorHandlerOptions };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var m=Object.defineProperty;var n=(t,e)=>m(t,"name",{value:e,configurable:!0});import{createRequire as u}from"node:module";import{toXML as f}from"jstoxml";import{a as b}from"../packem_shared/add-status-code-to-response-Dq1lVRcO.js";import{a as X}from"../packem_shared/set-error-headers-DT9rVGtW.js";const p=u(import.meta.url),h=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process;const{getReasonPhrase:d}=p("http-status-codes");var g=Object.defineProperty,_=n((t,e)=>g(t,"name",{value:e,configurable:!0}),"l");const j=_((t={})=>async(e,l,o)=>{b(o,e),X(o,e);const{statusCode:r}=o,s=d(r)||"An error occurred";let a;if(t.formatter)a=await t.formatter({error:e,reasonPhrase:s,request:l,response:o,statusCode:r});else{const{expose:c}=e;a={error:{statusCode:r,name:s,message:e.message||s,...c?{stack:e.stack}:{}}}}const i=f(a,{header:t.toXml?.header??t.xmlHeader??!0,indent:t.toXml?.indent??" ",...t.toXml?.attributeReplacements?{attributeReplacements:t.toXml.attributeReplacements}:{},...t.toXml?.attributeFilter?{attributeFilter:t.toXml.attributeFilter}:{},...t.toXml?.attributeExplicitTrue===void 0?{}:{attributeExplicitTrue:t.toXml.attributeExplicitTrue},...t.toXml?.contentMap?{contentMap:t.toXml.contentMap}:{},...t.toXml?.contentReplacements?{contentReplacements:t.toXml.contentReplacements}:{},...t.toXml?.selfCloseTags===void 0?{}:{selfCloseTags:t.toXml.selfCloseTags}});o.setHeader("content-type","application/xml; charset=utf-8"),o.end(i)},"xmlErrorHandler");export{j as xmlErrorHandler};
|
|
@@ -27,4 +27,5 @@ declare const terminalOutput: (error: Error, options?: CliHandlerOptions) => Pro
|
|
|
27
27
|
|
|
28
28
|
declare const ansiHandler: (error: Error, options?: BaseCliOptions) => Promise<string>;
|
|
29
29
|
|
|
30
|
-
export {
|
|
30
|
+
export { ansiHandler, terminalOutput as cliHandler };
|
|
31
|
+
export type { BaseCliOptions, CliHandlerOptions };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var o=Object.defineProperty;var a=(r,e)=>o(r,"name",{value:e,configurable:!0});import{buildOutput as i}from"../packem_shared/cliHandler-
|
|
1
|
+
var o=Object.defineProperty;var a=(r,e)=>o(r,"name",{value:e,configurable:!0});import{buildOutput as i}from"../packem_shared/cliHandler-CB1c5j_A.js";import{terminalOutput as f}from"../packem_shared/cliHandler-CB1c5j_A.js";var u=Object.defineProperty,l=a((r,e)=>u(r,"name",{value:e,configurable:!0}),"o");const d=l(async(r,e={})=>{const{errorAnsi:t,solutionBox:n}=await i(r,e);return n===void 0?t:`${t}
|
|
2
2
|
|
|
3
3
|
${n}`},"ansiHandler");export{d as ansiHandler,f as cliHandler};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var n=Object.defineProperty;var r=(e,s)=>n(e,"name",{value:s,configurable:!0});import{createRequire as a}from"node:module";const u=a(import.meta.url),l=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process;const{StatusCodes:i}=u("http-status-codes");var d=Object.defineProperty,c=r((e,s)=>d(e,"name",{value:s,configurable:!0}),"s");const f=c((e,s)=>{const o=s,t=Number(o.statusCode??o.status);if(Number.isInteger(t)&&t>=400&&t<=599){e.statusCode=t;return}e.statusCode<400&&(e.statusCode=i.INTERNAL_SERVER_ERROR)},"addStatusCodeToResponse");export{f as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var j=Object.defineProperty;var c=(e,r)=>j(e,"name",{value:r,configurable:!0});import{createRequire as y}from"node:module";import{parseStacktrace as b}from"@visulima/error/stacktrace";import{boxen as v}from"@visulima/boxen";import{renderError as x}from"@visulima/error/error";import{ruleBasedFinder as O,errorHintFinder as B}from"@visulima/error/solution";const h=y(import.meta.url),u=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,p=c(e=>{if(typeof u<"u"&&u.versions&&u.versions.node){const[r,t]=u.versions.node.split(".").map(Number);if(r>22||r===22&&t>=3||r===20&&t>=16)return u.getBuiltinModule(e)}return h(e)},"__cjs_getBuiltinModule"),{readFile:w}=p("node:fs/promises"),{fileURLToPath:_}=p("node:url");var F=Object.defineProperty,T=c((e,r)=>F(e,"name",{value:r,configurable:!0}),"t");const A=["cjs","mjs"],q=["mdoc"],P=T(e=>{const r=(e.split("?")[0]??e).split(".").pop()?.toLowerCase();if(!r||A.includes(r))return"javascript";if(q.includes(r))return"markdown";switch(r){case"js":return"javascript";case"json":return"json";case"json5":return"json5";case"jsonc":return"jsonc";case"jsx":return"jsx";case"sql":return"sql";case"ts":return"typescript";case"tsx":return"tsx";case"xml":return"xml";case"md":return"markdown";case"mdx":return"mdx";case"svelte":return"svelte";case"vue":return"vue";case"html":return"html";case"css":return"css";case"scss":return"scss";case"less":return"less";case"sass":return"sass";case"stylus":return"stylus";case"styl":return"styl";default:return"javascript"}},"findLanguageBasedOnExtension");var k=Object.defineProperty,L=c((e,r)=>k(e,"name",{value:r,configurable:!0}),"s");const l=new Map,S=L(async e=>{if(/^(?:http|https|file|data):/.test(e)){if(l.has(e))return l.get(e);if(e.startsWith("file:"))try{const r=_(e),t=await w(r,"utf8");return l.set(e,t),t}catch{return}try{const r=await fetch(e);if(!r.ok)return;const t=await r.text();return l.set(e,t),t}catch{return}}},"getFileSource");var M=Object.defineProperty,f=c((e,r)=>M(e,"name",{value:r,configurable:!0}),"d");const R=f(e=>e.replace(/^\s*#+\s*/,"").trim(),"sanitizeTitle"),$=f(async(e,r,t=!1)=>{const a=[...r,O,B],s=b(e,{frameLimit:1})[0]??{};for await(const o of a.sort((i,n)=>i.priority-n.priority)){const{handle:i}=o;if(typeof i!="function")continue;const n=await i(e,{file:s.file??"",language:P(s.file??""),line:s.line??0,snippet:s.file?await S(s.file):""});if(n)return n}},"runSolutionFinders"),C=f(async(e,r)=>{const{solutionFinders:t=[],solutionTitle:a,color:s,debug:o=!1,...i}=r,n=x(e,{...i,...s?.codeFrame}),d=await $(e,t,o);if(!d)return{errorAnsi:n,solutionBox:void 0};const m=R(d.header??a??"A possible solution to this error"),g=v(d.body,{borderStyle:"round",padding:{top:1,right:2,bottom:1,left:2},margin:{top:0,right:0,bottom:0,left:0},headerText:`💡 ${m}`,headerAlignment:"left",textAlignment:"left",...s?.boxen});return{errorAnsi:n,solutionBox:g}},"buildOutput"),D=f(async(e,r={})=>{const{logger:t=console,...a}=r,{errorAnsi:s,solutionBox:o}=await C(e,a);t.error(s),o&&(t.log(""),t.log(o))},"terminalOutput");export{C as buildOutput,D as terminalOutput};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visulima/error-handler",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.6",
|
|
4
4
|
"description": "Error handlers for use in development and production environments.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"visulima",
|
|
@@ -134,8 +134,8 @@
|
|
|
134
134
|
],
|
|
135
135
|
"dependencies": {
|
|
136
136
|
"@tinyhttp/accepts": "^2.2.4",
|
|
137
|
-
"@visulima/boxen": "2.0.
|
|
138
|
-
"@visulima/error": "
|
|
137
|
+
"@visulima/boxen": "2.0.4",
|
|
138
|
+
"@visulima/error": "5.0.0",
|
|
139
139
|
"http-errors": "^2.0.0",
|
|
140
140
|
"http-status-codes": "^2.3.0",
|
|
141
141
|
"jstoxml": "^7.0.1",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var r=Object.defineProperty;var o=(e,s)=>r(e,"name",{value:s,configurable:!0});import{StatusCodes as u}from"http-status-codes";var d=Object.defineProperty,n=o((e,s)=>d(e,"name",{value:s,configurable:!0}),"s");const i=n((e,s)=>{const a=s,t=Number(a.statusCode??a.status);if(Number.isInteger(t)&&t>=400&&t<=599){e.statusCode=t;return}e.statusCode<400&&(e.statusCode=u.INTERNAL_SERVER_ERROR)},"addStatusCodeToResponse");export{i as a};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var d=Object.defineProperty;var u=(e,r)=>d(e,"name",{value:r,configurable:!0});import{parseStacktrace as g}from"@visulima/error/stacktrace";import{boxen as y}from"@visulima/boxen";import{renderError as h}from"@visulima/error/error";import{readFile as x}from"node:fs/promises";import{fileURLToPath as j}from"node:url";import{ruleBasedFinder as v,errorHintFinder as b}from"@visulima/error/solution";var w=Object.defineProperty,O=u((e,r)=>w(e,"name",{value:r,configurable:!0}),"t");const F=["cjs","mjs"],A=["mdoc"],B=O(e=>{const r=(e.split("?")[0]??e).split(".").pop()?.toLowerCase();if(!r||F.includes(r))return"javascript";if(A.includes(r))return"markdown";switch(r){case"js":return"javascript";case"json":return"json";case"json5":return"json5";case"jsonc":return"jsonc";case"jsx":return"jsx";case"sql":return"sql";case"ts":return"typescript";case"tsx":return"tsx";case"xml":return"xml";case"md":return"markdown";case"mdx":return"mdx";case"svelte":return"svelte";case"vue":return"vue";case"html":return"html";case"css":return"css";case"scss":return"scss";case"less":return"less";case"sass":return"sass";case"stylus":return"stylus";case"styl":return"styl";default:return"javascript"}},"findLanguageBasedOnExtension");var k=Object.defineProperty,L=u((e,r)=>k(e,"name",{value:r,configurable:!0}),"s");const c=new Map,P=L(async e=>{if(/^(?:http|https|file|data):/.test(e)){if(c.has(e))return c.get(e);if(e.startsWith("file:"))try{const r=j(e),t=await x(r,"utf8");return c.set(e,t),t}catch{return}try{const r=await fetch(e);if(!r.ok)return;const t=await r.text();return c.set(e,t),t}catch{return}}},"getFileSource");var S=Object.defineProperty,l=u((e,r)=>S(e,"name",{value:r,configurable:!0}),"d");const T=l(e=>e.replace(/^\s*#+\s*/,"").trim(),"sanitizeTitle"),$=l(async(e,r,t=!1)=>{const i=[...r,v,b],s=g(e,{frameLimit:1})[0]??{};for await(const o of i.sort((a,n)=>a.priority-n.priority)){const{handle:a}=o;if(typeof a!="function")continue;const n=await a(e,{file:s.file??"",language:B(s.file??""),line:s.line??0,snippet:s.file?await P(s.file):""});if(n)return n}},"runSolutionFinders"),q=l(async(e,r)=>{const{solutionFinders:t=[],solutionTitle:i,color:s,debug:o=!1,...a}=r,n=h(e,{...a,...s?.codeFrame}),f=await $(e,t,o);if(!f)return{errorAnsi:n,solutionBox:void 0};const m=T(f.header??i??"A possible solution to this error"),p=y(f.body,{borderStyle:"round",padding:{top:1,right:2,bottom:1,left:2},margin:{top:0,right:0,bottom:0,left:0},headerText:`💡 ${m}`,headerAlignment:"left",textAlignment:"left",...s?.boxen});return{errorAnsi:n,solutionBox:p}},"buildOutput"),W=l(async(e,r={})=>{const{logger:t=console,...i}=r,{errorAnsi:s,solutionBox:o}=await q(e,i);t.error(s),o&&(t.log(""),t.log(o))},"terminalOutput");export{q as buildOutput,W as terminalOutput};
|