Skip to main content
Module

x/espresso/application.ts

Minimal web framework for Deno
Latest
File
import { serve } from "https://deno.land/std@v0.58.0/http/server.ts";import { Context } from "./context.ts";import { Router } from "./router/router.ts";import { Middleware } from "./middlewares/middleware.ts";
type ServerConfig = { port?: number; log?: boolean;};
export class Application { private log: boolean; private port: number = 3000; private server: any; private router: any; private middlewares: Middleware[] = []; constructor(serverConfig?: ServerConfig) { this.port = serverConfig?.port || 80; this.log = serverConfig?.log ? true : false; this.router = new Router(); }
start(port: number = this.port) { this.server = serve({ port }); if (this.log) console.log(`Server Listening on Port ${port}`); this.listen(); }
use(...middlewares: Middleware[]) { this.middlewares.push(...middlewares); }
get(...params: any) { this.router.get(...params); return this; }
post(...params: any) { this.router.post(...params); return this; }
put(...params: any) { this.router.put(...params); return this; }
delete(...params: any) { this.router.delete(...params); return this; }
private async listen() { for await (const request of this.server) { for (const middleware of this.middlewares) { await middleware(new Context(request)); } this.router.handleRequest(request, this.log); } }}