import { Hono } from "hono"; import { apiResponse } from "../modules/api-utils/apiResponse"; import { ZodError } from "zod"; import { cors } from "hono/cors"; import GenericError from "../Errors/GenericError"; import teapot from "./teapot"; const app = new Hono(); const v1 = new Hono(); app.onError((err, ctx) => { const errClassName = err.constructor.name; if ( errClassName.toLowerCase().includes("prisma") || err.message.toLowerCase().includes("prisma") || err.name.toLowerCase().includes("prisma") ) { console.trace(err); return ctx.json(apiResponse.internalError(), 500); } if (err instanceof ZodError) { return ctx.json( apiResponse.zodError(err), //@ts-ignore apiResponse.zodError(err).status ); } const response = apiResponse.error(err); return ctx.json(response, response.status); }); app.use("*", cors()); app.notFound((c) => { const response = apiResponse.error( new GenericError({ name: "NotFound", message: `Cannot ${c.req.method.toUpperCase()} ${c.req.path}`, status: 404, cause: "Unknown", }) ); return c.json(response, response.status); }); v1.route("/teapot", teapot); app.route("/v1", v1); export default app;