var DB = require("./js/db"); var express = require("express"); var fs = require("fs"); var WebEvents = require("webevents"); var db = DB("db.json"); var conf = JSON.parse(fs.readFileSync("conf.json")); var events = WebEvents(); var app = express(); app.use(express.static("web")); app.listen(conf.port); app.post("/webevents/*", events.handle); app.get("/client.js", (req, res) => { fs.createReadStream("node_modules/webevents/client.js") .pipe(res) .on("error", err => res.end(err.toString())); }); app.get("/list", (req, res) => { res.json(db.list); }); app.get("/words", (req, res) => { res.json(db.words); }); app.post("/remove/:index", (req, res) => { res.json({}); if (!req.params.index) return; delete db.list[req.params.index]; events.emit("remove", { index: req.params.index }); // Clear the entire list array if there are no elements in it var containsElems = false; for (var i in db.list) { if (db.list[i] != null) { containsElems = true; break; } } if (!containsElems) { db.list = []; } db.flush(); }); app.post("/add/:name", (req, res) => { res.json({}); if (!req.params.name) return; var name = req.params.name.toLowerCase().trim(); db.list.push(name); events.emit("add", { name: name, index: db.list.length - 1 }); var word = db.words.filter(w => w.name === name)[0]; if (word) word.count += 1; else db.words.push({ name: name, count: 1 }); db.flush(); }); console.log("Server listening on port "+conf.port);