@visulima/error-handler 1.0.2 → 1.0.4

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 (36) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/LICENSE.md +13 -5
  3. package/README.md +24 -18
  4. package/dist/error-handler/html-error-handler.d.ts +4 -4
  5. package/dist/error-handler/html-error-handler.js +7 -35
  6. package/dist/error-handler/json-error-handler.d.ts +3 -3
  7. package/dist/error-handler/json-error-handler.js +1 -31
  8. package/dist/error-handler/jsonapi-error-handler.d.ts +1 -1
  9. package/dist/error-handler/jsonapi-error-handler.js +1 -46
  10. package/dist/error-handler/jsonp-error-handler.d.ts +3 -3
  11. package/dist/error-handler/jsonp-error-handler.js +1 -36
  12. package/dist/error-handler/problem-error-handler.d.ts +1 -1
  13. package/dist/error-handler/problem-error-handler.js +1 -53
  14. package/dist/error-handler/text-error-handler.d.ts +3 -3
  15. package/dist/error-handler/text-error-handler.js +2 -27
  16. package/dist/error-handler/xml-error-handler.d.ts +8 -8
  17. package/dist/error-handler/xml-error-handler.js +1 -45
  18. package/dist/handler/cli-handler.d.ts +2 -2
  19. package/dist/handler/cli-handler.js +2 -172
  20. package/dist/handler/http/fetch-handler.d.ts +2 -2
  21. package/dist/handler/http/fetch-handler.js +1 -267
  22. package/dist/handler/http/node-handler.d.ts +4 -4
  23. package/dist/handler/http/node-handler.js +1 -17
  24. package/dist/index.d.ts +6 -6
  25. package/dist/index.js +1 -8
  26. package/dist/packem_shared/add-status-code-to-response-BE6paXjR.js +1 -0
  27. package/dist/packem_shared/cliHandler-B3-YFZRV.js +1 -0
  28. package/dist/packem_shared/createNegotiatedErrorHandler-BLks0_Ak.js +1 -0
  29. package/dist/packem_shared/send-json-Cedv8-Bt.js +1 -0
  30. package/dist/packem_shared/set-error-headers-DT9rVGtW.js +1 -0
  31. package/dist/packem_shared/{types.d-DLy8CCca.d.ts → types.d-BQZBUb3b.d.ts} +1 -4
  32. package/package.json +3 -3
  33. package/dist/packem_shared/add-status-code-to-response-DdfxTQsK.js +0 -17
  34. package/dist/packem_shared/createNegotiatedErrorHandler-Cd7yj67Z.js +0 -52
  35. package/dist/packem_shared/send-json-o-t1rNfw.js +0 -8
  36. package/dist/packem_shared/set-error-headers-B6ZeX5k4.js +0 -10
package/CHANGELOG.md CHANGED
@@ -1,3 +1,24 @@
1
+ ## @visulima/error-handler [1.0.4](https://github.com/visulima/visulima/compare/@visulima/error-handler@1.0.3...@visulima/error-handler@1.0.4) (2025-09-20)
2
+
3
+ ### Bug Fixes
4
+
5
+ * update error-handler configuration and improve code formatting ([0e9717c](https://github.com/visulima/visulima/commit/0e9717c6a642dde4c6d02974143d94597ed72dbd))
6
+
7
+ ### Miscellaneous Chores
8
+
9
+ * update package.json and pnpm-lock.yaml to include publint@0.3.12 and adjust build/test commands to exclude shared-utils ([1f7b3c0](https://github.com/visulima/visulima/commit/1f7b3c0381d77edfeec80ea1bf57b3469e929414))
10
+
11
+ ## @visulima/error-handler [1.0.3](https://github.com/visulima/visulima/compare/@visulima/error-handler@1.0.2...@visulima/error-handler@1.0.3) (2025-09-19)
12
+
13
+ ### Miscellaneous Chores
14
+
15
+ * **deps:** update dependencies and improve build scripts ([1979067](https://github.com/visulima/visulima/commit/197906796481aeaad4c57f7bb207ea6d8a9e227b))
16
+
17
+
18
+ ### Dependencies
19
+
20
+ * **@visulima/error:** upgraded to 4.6.1
21
+
1
22
  ## @visulima/error-handler [1.0.2](https://github.com/visulima/visulima/compare/@visulima/error-handler@1.0.1...@visulima/error-handler@1.0.2) (2025-09-12)
2
23
 
3
24
 
package/LICENSE.md CHANGED
@@ -23,11 +23,14 @@ SOFTWARE.
23
23
  <!-- DEPENDENCIES -->
24
24
 
25
25
  # Licenses of bundled dependencies
26
+
26
27
  The published @visulima/error-handler artifact additionally contains code with the following licenses:
27
28
  ISC, MIT
28
29
 
29
30
  # Bundled dependencies:
31
+
30
32
  ## depd
33
+
31
34
  License: MIT
32
35
  By: Douglas Christopher Wilson
33
36
  Repository: dougwilson/nodejs-depd
@@ -55,9 +58,10 @@ Repository: dougwilson/nodejs-depd
55
58
  > TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
56
59
  > SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
57
60
 
58
- ---------------------------------------
61
+ ---
59
62
 
60
63
  ## http-errors
64
+
61
65
  License: MIT
62
66
  By: Jonathan Ong, Alan Plum, Douglas Christopher Wilson
63
67
  Repository: jshttp/http-errors
@@ -85,9 +89,10 @@ Repository: jshttp/http-errors
85
89
  > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
86
90
  > THE SOFTWARE.
87
91
 
88
- ---------------------------------------
92
+ ---
89
93
 
90
94
  ## inherits
95
+
91
96
  License: ISC
92
97
  Repository: git://github.com/isaacs/inherits
93
98
 
@@ -107,9 +112,10 @@ Repository: git://github.com/isaacs/inherits
107
112
  > OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
108
113
  > PERFORMANCE OF THIS SOFTWARE.
109
114
 
110
- ---------------------------------------
115
+ ---
111
116
 
112
117
  ## setprototypeof
118
+
113
119
  License: ISC
114
120
  By: Wes Todd
115
121
  Repository: https://github.com/wesleytodd/setprototypeof.git
@@ -128,9 +134,10 @@ Repository: https://github.com/wesleytodd/setprototypeof.git
128
134
  > OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
129
135
  > CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
130
136
 
131
- ---------------------------------------
137
+ ---
132
138
 
133
139
  ## statuses
140
+
134
141
  License: MIT
135
142
  By: Douglas Christopher Wilson, Jonathan Ong
136
143
  Repository: jshttp/statuses
@@ -158,9 +165,10 @@ Repository: jshttp/statuses
158
165
  > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
159
166
  > THE SOFTWARE.
160
167
 
161
- ---------------------------------------
168
+ ---
162
169
 
163
170
  ## toidentifier
171
+
164
172
  License: MIT
165
173
  By: Douglas Christopher Wilson, Nick Baugh
166
174
  Repository: component/toidentifier
package/README.md CHANGED
@@ -62,7 +62,7 @@ const server = createServer(async (req, res) => {
62
62
  throw new Error("Boom!");
63
63
  } catch (error) {
64
64
  const handler = await httpHandler(error as Error, {
65
- showTrace: process.env.NODE_ENV !== "production"
65
+ showTrace: process.env.NODE_ENV !== "production",
66
66
  });
67
67
  return handler(req, res);
68
68
  }
@@ -85,7 +85,7 @@ app.get("/", async (req, res) => {
85
85
  throw new Error("Example error");
86
86
  } catch (error) {
87
87
  const handler = await httpHandler(error as Error, {
88
- showTrace: process.env.NODE_ENV !== "production"
88
+ showTrace: process.env.NODE_ENV !== "production",
89
89
  });
90
90
  return handler(req, res);
91
91
  }
@@ -110,7 +110,7 @@ app.get("/error", () => {
110
110
 
111
111
  app.onError(async (error, c) => {
112
112
  const handler = await fetchHandler(error as Error, {
113
- showTrace: process.env.NODE_ENV !== "production"
113
+ showTrace: process.env.NODE_ENV !== "production",
114
114
  });
115
115
  return handler(c.req.raw);
116
116
  });
@@ -130,7 +130,7 @@ export default {
130
130
  throw new Error("Boom");
131
131
  } catch (error) {
132
132
  const handler = await fetchHandler(error as Error, {
133
- showTrace: process.env.NODE_ENV !== "production"
133
+ showTrace: process.env.NODE_ENV !== "production",
134
134
  });
135
135
  return handler(request);
136
136
  }
@@ -147,7 +147,7 @@ Deno.serve(async (request: Request) => {
147
147
  throw new Error("Boom");
148
148
  } catch (error) {
149
149
  const handler = await fetchHandler(error as Error, {
150
- showTrace: process.env.NODE_ENV !== "production"
150
+ showTrace: process.env.NODE_ENV !== "production",
151
151
  });
152
152
  return handler(request);
153
153
  }
@@ -192,10 +192,12 @@ const handler = await httpHandler(error, {
192
192
  Node.js HTTP handler for Express, Connect, Fastify, Koa, and similar frameworks.
193
193
 
194
194
  **Parameters:**
195
+
195
196
  - `error: Error` - The error to handle
196
197
  - `options?: HtmlErrorHandlerOptions & { showTrace?: boolean; extraHandlers?: ErrorHandlers }`
197
198
 
198
199
  **Options:**
200
+
199
201
  - `showTrace?: boolean` - Include stack trace in responses (default: `true`)
200
202
  - `extraHandlers?: ErrorHandlers` - Custom handlers for specific Accept headers
201
203
  - `errorPage?: string | ((params) => string | Promise<string>)` - Custom HTML error page
@@ -207,10 +209,12 @@ Node.js HTTP handler for Express, Connect, Fastify, Koa, and similar frameworks.
207
209
  Fetch API handler for Cloudflare Workers, Deno, Bun, and other Fetch-based runtimes.
208
210
 
209
211
  **Parameters:**
212
+
210
213
  - `error: Error` - The error to handle
211
214
  - `options?: HtmlErrorHandlerOptions & { showTrace?: boolean; extraHandlers?: FetchErrorHandlers }`
212
215
 
213
216
  **Options:**
217
+
214
218
  - Same as `httpHandler` but uses `FetchErrorHandlers` for custom handlers
215
219
  - `onError?: (error, request, response) => void | Promise<void>` - Callback for custom error logging
216
220
 
@@ -228,13 +232,15 @@ type FetchErrorHandlers = {
228
232
  }[];
229
233
 
230
234
  type HtmlErrorHandlerOptions = {
231
- errorPage?: string | ((params: {
232
- error: Error;
233
- request: IncomingMessage;
234
- response: ServerResponse;
235
- reasonPhrase: string;
236
- statusCode: number;
237
- }) => string | Promise<string>);
235
+ errorPage?:
236
+ | string
237
+ | ((params: {
238
+ error: Error;
239
+ request: IncomingMessage;
240
+ response: ServerResponse;
241
+ reasonPhrase: string;
242
+ statusCode: number;
243
+ }) => string | Promise<string>);
238
244
  cspNonce?: string;
239
245
  onError?: (error: Error, request: IncomingMessage, response: ServerResponse) => void | Promise<void>;
240
246
  };
@@ -253,7 +259,7 @@ const server = createServer(async (req, res) => {
253
259
  throw new Error("Test error");
254
260
  } catch (error) {
255
261
  const handler = await httpHandler(error as Error, {
256
- showTrace: process.env.NODE_ENV !== "production"
262
+ showTrace: process.env.NODE_ENV !== "production",
257
263
  });
258
264
  return handler(req, res);
259
265
  }
@@ -275,7 +281,7 @@ const handler = await httpHandler(error, {
275
281
  <p>${error.message}</p>
276
282
  </body>
277
283
  </html>`,
278
- showTrace: false
284
+ showTrace: false,
279
285
  });
280
286
  ```
281
287
 
@@ -286,7 +292,7 @@ import httpHandler from "@visulima/error-handler/handler/http/node";
286
292
 
287
293
  const handler = await httpHandler(error, {
288
294
  cspNonce: "nonce-abc123", // Will be added to <style> tags
289
- showTrace: process.env.NODE_ENV !== "production"
295
+ showTrace: process.env.NODE_ENV !== "production",
290
296
  });
291
297
  ```
292
298
 
@@ -303,7 +309,7 @@ const handler = await httpHandler(error, {
303
309
  // Or send to external logging service
304
310
  // logToService({ error: error.message, url: request.url, method: request.method });
305
311
  },
306
- showTrace: process.env.NODE_ENV !== "production"
312
+ showTrace: process.env.NODE_ENV !== "production",
307
313
  });
308
314
  ```
309
315
 
@@ -373,8 +379,8 @@ If you would like to help take a look at the [list of issues](https://github.com
373
379
 
374
380
  ## Credits
375
381
 
376
- - [Daniel Bannert](https://github.com/prisis)
377
- - [All Contributors](https://github.com/visulima/visulima/graphs/contributors)
382
+ - [Daniel Bannert](https://github.com/prisis)
383
+ - [All Contributors](https://github.com/visulima/visulima/graphs/contributors)
378
384
 
379
385
  ## License
380
386
 
@@ -1,15 +1,15 @@
1
1
  import { IncomingMessage, ServerResponse } from 'node:http';
2
- import { a as ErrorHandler } from '../packem_shared/types.d-DLy8CCca.js';
2
+ import { a as ErrorHandler } from '../packem_shared/types.d-BQZBUb3b.js';
3
3
 
4
4
  type HtmlErrorHandlerOptions = {
5
- errorPage?: string | ((params: {
5
+ cspNonce?: string;
6
+ errorPage?: string | ((parameters: {
6
7
  error: Error;
8
+ reasonPhrase: string;
7
9
  request: IncomingMessage;
8
10
  response: ServerResponse;
9
- reasonPhrase: string;
10
11
  statusCode: number;
11
12
  }) => string | Promise<string>);
12
- cspNonce?: string;
13
13
  };
14
14
  declare const htmlErrorHandler: (options?: HtmlErrorHandlerOptions) => ErrorHandler;
15
15
 
@@ -1,41 +1,17 @@
1
- import { getReasonPhrase } from 'http-status-codes';
2
- import { a as addStatusCodeToResponse } from '../packem_shared/add-status-code-to-response-DdfxTQsK.js';
3
-
4
- var __defProp = Object.defineProperty;
5
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
- const htmlErrorHandler = /* @__PURE__ */ __name((options = {}) => {
7
- return async (error, request, response) => {
8
- addStatusCodeToResponse(response, error);
9
- response.setHeader("content-type", "text/html; charset=utf-8");
10
- const title = getReasonPhrase(response.statusCode) || "Error";
11
- const nonceAttr = options.cspNonce ? ` nonce="${options.cspNonce}"` : "";
12
- if (options.errorPage) {
13
- const override = typeof options.errorPage === "function" ? await options.errorPage({
14
- error,
15
- request,
16
- response,
17
- reasonPhrase: title,
18
- statusCode: response.statusCode
19
- }) : options.errorPage;
20
- if (override) {
21
- response.end(override);
22
- return;
23
- }
24
- }
25
- response.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>
26
2
  <html lang="en">
27
3
  <head>
28
4
  <meta charset="utf-8">
29
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
30
6
 
31
- <title>${title}</title>
7
+ <title>${o}</title>
32
8
  <meta name="robots" content="noindex">
33
9
 
34
- <style${nonceAttr}>
10
+ <style${a}>
35
11
  /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}code{font-family:monospace,monospace;font-size:1em}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}code{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#cbd5e0;border-color:rgba(203,213,224,var(--border-opacity))}.border-r{border-right-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-xl{max-width:36rem}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@media (min-width:640px){.sm\\:rounded-lg{border-radius:.5rem}.sm\\:block{display:block}.sm\\:items-center{align-items:center}.sm\\:justify-start{justify-content:flex-start}.sm\\:justify-between{justify-content:space-between}.sm\\:h-20{height:5rem}.sm\\:ml-0{margin-left:0}.sm\\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\\:pt-0{padding-top:0}.sm\\:text-left{text-align:left}.sm\\:text-right{text-align:right}}@media (min-width:768px){.md\\:border-t-0{border-top-width:0}.md\\:border-l{border-left-width:1px}.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\\:text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}}
36
12
  </style>
37
13
 
38
- <style${nonceAttr}>
14
+ <style${a}>
39
15
  body {
40
16
  font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
41
17
  }
@@ -46,18 +22,14 @@ const htmlErrorHandler = /* @__PURE__ */ __name((options = {}) => {
46
22
  <div class="max-w-xl mx-auto sm:px-6 lg:px-8">
47
23
  <div class="flex items-center justify-center">
48
24
  <div class="px-6 text-lg text-gray-600 dark:text-gray-400 border-r border-gray-400 dark:border-gray-700 tracking-wider font-semibold">
49
- ${response.statusCode}
25
+ ${t.statusCode}
50
26
  </div>
51
27
 
52
28
  <div class="ml-4 text-lg text-gray-600 dark:text-gray-400 uppercase tracking-wider">
53
- ${title}
29
+ ${o}
54
30
  </div>
55
31
  </div>
56
32
  </div>
57
33
  </div>
58
34
  </body>
59
- </html>`);
60
- };
61
- }, "htmlErrorHandler");
62
-
63
- export { htmlErrorHandler };
35
+ </html>`)},"htmlErrorHandler");export{x as htmlErrorHandler};
@@ -1,12 +1,12 @@
1
1
  import { IncomingMessage, ServerResponse } from 'node:http';
2
- import { a as ErrorHandler } from '../packem_shared/types.d-DLy8CCca.js';
2
+ import { a as ErrorHandler } from '../packem_shared/types.d-BQZBUb3b.js';
3
3
 
4
4
  type JsonErrorBody = Record<string, unknown> | unknown[];
5
- type JsonErrorFormatter = (params: {
5
+ type JsonErrorFormatter = (parameters: {
6
6
  error: Error;
7
+ reasonPhrase: string;
7
8
  request: IncomingMessage;
8
9
  response: ServerResponse;
9
- reasonPhrase: string;
10
10
  statusCode: number;
11
11
  }) => JsonErrorBody | Promise<JsonErrorBody>;
12
12
  type JsonErrorHandlerOptions = {
@@ -1,31 +1 @@
1
- import { getReasonPhrase } from 'http-status-codes';
2
- import { a as addStatusCodeToResponse } from '../packem_shared/add-status-code-to-response-DdfxTQsK.js';
3
- import { s as sendJson } from '../packem_shared/send-json-o-t1rNfw.js';
4
- import { s as setErrorHeaders } from '../packem_shared/set-error-headers-B6ZeX5k4.js';
5
-
6
- var __defProp = Object.defineProperty;
7
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
8
- const jsonErrorHandler = /* @__PURE__ */ __name((options = {}) => {
9
- return async (error, request, response) => {
10
- addStatusCodeToResponse(response, error);
11
- setErrorHeaders(response, error);
12
- const statusCode = response.statusCode;
13
- const reasonPhrase = getReasonPhrase(statusCode) || "An error occurred";
14
- if (options.formatter) {
15
- const body = await options.formatter({ error, request, response, reasonPhrase, statusCode });
16
- sendJson(response, body);
17
- return;
18
- }
19
- const expose = error.expose;
20
- sendJson(response, {
21
- statusCode,
22
- // eslint-disable-next-line perfectionist/sort-objects
23
- error: reasonPhrase,
24
- // eslint-disable-next-line perfectionist/sort-objects
25
- message: error.message || reasonPhrase,
26
- ...expose ? { stack: error.stack } : {}
27
- });
28
- };
29
- }, "jsonErrorHandler");
30
-
31
- export { 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,4 +1,4 @@
1
- import { a as ErrorHandler } from '../packem_shared/types.d-DLy8CCca.js';
1
+ import { a as ErrorHandler } from '../packem_shared/types.d-BQZBUb3b.js';
2
2
  import 'node:http';
3
3
 
4
4
  declare const jsonapiErrorHandler: ErrorHandler;
@@ -1,46 +1 @@
1
- import { isHttpError } from 'http-errors';
2
- import { getReasonPhrase } from 'http-status-codes';
3
- import tsJapi from 'ts-japi';
4
- import { a as addStatusCodeToResponse } from '../packem_shared/add-status-code-to-response-DdfxTQsK.js';
5
- import { s as sendJson } from '../packem_shared/send-json-o-t1rNfw.js';
6
- import { s as setErrorHeaders } from '../packem_shared/set-error-headers-B6ZeX5k4.js';
7
-
8
- var __defProp = Object.defineProperty;
9
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
10
- const defaultTitle = "An error occurred";
11
- const jsonapiErrorHandler = /* @__PURE__ */ __name((error, _request, response) => {
12
- addStatusCodeToResponse(response, error);
13
- setErrorHeaders(response, error);
14
- if (error instanceof tsJapi.JapiError || tsJapi.JapiError.isLikeJapiError(error)) {
15
- const serializer = new tsJapi.ErrorSerializer();
16
- sendJson(response, serializer.serialize(error));
17
- } else if (isHttpError(error)) {
18
- const statusCode = "statusCode" in error && typeof error.statusCode === "number" ? error.statusCode : "status" in error && typeof error.status === "number" ? error.status : response.statusCode;
19
- const title = "title" in error && typeof error.title === "string" ? error.title : void 0;
20
- const message = "message" in error && typeof error.message === "string" ? error.message : "";
21
- sendJson(response, {
22
- errors: [
23
- {
24
- code: statusCode ?? response.statusCode,
25
- title: title || getReasonPhrase(statusCode) || defaultTitle,
26
- // eslint-disable-next-line perfectionist/sort-objects
27
- detail: message
28
- }
29
- ]
30
- });
31
- } else {
32
- const { message } = error;
33
- sendJson(response, {
34
- errors: [
35
- {
36
- code: "500",
37
- title: getReasonPhrase(response.statusCode) || defaultTitle,
38
- // eslint-disable-next-line perfectionist/sort-objects
39
- detail: message
40
- }
41
- ]
42
- });
43
- }
44
- }, "jsonapiErrorHandler");
45
-
46
- export { jsonapiErrorHandler 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,12 +1,12 @@
1
1
  import { IncomingMessage, ServerResponse } from 'node:http';
2
- import { a as ErrorHandler } from '../packem_shared/types.d-DLy8CCca.js';
2
+ import { a as ErrorHandler } from '../packem_shared/types.d-BQZBUb3b.js';
3
3
 
4
4
  type JsonpErrorBody = Record<string, unknown> | unknown[];
5
- type JsonpErrorFormatter = (params: {
5
+ type JsonpErrorFormatter = (parameters: {
6
6
  error: Error;
7
+ reasonPhrase: string;
7
8
  request: IncomingMessage;
8
9
  response: ServerResponse;
9
- reasonPhrase: string;
10
10
  statusCode: number;
11
11
  }) => JsonpErrorBody | Promise<JsonpErrorBody>;
12
12
  type JsonpErrorHandlerOptions = {
@@ -1,36 +1 @@
1
- import { getReasonPhrase } from 'http-status-codes';
2
- import { a as addStatusCodeToResponse } from '../packem_shared/add-status-code-to-response-DdfxTQsK.js';
3
- import { s as setErrorHeaders } from '../packem_shared/set-error-headers-B6ZeX5k4.js';
4
-
5
- var __defProp = Object.defineProperty;
6
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
- const defaultCallbackParam = "callback";
8
- const jsonpErrorHandler = /* @__PURE__ */ __name((options = {}) => {
9
- return async (error, request, response) => {
10
- addStatusCodeToResponse(response, error);
11
- setErrorHeaders(response, error);
12
- const statusCode = response.statusCode;
13
- const reasonPhrase = getReasonPhrase(statusCode) || "An error occurred";
14
- const url = new URL(request.url ?? "http://localhost", "http://localhost");
15
- const callbackParamName = options.callbackParamName || defaultCallbackParam;
16
- const callbackName = url.searchParams.get(callbackParamName) || "callback";
17
- let payload;
18
- if (options.formatter) {
19
- payload = await options.formatter({ error, request, response, reasonPhrase, statusCode });
20
- } else {
21
- const expose = error.expose;
22
- payload = {
23
- statusCode,
24
- // eslint-disable-next-line perfectionist/sort-objects
25
- error: reasonPhrase,
26
- // eslint-disable-next-line perfectionist/sort-objects
27
- message: error.message || reasonPhrase,
28
- ...expose ? { stack: error.stack } : {}
29
- };
30
- }
31
- response.setHeader("content-type", "application/javascript; charset=utf-8");
32
- response.end(`${callbackName}(${JSON.stringify(payload)});`);
33
- };
34
- }, "jsonpErrorHandler");
35
-
36
- export { 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,4 +1,4 @@
1
- import { a as ErrorHandler } from '../packem_shared/types.d-DLy8CCca.js';
1
+ import { a as ErrorHandler } from '../packem_shared/types.d-BQZBUb3b.js';
2
2
  import 'node:http';
3
3
 
4
4
  declare const problemErrorHandler: ErrorHandler;
@@ -1,53 +1 @@
1
- import { isHttpError } from 'http-errors';
2
- import { getReasonPhrase } from 'http-status-codes';
3
- import { a as addStatusCodeToResponse } from '../packem_shared/add-status-code-to-response-DdfxTQsK.js';
4
- import { s as sendJson } from '../packem_shared/send-json-o-t1rNfw.js';
5
- import { s as setErrorHeaders } from '../packem_shared/set-error-headers-B6ZeX5k4.js';
6
-
7
- var __defProp = Object.defineProperty;
8
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
9
- const defaultType = "about:blank";
10
- const defaultTitle = "An error occurred";
11
- const problemErrorHandler = /* @__PURE__ */ __name((error, _request, response) => {
12
- const { message, stack } = error;
13
- if (isHttpError(error)) {
14
- const expose = "expose" in error ? error.expose : void 0;
15
- const statusCode = "statusCode" in error && typeof error.statusCode === "number" ? error.statusCode : "status" in error && typeof error.status === "number" ? error.status : response.statusCode;
16
- const title = "title" in error && typeof error.title === "string" ? error.title : void 0;
17
- const type = "type" in error && typeof error.type === "string" ? error.type : void 0;
18
- response.statusCode = statusCode;
19
- setErrorHeaders(response, error);
20
- sendJson(
21
- response,
22
- {
23
- type: type || defaultType,
24
- // eslint-disable-next-line perfectionist/sort-objects
25
- title: title || getReasonPhrase(statusCode) || defaultTitle,
26
- // eslint-disable-next-line perfectionist/sort-objects
27
- status: statusCode,
28
- // eslint-disable-next-line perfectionist/sort-objects
29
- detail: message,
30
- ...expose ? { trace: stack } : {}
31
- },
32
- "application/problem+json"
33
- );
34
- } else {
35
- addStatusCodeToResponse(response, error);
36
- sendJson(
37
- response,
38
- {
39
- type: defaultType,
40
- // eslint-disable-next-line perfectionist/sort-objects
41
- title: getReasonPhrase(response.statusCode) || defaultTitle,
42
- // eslint-disable-next-line perfectionist/sort-objects
43
- status: response.statusCode,
44
- // eslint-disable-next-line perfectionist/sort-objects
45
- detail: message,
46
- ...error.expose ? { trace: stack } : {}
47
- },
48
- "application/problem+json"
49
- );
50
- }
51
- }, "problemErrorHandler");
52
-
53
- export { problemErrorHandler 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,11 +1,11 @@
1
1
  import { IncomingMessage, ServerResponse } from 'node:http';
2
- import { a as ErrorHandler } from '../packem_shared/types.d-DLy8CCca.js';
2
+ import { a as ErrorHandler } from '../packem_shared/types.d-BQZBUb3b.js';
3
3
 
4
- type TextErrorFormatter = (params: {
4
+ type TextErrorFormatter = (parameters: {
5
5
  error: Error;
6
+ reasonPhrase: string;
6
7
  request: IncomingMessage;
7
8
  response: ServerResponse;
8
- reasonPhrase: string;
9
9
  statusCode: number;
10
10
  }) => string | Promise<string>;
11
11
  type TextErrorHandlerOptions = {
@@ -1,28 +1,3 @@
1
- import { getReasonPhrase } from 'http-status-codes';
2
- import { a as addStatusCodeToResponse } from '../packem_shared/add-status-code-to-response-DdfxTQsK.js';
3
- import { s as setErrorHeaders } from '../packem_shared/set-error-headers-B6ZeX5k4.js';
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}
4
2
 
5
- var __defProp = Object.defineProperty;
6
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
- const textErrorHandler = /* @__PURE__ */ __name((options = {}) => {
8
- return async (error, request, response) => {
9
- addStatusCodeToResponse(response, error);
10
- setErrorHeaders(response, error);
11
- const statusCode = response.statusCode;
12
- const reasonPhrase = getReasonPhrase(statusCode) || "Error";
13
- response.setHeader("content-type", "text/plain; charset=utf-8");
14
- if (options.formatter) {
15
- const text = await options.formatter({ error, request, response, reasonPhrase, statusCode });
16
- response.end(text);
17
- return;
18
- }
19
- const message = error.message || reasonPhrase;
20
- const expose = error.expose;
21
- const stack = expose ? error.stack : void 0;
22
- response.end(stack ? `${message}
23
-
24
- ${stack}` : message);
25
- };
26
- }, "textErrorHandler");
27
-
28
- export { textErrorHandler };
3
+ ${n}`:s)},"textErrorHandler");export{E as textErrorHandler};
@@ -1,28 +1,28 @@
1
1
  import { IncomingMessage, ServerResponse } from 'node:http';
2
- import { a as ErrorHandler } from '../packem_shared/types.d-DLy8CCca.js';
2
+ import { a as ErrorHandler } from '../packem_shared/types.d-BQZBUb3b.js';
3
3
 
4
4
  type XmlErrorBody = Record<string, unknown> | unknown[];
5
- type XmlErrorFormatter = (params: {
5
+ type XmlErrorFormatter = (parameters: {
6
6
  error: Error;
7
+ reasonPhrase: string;
7
8
  request: IncomingMessage;
8
9
  response: ServerResponse;
9
- reasonPhrase: string;
10
10
  statusCode: number;
11
11
  }) => XmlErrorBody | Promise<XmlErrorBody>;
12
12
  type ToXmlOptions = {
13
- indent?: string;
14
- header?: string | boolean;
15
- attributeReplacements?: Record<string, string>;
16
- attributeFilter?: (key: string, value: unknown) => boolean;
17
13
  attributeExplicitTrue?: boolean;
14
+ attributeFilter?: (key: string, value: unknown) => boolean;
15
+ attributeReplacements?: Record<string, string>;
18
16
  contentMap?: (content: string) => string;
19
17
  contentReplacements?: Record<string, string>;
18
+ header?: string | boolean;
19
+ indent?: string;
20
20
  selfCloseTags?: boolean;
21
21
  };
22
22
  type XmlErrorHandlerOptions = {
23
23
  formatter?: XmlErrorFormatter;
24
- xmlHeader?: boolean;
25
24
  toXml?: ToXmlOptions;
25
+ xmlHeader?: boolean;
26
26
  };
27
27
  declare const xmlErrorHandler: (options?: XmlErrorHandlerOptions) => ErrorHandler;
28
28