import '@/utils/request-wrapper'; import { Handler, Hono } from 'hono'; import cache from '@/middleware/cache'; import template from '@/middleware/template'; import onerror from '@/middleware/onerror'; import accessControl from '@/middleware/access-control'; import debug from '@/middleware/debug'; import header from '@/middleware/header'; import antiHotlink from '@/middleware/anti-hotlink'; import parameter from '@/middleware/parameter'; import logger from '@/utils/logger'; import routes from '@/routes'; import index from '@/v3/index'; import { errorHandler } from '@/errors'; process.on('uncaughtException', (e) => { logger.error('uncaughtException: ' + e); }); const app = new Hono(); app.use('*', onerror); app.use('*', accessControl); app.use('*', debug); app.use('*', template); app.use('*', header); app.use('*', antiHotlink); app.use('*', parameter); app.use('*', cache); for (const name in routes) { const subApp = app.basePath(`/${name}`); routes[name]({ get: (path, handler) => { const wrapedHandler: Handler = async (ctx, ...args) => { if (!ctx.get('data')) { await handler(ctx, ...args); } }; subApp.get(path, wrapedHandler); }, }); } app.get('/', index); app.onError(errorHandler); export default app;