TofuStack/src/lib/server/api/index.ts

42 lines
2 KiB
TypeScript
Raw Normal View History

2024-05-25 06:02:26 +00:00
import 'reflect-metadata';
import { Hono } from 'hono';
import { hc } from 'hono/client';
import { container } from 'tsyringe';
import { IamController } from './controllers/iam.controller';
2024-09-02 04:36:41 +00:00
import { config, env } from './common/config';
2024-08-07 15:13:36 +00:00
import { validateAuthSession, verifyOrigin } from './middlewares/auth.middleware';
2024-08-31 17:54:31 +00:00
import { AuthCleanupJobs } from './jobs/auth-cleanup.job';
2024-08-31 17:54:31 +00:00
/* -------------------------------------------------------------------------- */
/* App */
/* -------------------------------------------------------------------------- */
export const app = new Hono().basePath('/api');
2024-05-25 06:02:26 +00:00
2024-08-31 17:54:31 +00:00
/* -------------------------------------------------------------------------- */
/* Global Middlewares */
/* -------------------------------------------------------------------------- */
2024-06-25 02:45:00 +00:00
app.use(verifyOrigin).use(validateAuthSession);
2024-08-31 17:54:31 +00:00
/* -------------------------------------------------------------------------- */
/* Routes */
/* -------------------------------------------------------------------------- */
2024-05-25 06:02:26 +00:00
const routes = app
.route('/iam', container.resolve(IamController).routes())
2024-06-25 02:45:00 +00:00
2024-08-31 17:54:31 +00:00
/* -------------------------------------------------------------------------- */
/* Cron Jobs */
/* -------------------------------------------------------------------------- */
container.resolve(AuthCleanupJobs).deleteStaleEmailVerificationRequests();
container.resolve(AuthCleanupJobs).deleteStaleLoginRequests();
2024-05-25 06:02:26 +00:00
/* -------------------------------------------------------------------------- */
/* Exports */
/* -------------------------------------------------------------------------- */
2024-09-02 04:36:41 +00:00
const rpc = hc<typeof routes>(config.api.origin);
2024-05-25 06:02:26 +00:00
export type ApiClient = typeof rpc;
export type ApiRoutes = typeof routes;
2024-08-07 15:13:36 +00:00
2024-08-31 17:54:31 +00:00