// ! Imports const express = require("express"); const helmet = require("helmet"); const compression = require("compression"); const cors = require("cors"); const morgan = require("morgan"); const chalk = require("chalk"); const hbs = require("express-handlebars"); const { dev, allMusic, music, port, socials, name } = require("./configs"); const app = express(); app.engine("hbs", hbs({ extname: "hbs", defaultView: "default" })); app.set("view engine", "hbs"); app.set("json spaces", 4); app.use("/assets", express.static("./assets")); app.use(express.json()); app.use( express.urlencoded({ extended: true, }) ); app.use(helmet()); app.use(compression()); app.use(cors()); app.use( morgan((tokens, req, res) => { return [ chalk.hex("#34ace0").bold(`[ ${tokens.method(req, res)} ]`), chalk.hex("#ffb142").bold(tokens.status(req, res)), chalk.hex("#ff5252").bold(req.hostname + tokens.url(req, res)), chalk.hex("#2ed573").bold(tokens["response-time"](req, res) + "ms"), chalk.hex("#f78fb3").bold("@ " + tokens.date(req, res)), ].join(" "); }) ); app.get("/", async (req, res) => { res.render("index", { layout: "index", name, protocol: dev ? `http` : `https`, host: dev ? `${req.hostname}:${port}` : `${req.hostname}`, socials, music, creator: { name: "temere", website: "https://teme.re", }, }); }); // ! SOCIAL LINKS socials.forEach((social) => { app.get(`/${social.name}`, (req, res) => res.redirect(social.link)); }); // ! MUSIC LINKS allMusic.forEach((item) => { app.get(`/${item.id}`, (req, res) => res.redirect(item.link)); }); app.listen(port, () => { console.log(`[ Server ] Listening on ${port}`); });