import { IModule, Middleware } from "./types"; import { Controller } from "./controller"; import { Plugin } from "./plugin"; import { Repository } from "./repository"; export class Module implements IModule { public name: string; public controllers: Controller[]; public repositories: Repository[]; public middlewares?: Middleware[]; public plugins?: Plugin[]; constructor( name: string = "Anonymous Controller", controllers: Controller[], repositories: Repository[] = [], middlewares: Middleware[] = [], plugins: Plugin[] = [] ) { this.name = name; this.controllers = controllers; this.middlewares = middlewares; this.repositories = repositories; this.plugins = plugins; } } const defaultControllers = [ new Controller("/", (server, opts, next) => { server.get("/", async () => ({ message: "Welcome to the Iguazu Framework" })); }) ]; const defaultPlugins = [new Plugin(require("fastify-helmet"))]; export const DefaultModule = new Module( "Default", defaultControllers, [], [], defaultPlugins );