import { createBullBoard } from "@bull-board/api"; import { BullMQAdapter } from "@bull-board/api/bullMQAdapter"; import { HonoAdapter } from "@bull-board/hono"; import type { OpenAPIHono } from "@hono/zod-openapi"; import { serveStatic } from "hono/bun"; import { deliveryQueue } from "~/classes/queues/delivery"; import { fetchQueue } from "~/classes/queues/fetch"; import { inboxQueue } from "~/classes/queues/inbox"; import { pushQueue } from "~/classes/queues/push"; import { config } from "~/packages/config-manager"; import type { HonoEnv } from "~/types/api"; export const applyToHono = (app: OpenAPIHono): void => { const serverAdapter = new HonoAdapter(serveStatic); createBullBoard({ queues: [ new BullMQAdapter(inboxQueue), new BullMQAdapter(deliveryQueue), new BullMQAdapter(fetchQueue), new BullMQAdapter(pushQueue), ], serverAdapter, options: { uiConfig: { boardTitle: "Server Queues", favIcon: { default: "/favicon.png", alternative: "/favicon.ico", }, boardLogo: { path: config.instance.logo ?? "https://cdn.versia.pub/branding/icon.svg", height: 40, }, }, }, }); serverAdapter.setBasePath("/admin/queues"); app.route("/admin/queues", serverAdapter.registerPlugin()); };