summary refs log tree commit diff
path: root/src/api/middlewares/ErrorHandler.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/middlewares/ErrorHandler.ts')
-rw-r--r--src/api/middlewares/ErrorHandler.ts78
1 files changed, 39 insertions, 39 deletions
diff --git a/src/api/middlewares/ErrorHandler.ts b/src/api/middlewares/ErrorHandler.ts

index cd306c9c..1a9a18a8 100644 --- a/src/api/middlewares/ErrorHandler.ts +++ b/src/api/middlewares/ErrorHandler.ts
@@ -22,48 +22,48 @@ import { ApiError, FieldError } from "@spacebar/util"; const EntityNotFoundErrorRegex = /"(\w+)"/; export function ErrorHandler(error: Error & { type?: string }, req: Request, res: Response, next: NextFunction) { - if (!error) return next(); + if (!error) return next(); - try { - let code = 400; - let httpcode = code; - let message = error?.toString(); - let errors = undefined; - let _ajvErrors = undefined; + try { + let code = 400; + let httpcode = code; + let message = error?.toString(); + let errors = undefined; + let _ajvErrors = undefined; - if (error instanceof HTTPError && error.code) code = httpcode = error.code; - else if (error instanceof ApiError) { - code = error.code; - message = error.message; - httpcode = error.httpStatus; - } else if (error.name === "EntityNotFoundError") { - message = `${error.message.match(EntityNotFoundErrorRegex)?.[1] || "Item"} could not be found`; - code = httpcode = 404; - } else if (error instanceof FieldError) { - code = Number(error.code); - message = error.message; - errors = error.errors; - _ajvErrors = error._ajvErrors; - } else if (error?.type == "entity.parse.failed") { - // body-parser failed - httpcode = 400; - code = 50109; - message = "The request body contains invalid JSON."; - } else { - console.error(`[Error] ${code} ${req.url}\n`, errors || error, "\nbody:", req.body); + if (error instanceof HTTPError && error.code) code = httpcode = error.code; + else if (error instanceof ApiError) { + code = error.code; + message = error.message; + httpcode = error.httpStatus; + } else if (error.name === "EntityNotFoundError") { + message = `${error.message.match(EntityNotFoundErrorRegex)?.[1] || "Item"} could not be found`; + code = httpcode = 404; + } else if (error instanceof FieldError) { + code = Number(error.code); + message = error.message; + errors = error.errors; + _ajvErrors = error._ajvErrors; + } else if (error?.type == "entity.parse.failed") { + // body-parser failed + httpcode = 400; + code = 50109; + message = "The request body contains invalid JSON."; + } else { + console.error(`[Error] ${code} ${req.url}\n`, errors || error, "\nbody:", req.body); - if (req.server?.options?.production) { - // don't expose internal errors to the user, instead human errors should be thrown as HTTPError - message = "Internal Server Error"; - } - code = httpcode = 500; - } + if (req.server?.options?.production) { + // don't expose internal errors to the user, instead human errors should be thrown as HTTPError + message = "Internal Server Error"; + } + code = httpcode = 500; + } - if (httpcode > 511) httpcode = 400; + if (httpcode > 511) httpcode = 400; - res.status(httpcode).json({ code: code, message, errors, _ajvErrors }); - } catch (error) { - console.error(`[Internal Server Error] 500`, error); - return res.status(500).json({ code: 500, message: "Internal Server Error" }); - } + res.status(httpcode).json({ code: code, message, errors, _ajvErrors }); + } catch (error) { + console.error(`[Internal Server Error] 500`, error); + return res.status(500).json({ code: 500, message: "Internal Server Error" }); + } }