mirror of
https://github.com/BradNut/TofuStack
synced 2025-09-08 17:40:26 +00:00
35 lines
1.8 KiB
TypeScript
35 lines
1.8 KiB
TypeScript
|
|
import 'reflect-metadata';
|
||
|
|
import './providers';
|
||
|
|
import { Hono } from 'hono';
|
||
|
|
import { hc } from 'hono/client';
|
||
|
|
import { container } from 'tsyringe';
|
||
|
|
import { processAuth } from './middleware/process-auth.middleware';
|
||
|
|
import { IamController } from './controllers/iam.controller';
|
||
|
|
|
||
|
|
/* -------------------------------------------------------------------------- */
|
||
|
|
/* API */
|
||
|
|
/* -------------------------------------------------------------------------- */
|
||
|
|
const app = new Hono().basePath('/api');
|
||
|
|
|
||
|
|
/* -------------------------------------------------------------------------- */
|
||
|
|
/* Global Middlewares */
|
||
|
|
/* -------------------------------------------------------------------------- */
|
||
|
|
app.use(processAuth); // all this does is set the session and user variables in the request object
|
||
|
|
/* -------------------------------------------------------------------------- */
|
||
|
|
/* Routes */
|
||
|
|
/* -------------------------------------------------------------------------- */
|
||
|
|
const routes = app
|
||
|
|
.route('/iam', container.resolve(IamController).registerEmail())
|
||
|
|
.route('/iam', container.resolve(IamController).signInEmail())
|
||
|
|
.route('/iam', container.resolve(IamController).getAuthedUser())
|
||
|
|
.route('/iam', container.resolve(IamController).updateEmail())
|
||
|
|
.route('/iam', container.resolve(IamController).verifyEmail());
|
||
|
|
|
||
|
|
/* -------------------------------------------------------------------------- */
|
||
|
|
/* Exports */
|
||
|
|
/* -------------------------------------------------------------------------- */
|
||
|
|
export const rpc = hc<typeof routes>('http://localhost:5173');
|
||
|
|
export type ApiClient = typeof rpc;
|
||
|
|
export type ApiRoutes = typeof routes;
|
||
|
|
export { app };
|