63 lines
1.4 KiB
JavaScript
63 lines
1.4 KiB
JavaScript
const fs = require("fs");
|
|
const http = require("http");
|
|
const path = require("path");
|
|
|
|
var jsonUpdates = {};
|
|
|
|
const srv = http.createServer(process);
|
|
srv.listen(8000);
|
|
fs.watch(__dirname, trackJSONUpdates);
|
|
|
|
function process(req, res)
|
|
{
|
|
var fileName = "." + decodeURI(req.url);
|
|
if (fileName == "./")
|
|
{
|
|
fileName = "./index.html";
|
|
}
|
|
else if (fileName == "./json.js")
|
|
{
|
|
const content = Object.keys(jsonUpdates).sort().join("\n");
|
|
jsonUpdates = {};
|
|
res.writeHead(200, { "Content-Type": "text/javascript" });
|
|
res.end(content, "utf-8");
|
|
return;
|
|
}
|
|
console.debug("fileName:", fileName);
|
|
const ext = path.extname(fileName);
|
|
var contentType = "text/html";
|
|
switch (ext)
|
|
{
|
|
case ".js":
|
|
contentType = "text/javascript";
|
|
break;
|
|
case "png":
|
|
contentType = "image/png";
|
|
break;
|
|
case "jpg":
|
|
contentType = "image/jpg";
|
|
break;
|
|
}
|
|
fs.readFile(fileName, function(err, content) {
|
|
if (err)
|
|
{
|
|
res.writeHead(500);
|
|
res.end(err.code);
|
|
return;
|
|
}
|
|
res.writeHead(200, { "Content-Type": contentType });
|
|
res.end(content, "utf-8");
|
|
});
|
|
}
|
|
|
|
function trackJSONUpdates(eventName, fileName)
|
|
{
|
|
if (!fileName.endsWith("json.js"))
|
|
{
|
|
return;
|
|
}
|
|
jsonUpdates[fileName] = true;
|
|
console.debug("fileName", fileName);
|
|
}
|
|
|