@visulima/error-handler 2.0.0-alpha.9 → 2.0.1

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.
Files changed (54) hide show
  1. package/CHANGELOG.md +453 -0
  2. package/LICENSE.md +698 -136
  3. package/README.md +38 -23
  4. package/dist/error-handler/fetch-utils.d.ts +3 -0
  5. package/dist/error-handler/fetch-utils.js +1 -0
  6. package/dist/error-handler/html-error-handler.d.ts +42 -12
  7. package/dist/error-handler/html-error-handler.js +50 -10
  8. package/dist/error-handler/json-error-handler.d.ts +13 -12
  9. package/dist/error-handler/json-error-handler.js +1 -1
  10. package/dist/error-handler/jsonapi-error-handler.d.ts +3 -2
  11. package/dist/error-handler/jsonapi-error-handler.js +1 -1
  12. package/dist/error-handler/jsonp-error-handler.d.ts +14 -13
  13. package/dist/error-handler/jsonp-error-handler.js +1 -1
  14. package/dist/error-handler/problem-error-handler.d.ts +3 -2
  15. package/dist/error-handler/problem-error-handler.js +1 -1
  16. package/dist/error-handler/text-error-handler.d.ts +12 -11
  17. package/dist/error-handler/text-error-handler.js +2 -2
  18. package/dist/error-handler/xml-error-handler.d.ts +24 -23
  19. package/dist/error-handler/xml-error-handler.js +1 -1
  20. package/dist/handler/cli-handler.d.ts +27 -4
  21. package/dist/handler/cli-handler.js +2 -2
  22. package/dist/handler/http/create-error-middleware.d.ts +32 -0
  23. package/dist/handler/http/create-error-middleware.js +1 -0
  24. package/dist/handler/http/fetch-handler.d.ts +9 -7
  25. package/dist/handler/http/fetch-handler.js +1 -1
  26. package/dist/handler/http/node-handler.d.ts +9 -8
  27. package/dist/handler/http/node-handler.js +1 -1
  28. package/dist/index.d.ts +20 -14
  29. package/dist/index.js +1 -1
  30. package/dist/packem_shared/cliHandler-SiB_2eYh.js +35 -0
  31. package/dist/packem_shared/createNegotiatedErrorHandler-B5QZvIsI.js +1 -0
  32. package/dist/packem_shared/extractStatusCode-D0UOgNnr.js +1 -0
  33. package/dist/packem_shared/fetchCreateNegotiatedErrorHandler-BZIDeXwJ.js +1 -0
  34. package/dist/packem_shared/fetchHtmlErrorHandler-C_tTx5yo.js +1 -0
  35. package/dist/packem_shared/get-file-source-DizRP9BY.js +1 -0
  36. package/dist/packem_shared/mock-server-response-B0aq8b_2.js +1 -0
  37. package/dist/packem_shared/safe-reason-phrase-DgnEIVUq.js +1 -0
  38. package/dist/packem_shared/send-json-fz8r6NBW.js +1 -0
  39. package/dist/packem_shared/sendFetchJson-BNmfrMYp.js +1 -0
  40. package/dist/packem_shared/set-error-headers-g9hns3cZ.js +1 -0
  41. package/dist/packem_shared/types.d-Btzbxdod.d.ts +13 -0
  42. package/dist/packem_shared/with-expose-B0GLDHH8.js +1 -0
  43. package/package.json +49 -46
  44. package/dist/error-handler/create-negotiated-error-handler.d.ts +0 -4
  45. package/dist/error-handler/fetch-create-negotiated-error-handler.d.ts +0 -3
  46. package/dist/error-handler/fetch-html-error-handler.d.ts +0 -3
  47. package/dist/error-handler/utils/add-status-code-to-response.d.ts +0 -2
  48. package/dist/error-handler/utils/send-json.d.ts +0 -8
  49. package/dist/error-handler/utils/set-error-headers.d.ts +0 -3
  50. package/dist/packem_shared/add-status-code-to-response-BE6paXjR.js +0 -1
  51. package/dist/packem_shared/cliHandler-CeQ8tsGj.js +0 -1
  52. package/dist/packem_shared/createNegotiatedErrorHandler-BLks0_Ak.js +0 -1
  53. package/dist/packem_shared/send-json-Cedv8-Bt.js +0 -1
  54. package/dist/packem_shared/set-error-headers-DT9rVGtW.js +0 -1
@@ -0,0 +1 @@
1
+ import{Accepts as d}from"@tinyhttp/accepts";import{jsonErrorHandler as b}from"../error-handler/json-error-handler.js";import{jsonpErrorHandler as k}from"../error-handler/jsonp-error-handler.js";import n from"../error-handler/problem-error-handler.js";import{textErrorHandler as y}from"../error-handler/text-error-handler.js";import{x as h}from"./with-expose-B0GLDHH8.js";const v=k(),w=b(),E=y();let s,c;const H=async()=>(s??=import("../error-handler/jsonapi-error-handler.js").then(t=>t.default),s),u=async()=>(c??=import("../error-handler/xml-error-handler.js").then(t=>t.xmlErrorHandler()),c),B=(t,l,r)=>async(i,e,m)=>{const p=new d(e).type(["text/html","application/vnd.api+json","application/problem+json","application/json","text/plain","application/javascript","text/javascript","application/xml","text/xml"]);let a=r??n;if(p==="text/html"&&r)a=r;else switch(p){case"application/javascript":case"text/javascript":{a=v;break}case"application/json":{a=w;break}case"application/problem+json":{a=n;break}case"application/vnd.api+json":{a=await H();break}case"application/xml":case"text/xml":{a=await u();break}case"text/plain":{a=E;break}}for(const{handler:x,regex:f}of t){const o=e.headers.accept??"",j=Array.isArray(o)?o.join(","):o;if(f.test(j)){a=x;break}}await h(i,l,()=>a(i,e,m))};export{B as default};
@@ -0,0 +1 @@
1
+ import{StatusCodes as s}from"http-status-codes";const u=(e,r=s.INTERNAL_SERVER_ERROR)=>{if(!e)return r;const t=Number(e.statusCode??e.status);return Number.isInteger(t)&&t>=400&&t<=599?t:r};export{u as default};
@@ -0,0 +1 @@
1
+ import{jsonErrorHandler as v}from"../error-handler/json-error-handler.js";import{jsonpErrorHandler as w}from"../error-handler/jsonp-error-handler.js";import k from"../error-handler/problem-error-handler.js";import{textErrorHandler as E}from"../error-handler/text-error-handler.js";import{s as N}from"./mock-server-response-B0aq8b_2.js";import{x as g}from"./with-expose-B0GLDHH8.js";const q=[{chosen:"text/html",types:["text/html"]},{chosen:"application/vnd.api+json",types:["application/vnd.api+json"]},{chosen:"application/problem+json",types:["application/problem+json"]},{chosen:"application/json",types:["application/json"]},{chosen:"text/plain",types:["text/plain"]},{chosen:"application/javascript",types:["application/javascript","text/javascript"]},{chosen:"application/xml",types:["application/xml","text/xml"]}],H=n=>{if(!n)return"text/html";const p=[];for(const o of n.split(",")){const[a,...t]=o.trim().split(";"),s=(a??"").trim().toLowerCase();if(s==="")continue;let r=1;for(const d of t){const[b,j]=d.trim().split("=");if((b??"").trim().toLowerCase()==="q"){const h=Number.parseFloat((j??"").trim());Number.isNaN(h)||(r=h)}}if(r<=0)continue;const[l="",f=""]=s.split("/");p.push({quality:r,subtype:f,type:l})}if(p.length===0)return"text/html";const i=o=>{const[a,t]=o.split("/");let s=-1;for(const{quality:r,subtype:l,type:f}of p)(f==="*"&&l==="*"||f===a&&l==="*"||f===a&&l===t)&&r>s&&(s=r);return s};let c="text/html",e=-1;for(const{chosen:o,types:a}of q){let t=-1;for(const s of a){const r=i(s);r>t&&(t=r)}t>e&&(e=t,c=o)}return e<0?"text/html":c},m=n=>async(p,i)=>{const c={headers:Object.fromEntries(i.headers.entries()),method:i.method,url:i.url},e=new N;await n(p,c,e);const o={};for(const[a,t]of Object.entries(e.headers))o[a]=Array.isArray(t)?t.join(", "):String(t);return new Response(e.body,{headers:o,status:e.statusCode})},A=m(w()),C=m(v()),x=m(k),F=m(E());let y,u;const L=async()=>(y??=import("../error-handler/jsonapi-error-handler.js").then(n=>m(n.default)),y),O=async()=>(u??=import("../error-handler/xml-error-handler.js").then(n=>m(n.xmlErrorHandler())),u),B=(n,p,i)=>async(c,e)=>{const o=e.headers.get("accept"),a=H(o);let t=i??x;if(a==="text/html"&&i)t=i;else switch(a){case"application/javascript":{t=A;break}case"application/json":{t=C;break}case"application/problem+json":{t=x;break}case"application/vnd.api+json":{t=await L();break}case"application/xml":{t=await O();break}case"text/plain":{t=F;break}}for(const{handler:s,regex:r}of n){const l=o??"";if(r.test(l)){t=s;break}}return g(c,p,()=>t(c,e))};export{B as default};
@@ -0,0 +1 @@
1
+ import{htmlErrorHandler as m}from"../error-handler/html-error-handler.js";import{s as h}from"./mock-server-response-B0aq8b_2.js";const l=(s={})=>{const a=m(s);return async(c,e)=>{const d={headers:Object.fromEntries(e.headers.entries()),method:e.method,url:e.url},t=new h;await a(c,d,t);const n={"content-type":t.getHeader("content-type")??"text/html; charset=utf-8"};for(const[o,r]of Object.entries(t.headers))o!=="content-type"&&(n[o]=Array.isArray(r)?r.join(", "):String(r));return new Response(t.body,{headers:n,status:t.statusCode})}};export{l as default,l as fetchHtmlErrorHandler};
@@ -0,0 +1 @@
1
+ import{createRequire as f}from"node:module";let p;const d=e=>(p??=f(import.meta.url))(e),c=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,u=e=>{if(typeof c<"u"&&c.versions&&c.versions.node){const[t,n]=c.versions.node.split(".").map(Number);if(t>22||t===22&&n>=3||t===20&&n>=16)return c.getBuiltinModule(e)}return d(e)},{readFile:l}=u("node:fs/promises"),{isAbsolute:h}=u("node:path"),{fileURLToPath:m}=u("node:url"),y=new Set(["cjs","mjs"]),j=new Set(["cts","mts"]),x=new Set(["mdoc"]),g=e=>{const t=(e.split("?")[0]??e).split(".").pop()?.toLowerCase();if(!t)return"text";if(y.has(t))return"javascript";if(j.has(t))return"typescript";if(x.has(t))return"markdown";switch(t){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";case"yaml":case"yml":return"yaml";case"toml":return"toml";case"py":return"python";case"go":return"go";case"rs":return"rust";case"rb":return"ruby";case"php":return"php";case"graphql":case"gql":return"graphql";case"dockerfile":return"dockerfile";case"sh":case"bash":return"bash";case"txt":return"text";default:return"text"}},_=50,s=new Map,v=e=>{const t=s.get(e);if(t!==void 0)return s.delete(e),s.set(e,t),t},a=(e,t)=>{if(s.has(e))s.delete(e);else if(s.size>=_){const n=s.keys().next().value;n!==void 0&&s.delete(n)}s.set(e,t)},b=async(e,t={})=>{const{allowRemote:n=!1}=t,o=v(e);if(o!==void 0)return o;if(e.startsWith("file:"))try{const r=await l(m(e),"utf8");return a(e,r),r}catch{return}if(/^(?:https?|data):/.test(e)){if(!n)return;try{const r=await fetch(e);if(!r.ok)return;const i=await r.text();return a(e,i),i}catch{return}}if(h(e))try{const r=await l(e,"utf8");return a(e,r),r}catch{return}};export{g as a,b as h};
@@ -0,0 +1 @@
1
+ class a{statusCode=200;statusMessage="";headers={};headersSent=!1;writable=!0;finished=!1;writableEnded=!1;writableFinished=!1;writableHighWaterMark=16384;writableLength=0;destroyed=!1;writableCorked=0;readable=!1;readableHighWaterMark=16384;readableLength=0;errored=void 0;closed=!1;readableAborted=!1;readableDidRead=!1;readableEncoding=void 0;readableEnded=!1;readableFlowing=void 0;body="";sendDate=!0;strictContentLength=!1;chunkedEncoding=!1;shouldKeepAlive=!0;useChunkedEncodingByDefault=!0;connection=void 0;socket=void 0;setHeader(e,t){return this.headers[e.toLowerCase()]=t,this}getHeader(e){return this.headers[e.toLowerCase()]}getHeaders(){return{...this.headers}}getHeaderNames(){return Object.keys(this.headers)}hasHeader(e){return e.toLowerCase()in this.headers}removeHeader(e){return delete this.headers[e.toLowerCase()],this}writeHead(e,t,r){this.statusCode=e;let s=r;return typeof t=="string"&&(this.statusMessage=t),typeof t=="object"&&(s=t),s&&Object.assign(this.headers,s),this}write(e){return this.body+=e.toString(),!0}end(e,t,r){return e&&(this.body+=e.toString()),this.finished=!0,this}flushHeaders(){this.headersSent=!0}addListener=()=>this;on=()=>this;once=()=>this;removeListener=()=>this;off=()=>this;removeAllListeners=()=>this;setMaxListeners=()=>this;getMaxListeners=()=>10;listeners=()=>[];rawListeners=()=>[];emit=()=>!1;eventNames=()=>[];listenerCount=()=>0;prependListener=()=>this;prependOnceListener=()=>this;cork=()=>{};uncork=()=>{};destroy=()=>this;read=()=>{};setEncoding=()=>this;pause=()=>this;resume=()=>this;isPaused=()=>!1;destroySoon=()=>this;pipe=()=>({});unpipe=()=>this;unshift=()=>{};wrap=()=>this;setTimeout=()=>this;assignSocket=()=>{};detachSocket=()=>{};writeContinue=()=>{};writeEarlyHints=()=>{}}export{a as s};
@@ -0,0 +1 @@
1
+ import{StatusCodes as o,getReasonPhrase as u}from"http-status-codes";const n=(t,s)=>{const r=s,e=Number(r.statusCode??r.status);if(Number.isInteger(e)&&e>=400&&e<=599){t.statusCode=e;return}t.statusCode<400&&(t.statusCode=o.INTERNAL_SERVER_ERROR)},c=(t,s="An error occurred")=>{try{return u(t)}catch{return s}};export{n as a,c as n};
@@ -0,0 +1 @@
1
+ const o=(t,e,n="application/json; charset=utf-8")=>{t.setHeader("content-type",n),t.end(JSON.stringify(e))};export{o};
@@ -0,0 +1 @@
1
+ const a=(t,s,e="application/json; charset=utf-8")=>Response.json(t,{headers:{"content-type":e},status:s});export{a as default};
@@ -0,0 +1 @@
1
+ const t=(r,s)=>{const e=s.headers??{};Object.keys(e).forEach(o=>{r.setHeader(o,e[o])})};export{t as o};
@@ -0,0 +1,13 @@
1
+ import { IncomingMessage, ServerResponse } from 'node:http';
2
+ type ErrorHandler = (error: Error, request: IncomingMessage, response: ServerResponse) => Promise<void> | void;
3
+ type FetchErrorHandler = (error: unknown, request: Request) => Promise<Response>;
4
+ type ErrorHandlers = {
5
+ handler: ErrorHandler;
6
+ regex: RegExp;
7
+ }[];
8
+ type FetchErrorHandlers = {
9
+ handler: FetchErrorHandler;
10
+ regex: RegExp;
11
+ }[];
12
+ type ApiFormat = "jsonapi" | "problem" | "html";
13
+ export { ApiFormat as A, ErrorHandler as E, FetchErrorHandlers as F, ErrorHandlers as a, FetchErrorHandler as b };
@@ -0,0 +1 @@
1
+ const x=async(e,s,o)=>{const p=Object.hasOwn(e,"expose"),t=e.expose;s?"expose"in e||(e.expose=!0):e.expose=!1;try{return await o()}finally{p?e.expose=t:delete e.expose}};export{x};
package/package.json CHANGED
@@ -1,42 +1,45 @@
1
1
  {
2
2
  "name": "@visulima/error-handler",
3
- "version": "2.0.0-alpha.9",
3
+ "version": "2.0.1",
4
4
  "description": "Error handlers for use in development and production environments.",
5
5
  "keywords": [
6
- "visulima",
7
- "error",
8
- "exception",
9
- "error-handlers",
10
- "diagnostics",
11
- "debugging",
12
- "stacktrace",
6
+ "anolilab",
7
+ "cli",
13
8
  "code-frame",
14
9
  "codeframe",
15
- "source-code-preview",
10
+ "connect",
16
11
  "content-negotiation",
17
- "problem-json",
18
- "rfc7807",
19
- "jsonapi",
12
+ "debugging",
13
+ "devtools",
14
+ "diagnostics",
15
+ "error",
16
+ "error-handler",
17
+ "error-handlers",
18
+ "error-reporting",
19
+ "exception",
20
+ "express",
21
+ "html-error",
22
+ "http-errors",
20
23
  "json-api",
24
+ "jsonapi",
21
25
  "jsonp",
22
- "xml",
23
- "html-error",
24
- "cli",
25
- "node",
26
- "express",
27
- "connect",
28
26
  "middleware",
29
- "http-errors",
30
- "devtools",
31
- "error-reporting",
27
+ "node",
28
+ "problem-json",
29
+ "rfc7807",
30
+ "source-code-preview",
31
+ "stacktrace",
32
+ "visulima",
32
33
  "whoops",
33
- "youch",
34
- "anolilab",
35
- "error-handler"
34
+ "xml",
35
+ "youch"
36
36
  ],
37
37
  "homepage": "https://visulima.com/packages/error-handler",
38
- "bugs": {
39
- "url": "https://github.com/visulima/visulima/issues"
38
+ "bugs": "https://github.com/visulima/visulima/issues",
39
+ "license": "MIT",
40
+ "author": {
41
+ "name": "Daniel Bannert",
42
+ "email": "d.bannert@anolilab.de"
40
43
  },
41
44
  "repository": {
42
45
  "type": "git",
@@ -53,13 +56,13 @@
53
56
  "url": "https://anolilab.com/support"
54
57
  }
55
58
  ],
56
- "license": "MIT",
57
- "author": {
58
- "name": "Daniel Bannert",
59
- "email": "d.bannert@anolilab.de"
60
- },
61
- "sideEffects": false,
59
+ "files": [
60
+ "dist",
61
+ "README.md",
62
+ "CHANGELOG.md"
63
+ ],
62
64
  "type": "module",
65
+ "sideEffects": false,
63
66
  "exports": {
64
67
  ".": {
65
68
  "types": "./dist/index.d.ts",
@@ -73,6 +76,10 @@
73
76
  "types": "./dist/handler/http/node-handler.d.ts",
74
77
  "default": "./dist/handler/http/node-handler.js"
75
78
  },
79
+ "./handler/middleware": {
80
+ "types": "./dist/handler/http/create-error-middleware.d.ts",
81
+ "default": "./dist/handler/http/create-error-middleware.js"
82
+ },
76
83
  "./handler/http/hono": {
77
84
  "types": "./dist/handler/http/fetch-handler.d.ts",
78
85
  "default": "./dist/handler/http/fetch-handler.js"
@@ -125,29 +132,25 @@
125
132
  "types": "./dist/error-handler/xml-error-handler.d.ts",
126
133
  "default": "./dist/error-handler/xml-error-handler.js"
127
134
  },
135
+ "./error-handler/fetch-utils": {
136
+ "types": "./dist/error-handler/fetch-utils.d.ts",
137
+ "default": "./dist/error-handler/fetch-utils.js"
138
+ },
128
139
  "./package.json": "./package.json"
129
140
  },
130
- "files": [
131
- "dist",
132
- "README.md",
133
- "CHANGELOG.md"
134
- ],
141
+ "publishConfig": {
142
+ "access": "public",
143
+ "provenance": true
144
+ },
135
145
  "dependencies": {
136
146
  "@tinyhttp/accepts": "^2.3.0",
137
- "@visulima/boxen": "3.0.0-alpha.7",
138
- "@visulima/error": "6.0.0-alpha.6",
147
+ "@visulima/error": "6.1.0",
139
148
  "http-errors": "^2.0.1",
140
149
  "http-status-codes": "^2.3.0",
141
150
  "jstoxml": "^7.1.0",
142
151
  "ts-japi": "^1.12.3"
143
152
  },
144
- "peerDependencies": {},
145
- "optionalDependencies": {},
146
153
  "engines": {
147
- "node": ">=22.13 <=25.x"
148
- },
149
- "publishConfig": {
150
- "access": "public",
151
- "provenance": true
154
+ "node": "^22.14.0 || >=24.10.0"
152
155
  }
153
156
  }
@@ -1,4 +0,0 @@
1
- import type { IncomingMessage, ServerResponse } from "node:http";
2
- import type { ErrorHandler, ErrorHandlers } from "./types.d.d.ts";
3
- declare const createNegotiatedErrorHandler: <Request extends IncomingMessage, Response extends ServerResponse>(errorHandlers: ErrorHandlers, showTrace: boolean, defaultHtmlHandler?: ErrorHandler) => (error: Error, request: Request, response: Response) => Promise<void>;
4
- export default createNegotiatedErrorHandler;
@@ -1,3 +0,0 @@
1
- import type { FetchErrorHandlers } from "./types.d.d.ts";
2
- declare const createFetchNegotiatedErrorHandler: (errorHandlers: FetchErrorHandlers, showTrace: boolean, defaultHtmlHandler?: (error: Error, request: Request) => Promise<Response>) => (error: Error, request: Request) => Promise<Response>;
3
- export default createFetchNegotiatedErrorHandler;
@@ -1,3 +0,0 @@
1
- import type { HtmlErrorHandlerOptions } from "./html-error-handler.d.ts";
2
- export declare const fetchHtmlErrorHandler: (options?: HtmlErrorHandlerOptions) => (error: Error, request: Request) => Promise<Response>;
3
- export default fetchHtmlErrorHandler;
@@ -1,2 +0,0 @@
1
- import type { ServerResponse } from "node:http";
2
- export declare const addStatusCodeToResponse: (response: ServerResponse, error: unknown) => void;
@@ -1,8 +0,0 @@
1
- import type { ServerResponse } from "node:http";
2
- /**
3
- * Send `JSON` object
4
- * @param response response object
5
- * @param jsonBody of data
6
- * @param contentType optional content-type header value
7
- */
8
- export declare const sendJson: (response: ServerResponse, jsonBody: unknown, contentType?: string) => void;
@@ -1,3 +0,0 @@
1
- import type { ServerResponse } from "node:http";
2
- declare const setErrorHeaders: (response: ServerResponse, error: unknown) => void;
3
- export default setErrorHeaders;
@@ -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 h=Object.defineProperty;var c=(e,r)=>h(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}),"r");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":case"cjs":case"mjs":return"javascript";case"json":return"json";case"json5":return"json5";case"jsonc":return"jsonc";case"jsx":return"jsx";case"sql":return"sql";case"ts":case"cts":case"mts":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";case"txt":return"text";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"),j=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:j}},"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};
@@ -1 +0,0 @@
1
- var j=Object.defineProperty;var c=(r,e)=>j(r,"name",{value:e,configurable:!0});import{Accepts as d}from"@tinyhttp/accepts";import{jsonErrorHandler as b}from"../error-handler/json-error-handler.js";import v from"../error-handler/jsonapi-error-handler.js";import{jsonpErrorHandler as k}from"../error-handler/jsonp-error-handler.js";import l from"../error-handler/problem-error-handler.js";import{textErrorHandler as E}from"../error-handler/text-error-handler.js";import{xmlErrorHandler as h}from"../error-handler/xml-error-handler.js";var y=Object.defineProperty,H=c((r,e)=>y(r,"name",{value:e,configurable:!0}),"i");const q=H((r,e,t)=>async(p,o,s)=>{const n=new d(o).type(["text/html","application/vnd.api+json","application/problem+json","application/json","text/plain","application/javascript","text/javascript","application/xml","text/xml"]);let a=t||l;if(n==="text/html"&&t)a=t;else switch(n){case"application/javascript":case"text/javascript":{a=k();break}case"application/json":{a=b();break}case"application/problem+json":{a=l;break}case"application/vnd.api+json":{a=v;break}case"application/xml":case"text/xml":{a=h();break}case"text/plain":{a=E();break}}for(const{handler:m,regex:x}of r){const i=o.headers.accept??"",f=Array.isArray(i)?i.join(","):i;if(x.test(f)){a=m;break}}p.expose=e,await a(p,o,s)},"createNegotiatedErrorHandler");export{q as default};
@@ -1 +0,0 @@
1
- var s=Object.defineProperty;var t=(e,n)=>s(e,"name",{value:n,configurable:!0});var a=Object.defineProperty,o=t((e,n)=>a(e,"name",{value:n,configurable:!0}),"t");const i=o((e,n,r="application/json; charset=utf-8")=>{e.setHeader("content-type",r),e.end(JSON.stringify(n))},"sendJson");export{i as s};
@@ -1 +0,0 @@
1
- var c=Object.defineProperty;var o=(e,r)=>c(e,"name",{value:r,configurable:!0});var n=Object.defineProperty,s=o((e,r)=>n(e,"name",{value:r,configurable:!0}),"o");const b=s((e,r)=>{const a=r.headers??{};Object.keys(a).forEach(t=>{e.setHeader(t,a[t])})},"setErrorHeaders");export{b as a};