64 lines
1.5 KiB
TypeScript
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);
|