mirror of
https://github.com/BradNut/TofuStack
synced 2025-09-08 17:40:26 +00:00
46 lines
2.6 KiB
TypeScript
46 lines
2.6 KiB
TypeScript
import 'reflect-metadata';
|
|
import './providers';
|
|
import { Hono } from 'hono';
|
|
import { hc } from 'hono/client';
|
|
import { container } from 'tsyringe';
|
|
import { validateAuthSession, verifyOrigin } from './middleware/auth.middleware';
|
|
import { IamController } from './controllers/iam.controller';
|
|
import { config } from './common/config';
|
|
import { UsersController } from './controllers/users.controller';
|
|
|
|
/* -------------------------------------------------------------------------- */
|
|
/* Client Request */
|
|
/* ------------------------------------ ▲ ----------------------------------- */
|
|
/* ------------------------------------ | ----------------------------------- */
|
|
/* ------------------------------------ ▼ ----------------------------------- */
|
|
/* Controller */
|
|
/* ---------------------------- (Request Routing) --------------------------- */
|
|
/* ------------------------------------ ▲ ----------------------------------- */
|
|
/* ------------------------------------ | ----------------------------------- */
|
|
/* ------------------------------------ ▼ ----------------------------------- */
|
|
/* Service */
|
|
/* ---------------------------- (Business logic) ---------------------------- */
|
|
/* ------------------------------------ ▲ ----------------------------------- */
|
|
/* ------------------------------------ | ----------------------------------- */
|
|
/* ------------------------------------ ▼ ----------------------------------- */
|
|
/* Repository */
|
|
/* ----------------------------- (Data storage) ----------------------------- */
|
|
/* -------------------------------------------------------------------------- */
|
|
|
|
/* ----------------------------------- Api ---------------------------------- */
|
|
const app = new Hono().basePath('/api');
|
|
|
|
/* --------------------------- Global Middlewares --------------------------- */
|
|
app.use(verifyOrigin).use(validateAuthSession);
|
|
|
|
/* --------------------------------- Routes --------------------------------- */
|
|
const routes = app
|
|
.route('/iam', container.resolve(IamController).routes())
|
|
|
|
/* -------------------------------------------------------------------------- */
|
|
/* Exports */
|
|
/* -------------------------------------------------------------------------- */
|
|
export const rpc = hc<typeof routes>(config.ORIGIN);
|
|
export type ApiClient = typeof rpc;
|
|
export type ApiRoutes = typeof routes;
|
|
export { app };
|