@visulima/error-handler 1.0.9 → 1.0.11

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 CHANGED
@@ -1,3 +1,32 @@
1
+ ## @visulima/error-handler [1.0.11](https://github.com/visulima/visulima/compare/@visulima/error-handler@1.0.10...@visulima/error-handler@1.0.11) (2025-11-07)
2
+
3
+ ### Bug Fixes
4
+
5
+ * update TypeScript configurations and improve linting across multiple packages ([6f25ec7](https://github.com/visulima/visulima/commit/6f25ec7841da7246f8f9166efc5292a7089d37ee))
6
+
7
+ ### Miscellaneous Chores
8
+
9
+ * update npm and pnpm configurations for monorepo optimization ([#564](https://github.com/visulima/visulima/issues/564)) ([5512b42](https://github.com/visulima/visulima/commit/5512b42f672c216b6a3c9e39035199a4ebd9a4b8))
10
+
11
+
12
+ ### Dependencies
13
+
14
+ * **@visulima/boxen:** upgraded to 2.0.8
15
+ * **@visulima/error:** upgraded to 5.0.4
16
+
17
+ ## @visulima/error-handler [1.0.10](https://github.com/visulima/visulima/compare/@visulima/error-handler@1.0.9...@visulima/error-handler@1.0.10) (2025-11-05)
18
+
19
+ ### Bug Fixes
20
+
21
+ * update dependencies across multiple packages ([36a47f2](https://github.com/visulima/visulima/commit/36a47f26d65d25a7b4d8371186710e7d0ab61a2b))
22
+ * Updated `ts-japi` to version `1.12.1` ([a4d8b72](https://github.com/visulima/visulima/commit/a4d8b728ccab8ce5b0a97ac9c11105fc6a7ce765))
23
+
24
+
25
+ ### Dependencies
26
+
27
+ * **@visulima/boxen:** upgraded to 2.0.7
28
+ * **@visulima/error:** upgraded to 5.0.3
29
+
1
30
  ## @visulima/error-handler [1.0.9](https://github.com/visulima/visulima/compare/@visulima/error-handler@1.0.8...@visulima/error-handler@1.0.9) (2025-10-22)
2
31
 
3
32
  ### Miscellaneous Chores
@@ -38,7 +67,7 @@
38
67
  ### Bug Fixes
39
68
 
40
69
  * update @visulima/packem dependency and modify packem configuration ([fe6c29b](https://github.com/visulima/visulima/commit/fe6c29bc3ac7e9ef7d484d3998b2e1adb75164ea))
41
- * update @visulima/packem to 2.0.0-alpha.30 across multiple packages for improved compatibility ([27b346e](https://github.com/visulima/visulima/commit/27b346eaa1c0fb0e420d9a9824482028307f4249))
70
+ * update @visulima/packem to 2.0.0-alpha.32 across multiple packages for improved compatibility ([27b346e](https://github.com/visulima/visulima/commit/27b346eaa1c0fb0e420d9a9824482028307f4249))
42
71
  * update package dependencies and enhance ESLint configuration for improved performance ([1a20ead](https://github.com/visulima/visulima/commit/1a20eadaf0a563ed5e6f621eb7649b5629f44164))
43
72
 
44
73
  ### Miscellaneous Chores
@@ -1,4 +1,4 @@
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>
1
+ var l=Object.defineProperty;var d=(e,r)=>l(e,"name",{value:r,configurable:!0});import{getReasonPhrase as c}from"http-status-codes";import{a as m}from"../packem_shared/add-status-code-to-response-BE6paXjR.js";var g=Object.defineProperty,s=d((e,r)=>g(e,"name",{value:r,configurable:!0}),"n");const x=s((e={})=>async(r,n,t)=>{m(t,r),t.setHeader("content-type","text/html; charset=utf-8");const o=c(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:n,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 s=Object.defineProperty;var n=(e,r)=>s(e,"name",{value:r,configurable:!0});i
32
32
  </div>
33
33
  </div>
34
34
  </body>
35
- </html>`)},"htmlErrorHandler");export{u as htmlErrorHandler};
35
+ </html>`)},"htmlErrorHandler");export{x as htmlErrorHandler};
@@ -1 +1 @@
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
+ var p=Object.defineProperty;var a=(e,r)=>p(e,"name",{value:r,configurable:!0});import{getReasonPhrase as u}from"http-status-codes";import{a as f}from"../packem_shared/add-status-code-to-response-BE6paXjR.js";import{s as n}from"../packem_shared/send-json-Cedv8-Bt.js";import{a as i}from"../packem_shared/set-error-headers-DT9rVGtW.js";var g=Object.defineProperty,l=a((e,r)=>g(e,"name",{value:r,configurable:!0}),"n");const h=l((e={})=>async(r,m,s)=>{f(s,r),i(s,r);const{statusCode:o}=s,t=u(o)||"An error occurred";if(e.formatter){const c=await e.formatter({error:r,reasonPhrase:t,request:m,response:s,statusCode:o});n(s,c);return}const{expose:d}=r;n(s,{message:r.message||t,error:t,statusCode:o,...d?{stack:r.stack}:{}})},"jsonErrorHandler");export{h as jsonErrorHandler};
@@ -1 +1 @@
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};
1
+ var u=Object.defineProperty;var i=(e,s)=>u(e,"name",{value:s,configurable:!0});import{isHttpError as f}from"http-errors";import{getReasonPhrase as n}from"http-status-codes";import a from"ts-japi";import{a as l}from"../packem_shared/add-status-code-to-response-BE6paXjR.js";import{s as t}from"../packem_shared/send-json-Cedv8-Bt.js";import{a as c}from"../packem_shared/set-error-headers-DT9rVGtW.js";var g=Object.defineProperty,C=i((e,s)=>g(e,"name",{value:s,configurable:!0}),"n");const d="An error occurred",H=C((e,s,r)=>{if(l(r,e),c(r,e),e instanceof a.JapiError||a.JapiError.isLikeJapiError(e)){const o=new a.ErrorSerializer;t(r,o.serialize(e))}else if(f(e)){const o="statusCode"in e&&typeof e.statusCode=="number"?e.statusCode:"status"in e&&typeof e.status=="number"?e.status:r.statusCode,m="title"in e&&typeof e.title=="string"?e.title:void 0,p="message"in e&&typeof e.message=="string"?e.message:"";t(r,{errors:[{code:o??r.statusCode,title:m||n(o)||d,detail:p}]})}else{const{message:o}=e;t(r,{errors:[{code:"500",title:n(r.statusCode)||d,detail:o}]})}},"jsonapiErrorHandler");export{H as default};
@@ -1 +1 @@
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
+ var i=Object.defineProperty;var n=(e,a)=>i(e,"name",{value:a,configurable:!0});import{getReasonPhrase as f}from"http-status-codes";import{a as u}from"../packem_shared/add-status-code-to-response-BE6paXjR.js";import{a as h}from"../packem_shared/set-error-headers-DT9rVGtW.js";var g=Object.defineProperty,b=n((e,a)=>g(e,"name",{value:a,configurable:!0}),"c");const k="callback",C=b((e={})=>async(a,c,t)=>{u(t,a),h(t,a);const{statusCode:r}=t,s=f(r)||"An error occurred",l=new URL(c.url??"http://localhost","http://localhost"),p=e.callbackParamName||k,m=l.searchParams.get(p)||"callback";let o;if(e.formatter)o=await e.formatter({error:a,reasonPhrase:s,request:c,response:t,statusCode:r});else{const{expose:d}=a;o={message:a.message||s,error:s,statusCode:r,...d?{stack:a.stack}:{}}}t.setHeader("content-type","application/javascript; charset=utf-8"),t.end(`${m}(${JSON.stringify(o)});`)},"jsonpErrorHandler");export{C as jsonpErrorHandler};
@@ -1 +1 @@
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};
1
+ var c=Object.defineProperty;var i=(e,o)=>c(e,"name",{value:o,configurable:!0});import{isHttpError as y}from"http-errors";import{getReasonPhrase as p}from"http-status-codes";import{a as b}from"../packem_shared/add-status-code-to-response-BE6paXjR.js";import{s as n}from"../packem_shared/send-json-Cedv8-Bt.js";import{a as C}from"../packem_shared/set-error-headers-DT9rVGtW.js";var v=Object.defineProperty,g=i((e,o)=>v(e,"name",{value:o,configurable:!0}),"i");const d="about:blank",u="An error occurred",R=g((e,o,t)=>{const{message:a,stack:r}=e;if(y(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,m="title"in e&&typeof e.title=="string"?e.title:void 0,f="type"in e&&typeof e.type=="string"?e.type:void 0;t.statusCode=s,C(t,e),n(t,{type:f||d,title:m||p(s)||u,status:s,detail:a,...l?{trace:r}:{}},"application/problem+json")}else b(t,e),n(t,{type:d,title:p(t.statusCode)||u,status:t.statusCode,detail:a,...e.expose?{trace:r}:{}},"application/problem+json")},"problemErrorHandler");export{R as default};
@@ -1,3 +1,3 @@
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}
1
+ var f=Object.defineProperty;var d=(r,e)=>f(r,"name",{value:e,configurable:!0});import{getReasonPhrase as i}from"http-status-codes";import{a as u}from"../packem_shared/add-status-code-to-response-BE6paXjR.js";import{a as l}from"../packem_shared/set-error-headers-DT9rVGtW.js";var x=Object.defineProperty,v=d((r,e)=>x(r,"name",{value:e,configurable:!0}),"m");const E=v((r={})=>async(e,c,t)=>{u(t,e),l(t,e);const{statusCode:o}=t,a=i(o)||"Error";if(t.setHeader("content-type","text/plain; charset=utf-8"),r.formatter){const p=await r.formatter({error:e,reasonPhrase:a,request:c,response:t,statusCode:o});t.end(p);return}const s=e.message||a,{expose:m}=e,n=m?e.stack:void 0;t.end(n?`${s}
2
2
 
3
- ${a}`:n)},"textErrorHandler");export{P as textErrorHandler};
3
+ ${n}`:s)},"textErrorHandler");export{E as textErrorHandler};
@@ -1 +1 @@
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};
1
+ var c=Object.defineProperty;var l=(t,e)=>c(t,"name",{value:e,configurable:!0});import{getReasonPhrase as p}from"http-status-codes";import{toXML as u}from"jstoxml";import{a as d}from"../packem_shared/add-status-code-to-response-BE6paXjR.js";import{a as X}from"../packem_shared/set-error-headers-DT9rVGtW.js";var f=Object.defineProperty,b=l((t,e)=>f(t,"name",{value:e,configurable:!0}),"l");const h=b((t={})=>async(e,n,o)=>{d(o,e),X(o,e);const{statusCode:r}=o,a=p(r)||"An error occurred";let s;if(t.formatter)s=await t.formatter({error:e,reasonPhrase:a,request:n,response:o,statusCode:r});else{const{expose:i}=e;s={error:{statusCode:r,name:a,message:e.message||a,...i?{stack:e.stack}:{}}}}const m=u(s,{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(m)},"xmlErrorHandler");export{h as xmlErrorHandler};
@@ -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-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}
1
+ var o=Object.defineProperty;var a=(r,e)=>o(r,"name",{value:e,configurable:!0});import{buildOutput as i}from"../packem_shared/cliHandler-nqs3YWf5.js";import{terminalOutput as f}from"../packem_shared/cliHandler-nqs3YWf5.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 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};
@@ -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 v}from"@visulima/error/stacktrace";import{boxen as x}from"@visulima/boxen";import{renderError as w}from"@visulima/error/error";import{ruleBasedFinder as F,errorHintFinder as B}from"@visulima/error/solution";const b=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 b(e)},"__cjs_getBuiltinModule"),{readFile:_}=p("node:fs/promises"),{fileURLToPath:O}=p("node:url");var T=Object.defineProperty,A=c((e,r)=>T(e,"name",{value:r,configurable:!0}),"t");const q=["cjs","mjs"],P=["mdoc"],S=A(e=>{const r=(e.split("?")[0]??e).split(".").pop()?.toLowerCase();if(!r||q.includes(r))return"javascript";if(P.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,m=c((e,r)=>k(e,"name",{value:r,configurable:!0}),"o");const l=new Map,L=m(async e=>{if(/^(?:http|https|file|data):/.test(e)){if(l.has(e))return l.get(e);if(e.startsWith("file:"))try{const r=O(e),t=await _(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");m(()=>{l.clear()},"clearFileSourceCache");var C=Object.defineProperty,f=c((e,r)=>C(e,"name",{value:r,configurable:!0}),"d");const M=f(e=>e.replace(/^\s*#+\s*/,"").trim(),"sanitizeTitle"),R=f(async(e,r,t=!1)=>{const a=[...r,F,B],s=v(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:S(s.file??""),line:s.line??0,snippet:s.file?await L(s.file):""});if(n)return n}},"runSolutionFinders"),$=f(async(e,r)=>{const{solutionFinders:t=[],solutionTitle:a,color:s,debug:o=!1,...i}=r,n=w(e,{...i,...s?.codeFrame}),d=await R(e,t,o);if(!d)return{errorAnsi:n,solutionBox:void 0};const g=M(d.header??a??"A possible solution to this error"),h=x(d.body,{borderStyle:"round",padding:{top:1,right:2,bottom:1,left:2},margin:{top:0,right:0,bottom:0,left:0},headerText:`💡 ${g}`,headerAlignment:"left",textAlignment:"left",...s?.boxen});return{errorAnsi:n,solutionBox:h}},"buildOutput"),D=f(async(e,r={})=>{const{logger:t=console,...a}=r,{errorAnsi:s,solutionBox:o}=await $(e,a);t.error(s),o&&(t.log(""),t.log(o))},"terminalOutput");export{$ 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.9",
3
+ "version": "1.0.11",
4
4
  "description": "Error handlers for use in development and production environments.",
5
5
  "keywords": [
6
6
  "visulima",
@@ -134,12 +134,12 @@
134
134
  ],
135
135
  "dependencies": {
136
136
  "@tinyhttp/accepts": "^2.2.4",
137
- "@visulima/boxen": "2.0.6",
138
- "@visulima/error": "5.0.2",
137
+ "@visulima/boxen": "2.0.8",
138
+ "@visulima/error": "5.0.4",
139
139
  "http-errors": "^2.0.0",
140
140
  "http-status-codes": "^2.3.0",
141
141
  "jstoxml": "^7.0.1",
142
- "ts-japi": "^1.12.0"
142
+ "ts-japi": "^1.12.1"
143
143
  },
144
144
  "engines": {
145
145
  "node": ">=20.19 <=25.x"
@@ -1 +0,0 @@
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};
@@ -1 +0,0 @@
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};