popcon: narrow variable scope, don't pollute global namespace

master
Rob Pilling 2023-05-04 22:58:00 +01:00
parent 945c7ca70a
commit 623b11b518
2 changed files with 82 additions and 79 deletions

View File

@ -1,79 +1,81 @@
var oldRead = require("Storage").readJSON; {
var monthAgo = Date.now() - 1000 * 86400 * 28; var oldRead_1 = require("Storage").readJSON;
var cache; var monthAgo_1 = Date.now() - 1000 * 86400 * 28;
var ensureCache = function () { var cache_1;
if (!cache) { var ensureCache_1 = function () {
cache = oldRead("popcon.cache.json", true); if (!cache_1) {
if (!cache) cache_1 = oldRead_1("popcon.cache.json", true);
cache = {}; if (!cache_1)
} cache_1 = {};
return cache; }
}; return cache_1;
var saveCache = function (orderChanged) { };
require("Storage").writeJSON("popcon.cache.json", cache); var saveCache_1 = function (orderChanged) {
if (orderChanged) { require("Storage").writeJSON("popcon.cache.json", cache_1);
var info = oldRead("popcon.info", true); if (orderChanged) {
info.cacheBuster = !info.cacheBuster; var info = oldRead_1("popcon.info", true);
require("Storage").writeJSON("popcon.info", info); info.cacheBuster = !info.cacheBuster;
} require("Storage").writeJSON("popcon.info", info);
}; }
var sortCache = function () { };
var ents = Object.values(cache); var sortCache_1 = function () {
ents.sort(function (a, b) { var ents = Object.values(cache_1);
var n; ents.sort(function (a, b) {
var am = (a.last > monthAgo); var n;
var bm = (b.last > monthAgo); var am = (a.last > monthAgo_1);
n = bm - am; var bm = (b.last > monthAgo_1);
if (n) n = bm - am;
return n; if (n)
n = b.pop - a.pop; return n;
if (n) n = b.pop - a.pop;
return n; if (n)
n = b.last - a.last; return n;
if (n) n = b.last - a.last;
return n; if (n)
if (a.name < b.name) return n;
return -1; if (a.name < b.name)
if (a.name > b.name) return -1;
return 1; if (a.name > b.name)
return 0; return 1;
}); return 0;
var i = 0;
var orderChanged = false;
for (var _i = 0, ents_1 = ents; _i < ents_1.length; _i++) {
var ent = ents_1[_i];
if (ent.sortorder !== i)
orderChanged = true;
ent.sortorder = i++;
}
return orderChanged;
};
require("Storage").readJSON = (function (fname, skipExceptions) {
var _a;
var j = oldRead(fname, skipExceptions);
if (/\.info$/.test(fname)) {
var cache_1 = ensureCache();
var so = void 0;
if (j.src && (so = (_a = cache_1[j.src]) === null || _a === void 0 ? void 0 : _a.sortorder) != null)
j.sortorder = so;
else
j.sortorder = 99;
}
return j;
});
var oldLoad = load;
global.load = function (src) {
if (src) {
var cache_2 = ensureCache();
var ent = cache_2[src] || (cache_2[src] = {
pop: 0,
last: 0,
sortorder: -10,
}); });
ent.pop++; var i = 0;
ent.last = Date.now(); var orderChanged = false;
var orderChanged = sortCache(); for (var _i = 0, ents_1 = ents; _i < ents_1.length; _i++) {
saveCache(orderChanged); var ent = ents_1[_i];
} if (ent.sortorder !== i)
return oldLoad(src); orderChanged = true;
}; ent.sortorder = i++;
}
return orderChanged;
};
require("Storage").readJSON = (function (fname, skipExceptions) {
var _a;
var j = oldRead_1(fname, skipExceptions);
if (/\.info$/.test(fname)) {
var cache_2 = ensureCache_1();
var so = void 0;
if (j.src && (so = (_a = cache_2[j.src]) === null || _a === void 0 ? void 0 : _a.sortorder) != null)
j.sortorder = so;
else
j.sortorder = 99;
}
return j;
});
var oldLoad_1 = load;
global.load = function (src) {
if (src) {
var cache_3 = ensureCache_1();
var ent = cache_3[src] || (cache_3[src] = {
pop: 0,
last: 0,
sortorder: -10,
});
ent.pop++;
ent.last = Date.now();
var orderChanged = sortCache_1();
saveCache_1(orderChanged);
}
return oldLoad_1(src);
};
}

View File

@ -1,4 +1,4 @@
// TODO: fastload {
type Timestamp = number; type Timestamp = number;
const oldRead = require("Storage").readJSON; const oldRead = require("Storage").readJSON;
@ -99,3 +99,4 @@ global.load = (src: string) => {
return oldLoad(src); return oldLoad(src);
}; };
}