Files
RSSHub/lib/app.ts
2024-01-29 22:39:24 +08:00

53 lines
1.2 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