h3 0.5.1 → 0.5.2

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/dist/index.cjs CHANGED
@@ -272,30 +272,30 @@ function createError(input) {
272
272
  return err;
273
273
  }
274
274
  function sendError(event, error, debug) {
275
- let h3Error;
276
- if (error instanceof H3Error) {
277
- h3Error = error;
278
- } else {
279
- console.error(error);
280
- h3Error = createError(error);
281
- }
282
275
  if (event.res.writableEnded) {
283
276
  return;
284
277
  }
285
- event.res.statusCode = h3Error.statusCode;
286
- event.res.statusMessage = h3Error.statusMessage;
278
+ const h3Error = isError(error) ? error : createError(error);
287
279
  const responseBody = {
288
- statusCode: event.res.statusCode,
289
- statusMessage: event.res.statusMessage,
280
+ statusCode: h3Error.statusCode,
281
+ statusMessage: h3Error.statusMessage,
290
282
  stack: [],
291
283
  data: h3Error.data
292
284
  };
293
285
  if (debug) {
294
286
  responseBody.stack = (h3Error.stack || "").split("\n").map((l) => l.trim());
295
287
  }
288
+ if (event.res.writableEnded) {
289
+ return;
290
+ }
291
+ event.res.statusCode = h3Error.statusCode;
292
+ event.res.statusMessage = h3Error.statusMessage;
296
293
  event.res.setHeader("Content-Type", MIMES.json);
297
294
  event.res.end(JSON.stringify(responseBody, null, 2));
298
295
  }
296
+ function isError(input) {
297
+ return input instanceof H3Error;
298
+ }
299
299
 
300
300
  function createApp(options = {}) {
301
301
  const stack = [];
@@ -307,8 +307,12 @@ function createApp(options = {}) {
307
307
  } catch (err) {
308
308
  if (options.onError) {
309
309
  await options.onError(err, event);
310
+ } else {
311
+ if (!isError(err)) {
312
+ console.error("[h3]", err);
313
+ }
314
+ await sendError(event, err, !!options.debug);
310
315
  }
311
- await sendError(event, err, !!options.debug);
312
316
  }
313
317
  };
314
318
  const app = nodeHandler;
@@ -456,6 +460,7 @@ exports.defineLazyEventHandler = defineLazyEventHandler;
456
460
  exports.defineLazyHandler = defineLazyHandler;
457
461
  exports.defineMiddleware = defineMiddleware;
458
462
  exports.deleteCookie = deleteCookie;
463
+ exports.isError = isError;
459
464
  exports.isEvent = isEvent;
460
465
  exports.isEventHandler = isEventHandler;
461
466
  exports.isMethod = isMethod;
package/dist/index.d.ts CHANGED
@@ -121,6 +121,7 @@ declare function createError(input: Partial<H3Error>): H3Error;
121
121
  * In the debug mode the stack trace of errors will be return in response.
122
122
  */
123
123
  declare function sendError(event: CompatibilityEvent, error: Error | H3Error, debug?: boolean): void;
124
+ declare function isError(input: any): input is H3Error;
124
125
 
125
126
  declare const defineHandler: <T>(handler: Handler<T, {}>) => Handler<T, {}>;
126
127
  /** @deprecated Use defineHandler */
@@ -224,4 +225,4 @@ interface Router extends AddRouteShortcuts {
224
225
  }
225
226
  declare function createRouter(): Router;
226
227
 
227
- export { AddRouteShortcuts, App, AppOptions, AppUse, CompatibilityEvent, CompatibilityEventHandler, Encoding, EventHandler, H3Error, H3Event, H3Response, HTTPMethod, Handler, IncomingMessage, InputLayer, InputStack, JSONValue, Layer, LazyEventHandler, LazyHandler, MIMES, Matcher, Middleware, NodeHandler, PromisifiedHandler, Router, RouterMethod, RouterUse, ServerResponse, Stack, _JSONValue, appendHeader, assertMethod, callHandler, createApp, createAppEventHandler, createError, createEvent, createRouter, defaultContentType, defineEventHandler, defineHandle, defineHandler, defineLazyEventHandler, defineLazyHandler, defineMiddleware, deleteCookie, isEvent, isEventHandler, isMethod, isStream, lazyHandle, promisifyHandle, promisifyHandler, send, sendError, sendRedirect, sendStream, setCookie, toEventHandler, use, useBase, useBody, useCookie, useCookies, useMethod, useQuery, useRawBody };
228
+ export { AddRouteShortcuts, App, AppOptions, AppUse, CompatibilityEvent, CompatibilityEventHandler, Encoding, EventHandler, H3Error, H3Event, H3Response, HTTPMethod, Handler, IncomingMessage, InputLayer, InputStack, JSONValue, Layer, LazyEventHandler, LazyHandler, MIMES, Matcher, Middleware, NodeHandler, PromisifiedHandler, Router, RouterMethod, RouterUse, ServerResponse, Stack, _JSONValue, appendHeader, assertMethod, callHandler, createApp, createAppEventHandler, createError, createEvent, createRouter, defaultContentType, defineEventHandler, defineHandle, defineHandler, defineLazyEventHandler, defineLazyHandler, defineMiddleware, deleteCookie, isError, isEvent, isEventHandler, isMethod, isStream, lazyHandle, promisifyHandle, promisifyHandler, send, sendError, sendRedirect, sendStream, setCookie, toEventHandler, use, useBase, useBody, useCookie, useCookies, useMethod, useQuery, useRawBody };
package/dist/index.mjs CHANGED
@@ -264,30 +264,30 @@ function createError(input) {
264
264
  return err;
265
265
  }
266
266
  function sendError(event, error, debug) {
267
- let h3Error;
268
- if (error instanceof H3Error) {
269
- h3Error = error;
270
- } else {
271
- console.error(error);
272
- h3Error = createError(error);
273
- }
274
267
  if (event.res.writableEnded) {
275
268
  return;
276
269
  }
277
- event.res.statusCode = h3Error.statusCode;
278
- event.res.statusMessage = h3Error.statusMessage;
270
+ const h3Error = isError(error) ? error : createError(error);
279
271
  const responseBody = {
280
- statusCode: event.res.statusCode,
281
- statusMessage: event.res.statusMessage,
272
+ statusCode: h3Error.statusCode,
273
+ statusMessage: h3Error.statusMessage,
282
274
  stack: [],
283
275
  data: h3Error.data
284
276
  };
285
277
  if (debug) {
286
278
  responseBody.stack = (h3Error.stack || "").split("\n").map((l) => l.trim());
287
279
  }
280
+ if (event.res.writableEnded) {
281
+ return;
282
+ }
283
+ event.res.statusCode = h3Error.statusCode;
284
+ event.res.statusMessage = h3Error.statusMessage;
288
285
  event.res.setHeader("Content-Type", MIMES.json);
289
286
  event.res.end(JSON.stringify(responseBody, null, 2));
290
287
  }
288
+ function isError(input) {
289
+ return input instanceof H3Error;
290
+ }
291
291
 
292
292
  function createApp(options = {}) {
293
293
  const stack = [];
@@ -299,8 +299,12 @@ function createApp(options = {}) {
299
299
  } catch (err) {
300
300
  if (options.onError) {
301
301
  await options.onError(err, event);
302
+ } else {
303
+ if (!isError(err)) {
304
+ console.error("[h3]", err);
305
+ }
306
+ await sendError(event, err, !!options.debug);
302
307
  }
303
- await sendError(event, err, !!options.debug);
304
308
  }
305
309
  };
306
310
  const app = nodeHandler;
@@ -430,4 +434,4 @@ function createRouter() {
430
434
  return router;
431
435
  }
432
436
 
433
- export { H3Error, MIMES, appendHeader, assertMethod, callHandler, createApp, createAppEventHandler, createError, createEvent, createRouter, defaultContentType, defineEventHandler, defineHandle, defineHandler, defineLazyEventHandler, defineLazyHandler, defineMiddleware, deleteCookie, isEvent, isEventHandler, isMethod, isStream, lazyHandle, promisifyHandle, promisifyHandler, send, sendError, sendRedirect, sendStream, setCookie, toEventHandler, use, useBase, useBody, useCookie, useCookies, useMethod, useQuery, useRawBody };
437
+ export { H3Error, MIMES, appendHeader, assertMethod, callHandler, createApp, createAppEventHandler, createError, createEvent, createRouter, defaultContentType, defineEventHandler, defineHandle, defineHandler, defineLazyEventHandler, defineLazyHandler, defineMiddleware, deleteCookie, isError, isEvent, isEventHandler, isMethod, isStream, lazyHandle, promisifyHandle, promisifyHandler, send, sendError, sendRedirect, sendStream, setCookie, toEventHandler, use, useBase, useBody, useCookie, useCookies, useMethod, useQuery, useRawBody };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "h3",
3
- "version": "0.5.1",
3
+ "version": "0.5.2",
4
4
  "description": "Tiny JavaScript Server",
5
5
  "repository": "unjs/h3",
6
6
  "license": "MIT",