RSSHub/lib/app.ts

53 lines
1.3 KiB
TypeScript

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;