import { Peer } from "../peer/peer.ts";import { IServerExtension } from "./extensions/extension.ts";
export class ServerCore { private extensions: IServerExtension[]; private peer: Peer; private isReady: Promise<void>;
constructor(extensions: IServerExtension[]) { this.peer = new Peer();
this.extensions = extensions;
this.isReady = this.registerExtensions();
console.log("Your server is running."); }
private async registerExtensions() { for (const extension of this.extensions) { await extension.register(this.peer); } }
async handler(req: Request): Promise<Response> { await this.isReady;
for (const extension of this.extensions) { const response = await extension.handler(req);
if (response) { return response; } }
return new Response("Not found", { status: 404 }); }}