WeakCache is like WeakMap but extends support to primitive keys, and with both object keys and object values being weakly referenced.
npm add @wopjs/weak-cache
import { WeakCache } from "@wopjs/weak-cache";
const cache = new WeakCache();
cache.set("key", { value: "value" });
const objectKey = { key: "key" };
cache.set(key, { value: "value" });
console.log(cache.size); // 2
console.log(cache.get("key")); // { value: "value" }
console.log(cache.get(objectKey)); // { value: "value" }
// ...
// gc()
console.log(cache.size); // 0