import * as http from "cloudly-http" import * as cloudlyRouter from "cloudly-router" import { Endpoint } from "./Endpoint" export class Router { origin: string[] allowedHeaders: string[] private readonly backend: cloudlyRouter.Router constructor(...alternatePrefix: string[]) { this.backend = new cloudlyRouter.Router(...alternatePrefix) } add(method: http.Method | http.Method[], pattern: URLPattern | string, handler: cloudlyRouter.Handler): void add(endpoint: Endpoint): void add( method: http.Method | http.Method[] | Endpoint, pattern?: URLPattern | string, handler?: cloudlyRouter.Handler ): void { if ((Array.isArray(method) || http.Method.is(method)) && pattern && handler) this.backend.add(method, pattern, handler) else if (typeof method == "object" && !Array.isArray(method)) this.backend.add(...Endpoint.toHandler(method)) } handle(request: http.Request.Like | http.Request, context: T): Promise { return this.backend.handle(request, context) } }