import { createMiddleware } from "hono/factory"; import * as errorMap from "@/lib/errors"; import * as messageMap from "@/lib/messages"; import type { StatusCode } from "hono/utils/http-status"; type ErrorKey = keyof typeof errorMap; type MessageKey = keyof typeof messageMap; export const params_middleware = createMiddleware(async (c, next) => { const errorParam = c.req.query("error"); const messageParam = c.req.query("message"); if (errorParam && errorParam in errorMap) { const ErrorClass = errorMap[errorParam as ErrorKey]; const instance = new ErrorClass(); c.set("error", instance.message); if (instance.statusCode) { c.status(instance.statusCode as StatusCode) } } else if (errorParam && !(errorParam in errorMap)) c.set("error", "Unknown error. Might be an issue on our end."); if (messageParam && messageParam in messageMap) { const message = messageMap[messageParam as MessageKey]; c.set("message", message.message); } await next(); });