import { services } from "./services.ts"; import { DenoRequest, massageMethod,DenoResponse, Method, ProcessedRoute, Request, Route, } from "./types.ts"; import { routes } from "./routes.ts"; services.logging.log({ source: "logging", text: ["1"] }); const processedRoutes: ProcessedRoute[] = routes.map( (route: Route, _idx: number, _allRoutes: Route[]) => { const pattern: URLPattern = new URLPattern({ pathname: route.path }); const method: Method = route.method; const handler = async (denoRequest: DenoRequest) => { const req: Request = { pattern: route.pattern, path: denoRequest.path, method: massageMethod(denoRequest.method), parameters: { one: 1, two: 2 }, denoRequest, }; return route.handler(req); }; const retval: ProcessedRoute = { pattern, method, handler }; return retval; }, ); async function handler(req: DenoRequest): Promise { for (const [idx, pr] of processedRoutes.entries()) { const match = pr.pattern.exec(req.url); if (match) { const resp = await pr.handler(req); return new globalThis.Response(resp.result); } } return new globalThis.Response("not found", { status: 404 }); } Deno.serve(handler);