34 lines
736 B
TypeScript
34 lines
736 B
TypeScript
import { Context } from 'hono'
|
|
import { z } from 'zod'
|
|
import { HTTPException } from 'hono/http-exception'
|
|
|
|
export const ErrorSchema = z.object({
|
|
code: z.number().openapi({
|
|
example: 400,
|
|
}),
|
|
message: z.string().openapi({
|
|
example: 'Bad Request',
|
|
}),
|
|
})
|
|
|
|
export const errorHandler = async (err: Error, c: Context) => {
|
|
if (err instanceof HTTPException) {
|
|
const details = err.cause ? { details: err.cause instanceof Error ? err.cause.message : err.cause } : {}
|
|
return c.json(
|
|
{
|
|
code: err.status,
|
|
message: err.message,
|
|
...details
|
|
},
|
|
err.status
|
|
)
|
|
}
|
|
|
|
return c.json(
|
|
{
|
|
code: 500,
|
|
message: err.message || 'Internal Server Error'
|
|
},
|
|
500
|
|
)
|
|
} |