import { Hono } from 'hono'; import { compress } from 'hono/compress'; import { jsxRenderer } from 'hono/jsx-renderer'; import { trimTrailingSlash } from 'hono/trailing-slash'; import api from '@/api'; import { errorHandler, notFoundHandler } from '@/errors'; import accessControl from '@/middleware/access-control'; import antiHotlink from '@/middleware/anti-hotlink'; import cache from '@/middleware/cache'; import debug from '@/middleware/debug'; import header from '@/middleware/header'; import mLogger from '@/middleware/logger'; import parameter from '@/middleware/parameter'; import sentry from '@/middleware/sentry'; import template from '@/middleware/template'; import trace from '@/middleware/trace'; import registry from '@/registry'; import logger from '@/utils/logger'; process.on('uncaughtException', (e) => { logger.error('uncaughtException: ' + e); }); const app = new Hono(); app.use(trimTrailingSlash()); app.use(compress()); app.use( jsxRenderer(({ children }) => <>{children}, { docType: '', stream: {}, }) ); app.use(mLogger); app.use(trace); app.use(sentry); app.use(accessControl); app.use(debug); app.use(template); app.use(header); app.use(antiHotlink); app.use(parameter); app.use(cache); app.route('/', registry); app.route('/api', api); app.notFound(notFoundHandler); app.onError(errorHandler); export default app;