This is in order to be able to support UPPER() and LOWER() functions in queries which are needed for case-insensitive search.
30 lines
538 B
JavaScript
30 lines
538 B
JavaScript
"use strict";
|
|
|
|
let cache1 = new WeakMap();
|
|
let cache2 = new WeakMap();
|
|
|
|
function get(func, k) {
|
|
let c1 = cache1.get(func);
|
|
if (!c1) cache1.set(func, (c1 = new Map()));
|
|
if (c1.has(k)) return c1.get(k);
|
|
const c2 = cache2.get(func);
|
|
const v = c2 && c2.has(k) ? c2.get(k) : func(k);
|
|
c1.set(k, v);
|
|
return v;
|
|
}
|
|
|
|
function getter(func) {
|
|
return k => get(func, k);
|
|
}
|
|
|
|
function purge() {
|
|
cache2 = cache1;
|
|
cache1 = new WeakMap();
|
|
}
|
|
|
|
setInterval(purge, 120000);
|
|
|
|
exports.get = get;
|
|
exports.getter = getter;
|
|
exports.purge = purge;
|