import http from "http"; import url from "url"; import querystring from "querystring"; import cfg from "../config.json"; import router from "./inc/router.mjs"; // routes import "./inc/routes/index.mjs"; import "./inc/routes/api.mjs"; import "./inc/routes/static.mjs"; http.createServer(async (req, res, r) => { const t_start = process.hrtime(); req.url = url.parse(req.url.replace(/(?!^.)(\/+)?$/, '')); req.url.split = req.url.pathname.split("/").slice(1); req.url.qs = querystring.parse(req.url.query); req.post = new Promise((resolve, _, data = "") => req .on("data", d => void (data += d)) .on("end", () => void resolve(Object.fromEntries(Object.entries(querystring.parse(data)).map(([k, v]) => [k, decodeURIComponent(v)]))))); res.reply = ({ code = 200, type = "text/html", body }) => res.writeHead(code, { "Content-Type": `${type}; charset=utf-8` }).end(body); res.redirect = target => res.writeHead(301, { "Cache-Control": "no-cache, public", "Location": target }).end(); !(r = router.routes.getRoute(req.url.pathname, req.method)) ? res.writeHead(404).end(`404 - ${req.url.pathname}`) : await r(req, res); console.log(`[${(new Date()).toLocaleTimeString()}] ${(process.hrtime(t_start)[1] / 1e5).toFixed(2)}ms\t${res.statusCode} ${req.method}\t${req.url.pathname}`); }).listen(cfg.websrv.port, () => setTimeout(() => { console.log(`f0ck is listening on port ${cfg.websrv.port}.`); }, 500));