import http from 'http' import path from 'path' import fs from 'fs-extra' import connect from 'connect' import { QRequest } from '../../../types/server' import { QRequestController } from './../../modules/RequestController' const controllerFiles = fs .readdirSync(path.resolve(__dirname, '..', 'controllers')) .filter((f: string) => f.includes('.ts')) .map((f: string) => f.slice(-0, -3)) const controllers = controllerFiles.map((file: string) => { const controllerPromise = import( path.resolve(__dirname, '..', 'controllers', file) ) return controllerPromise }) const customControllerFiles = fs .readdirSync(path.resolve(process.cwd(), 'api')) .filter((f: string) => f.includes('.ts')) .map((f: string) => f.slice(-0, -3)) const customControllers = customControllerFiles.map((file: string) => { const controllerPromise = import(path.resolve(process.cwd(), 'api', file)) return controllerPromise }) interface Routes { [index: string]: Promise<{ default: QRequestController }> } const routes: Routes = {} for (let index = 0; index < controllerFiles.length; index++) { const controllerFile = controllerFiles[index] routes[controllerFile] = controllers[index] } for (let index = 0; index < customControllerFiles.length; index++) { const controllerFile = customControllerFiles[index] routes[controllerFile] = customControllers[index] } const Router = { routes, } export function useRouter( req: QRequest, __: http.ServerResponse, next: connect.NextFunction ) { req.Router = Router next() }