Current section

Files

Jump to
spellweaver priv bun node_modules cspell-lib dist lib util memorizerWeak.js
Raw

priv/bun/node_modules/cspell-lib/dist/lib/util/memorizerWeak.js

// prettier-ignore
export function memorizerWeak(fn) {
const r = {};
function find(p) {
let n = r;
for (const k of p) {
if (!n)
break;
n = n.c?.get(k);
}
return n;
}
function set(p, v) {
let n = r;
for (const k of p) {
const c = n.c?.get(k);
if (c) {
n = c;
continue;
}
const r = {};
n.c = n.c || new WeakMap();
n.c.set(k, r);
n = r;
}
n.v = v;
}
return (...p) => {
const f = find(p);
if (f && 'v' in f) {
return f.v;
}
const v = fn(...p);
set(p, v);
return v;
};
}
//# sourceMappingURL=memorizerWeak.js.map