2023-05-10 22:26:03 +00:00
|
|
|
(function () {
|
|
|
|
var oldRead = require("Storage").readJSON;
|
2023-05-10 22:34:44 +00:00
|
|
|
var oneMonth = 1000 * 86400 * 28;
|
|
|
|
var monthAgo = Date.now() - oneMonth;
|
2023-05-10 22:26:03 +00:00
|
|
|
var cache;
|
|
|
|
var ensureCache = function () {
|
|
|
|
if (!cache) {
|
|
|
|
cache = oldRead("popcon.cache.json", true);
|
|
|
|
if (!cache)
|
|
|
|
cache = {};
|
2023-05-04 21:58:00 +00:00
|
|
|
}
|
2023-05-10 22:26:03 +00:00
|
|
|
return cache;
|
2023-05-04 21:58:00 +00:00
|
|
|
};
|
2023-05-10 22:34:44 +00:00
|
|
|
var trimCache = function (cache) {
|
|
|
|
var threeMonthsBack = Date.now() - oneMonth * 3;
|
2023-05-07 22:51:38 +00:00
|
|
|
var del = [];
|
|
|
|
for (var k in cache)
|
|
|
|
if (cache[k].last < threeMonthsBack)
|
|
|
|
del.push(k);
|
|
|
|
for (var _i = 0, del_1 = del; _i < del_1.length; _i++) {
|
|
|
|
var k = del_1[_i];
|
|
|
|
delete cache[k];
|
|
|
|
}
|
|
|
|
};
|
2023-05-10 22:34:44 +00:00
|
|
|
var saveCache = function (cache, orderChanged) {
|
|
|
|
trimCache(cache);
|
2023-05-10 22:26:03 +00:00
|
|
|
require("Storage").writeJSON("popcon.cache.json", cache);
|
2023-05-04 21:58:00 +00:00
|
|
|
if (orderChanged) {
|
2023-05-10 22:26:03 +00:00
|
|
|
var info = oldRead("popcon.info", true);
|
2023-05-04 21:58:00 +00:00
|
|
|
info.cacheBuster = !info.cacheBuster;
|
|
|
|
require("Storage").writeJSON("popcon.info", info);
|
|
|
|
}
|
|
|
|
};
|
2023-05-10 22:26:03 +00:00
|
|
|
var sortCache = function () {
|
|
|
|
var ents = Object.values(cache);
|
2023-05-04 21:58:00 +00:00
|
|
|
ents.sort(function (a, b) {
|
|
|
|
var n;
|
2023-05-10 22:26:03 +00:00
|
|
|
var am = (a.last > monthAgo);
|
|
|
|
var bm = (b.last > monthAgo);
|
2023-05-04 21:58:00 +00:00
|
|
|
n = bm - am;
|
|
|
|
if (n)
|
|
|
|
return n;
|
|
|
|
n = b.pop - a.pop;
|
|
|
|
if (n)
|
|
|
|
return n;
|
|
|
|
n = b.last - a.last;
|
|
|
|
if (n)
|
|
|
|
return n;
|
|
|
|
if (a.name < b.name)
|
|
|
|
return -1;
|
|
|
|
if (a.name > b.name)
|
|
|
|
return 1;
|
|
|
|
return 0;
|
2023-05-02 22:08:58 +00:00
|
|
|
});
|
2023-05-04 21:58:00 +00:00
|
|
|
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;
|
2023-05-10 22:26:03 +00:00
|
|
|
var j = oldRead(fname, skipExceptions);
|
2023-05-04 21:58:00 +00:00
|
|
|
if (/\.info$/.test(fname)) {
|
2023-05-10 22:26:03 +00:00
|
|
|
var cache_1 = ensureCache();
|
2023-05-04 21:58:00 +00:00
|
|
|
var so = void 0;
|
2023-05-10 22:26:03 +00:00
|
|
|
if (j.src && (so = (_a = cache_1[j.src]) === null || _a === void 0 ? void 0 : _a.sortorder) != null)
|
2023-05-04 21:58:00 +00:00
|
|
|
j.sortorder = so;
|
|
|
|
else
|
|
|
|
j.sortorder = 99;
|
|
|
|
}
|
|
|
|
return j;
|
|
|
|
});
|
2023-05-10 22:26:03 +00:00
|
|
|
var oldLoad = load;
|
2023-05-04 21:58:00 +00:00
|
|
|
global.load = function (src) {
|
|
|
|
if (src) {
|
2023-05-10 22:26:03 +00:00
|
|
|
var cache_2 = ensureCache();
|
|
|
|
var ent = cache_2[src] || (cache_2[src] = {
|
2023-05-04 21:58:00 +00:00
|
|
|
pop: 0,
|
|
|
|
last: 0,
|
|
|
|
sortorder: -10,
|
|
|
|
});
|
|
|
|
ent.pop++;
|
|
|
|
ent.last = Date.now();
|
2023-05-10 22:26:03 +00:00
|
|
|
var orderChanged = sortCache();
|
2023-05-10 22:34:44 +00:00
|
|
|
saveCache(cache_2, orderChanged);
|
2023-05-04 21:58:00 +00:00
|
|
|
}
|
2023-05-10 22:26:03 +00:00
|
|
|
return oldLoad(src);
|
2023-05-04 21:58:00 +00:00
|
|
|
};
|
2023-05-10 22:26:03 +00:00
|
|
|
})();
|