fenghuo/apps/backend/src/index.ts

55 lines
1.1 KiB
TypeScript
Raw Normal View History

2025-05-26 19:56:34 +08:00
import { Hono } from 'hono'
import { logger } from 'hono/logger'
import { contextStorage, getContext } from 'hono/context-storage'
import { prettyJSON } from 'hono/pretty-json'
2025-05-27 08:56:07 +08:00
import { cors } from 'hono/cors'
2025-05-26 19:56:34 +08:00
import { trpcServer } from '@hono/trpc-server'
2025-05-27 08:56:07 +08:00
2025-05-26 19:56:34 +08:00
import Redis from 'ioredis'
import redis from './redis'
import minioClient from './minio'
import { Client } from 'minio'
import oidc from './oidc/provider'
2025-05-27 08:56:07 +08:00
import { appRouter } from './trpc'
2025-05-26 19:56:34 +08:00
type Env = {
2025-05-27 08:56:38 +08:00
Variables: {
redis: Redis;
minio: Client;
};
};
2025-05-26 19:56:34 +08:00
2025-05-27 08:56:38 +08:00
const app = new Hono<Env>();
2025-05-26 19:56:34 +08:00
2025-05-27 08:56:07 +08:00
app.use('*', cors({
origin: 'http://localhost:3001',
credentials: true,
}))
2025-05-26 19:56:34 +08:00
app.use('*', async (c, next) => {
2025-05-27 08:56:38 +08:00
c.set('redis', redis);
c.set('minio', minioClient);
await next();
});
2025-05-26 19:56:34 +08:00
app.use('*', async (c, next) => {
2025-05-27 08:56:38 +08:00
c.set('redis', redis);
await next();
2025-05-26 19:56:34 +08:00
});
2025-05-27 08:56:38 +08:00
app.use(contextStorage());
app.use(prettyJSON()); // With options: prettyJSON({ space: 4 })
app.use(logger());
2025-05-26 19:56:34 +08:00
app.use(
2025-05-27 08:56:38 +08:00
'/trpc/*',
trpcServer({
router: appRouter,
}),
);
2025-05-26 19:56:34 +08:00
2025-05-26 21:45:30 +08:00
app.use('/oidc/*', async (c, next) => {
2025-05-27 08:56:38 +08:00
// @ts-ignore
await oidc.callback(c.req.raw, c.res.raw);
// return void 也可以
return;
});
export default app;