DenReg/registry/src/http.ts

64 lines
1.5 KiB
TypeScript

// /// <reference path="./types/jsx.d.ts" />
import { ABC, CorsMW, LoggerMW, Path } from "./deps.ts";
import config from "./config.ts";
const port = config?.api?.port || 8000;
const app = new ABC.Application();
app.use(LoggerMW.logger({}));
app.use(CorsMW.cors({}));
// app.static("/public", "./public");
const MIMEDB = {
".css": "text/css",
".json": "application/json",
".js": "application/javascript",
".gz": "applcation/gzip",
".ico": "image/x-icon",
".png": "image/png",
".svg": "image/svg+xml",
".xml": "application/xml",
};
app.get("/public/*path", async (ctx) => {
const filePath = Path.join("./public", ctx.params.path);
console.log(filePath);
ctx.blob(
await Deno.open(filePath, { read: true }),
(MIMEDB as any)[Path.extname(filePath)]
);
});
import api from "./http/api.ts";
api(app.group("/api"));
import raw from "./http/raw.ts";
raw(app.group("/raw"));
import intellisense from "./http/intellisense.ts";
intellisense(app.group("/.well-known"));
import view from "./http/views.ts";
view(app);
// function logNode(router: Node, indent = 0) {
// trees.map((tree) => {
// console.log("Path:", tree.path);
// tree.children?.forEach((node) => logNode(node, indent + 3));
// });
// }
// const trees = Object.values(app.router) as Node[];
// trees.forEach(logNode);
import render from "./renderer.tsx";
app.renderer = {
render: render,
};
app.start({ port });
console.log("Running server at http://0.0.0.0:" + port);
console.log("Open at http://127.0.0.1:" + port);