rmmbr
gives you a decorator you can place around async functions to have them be cached, locally or in the cloud.
Usage:
npm i rmmbr
import { cloudCache, localCache } from "rmmbr";
const cacher = localCache({ id: "some-id" });
let nCalled = 0;
const f = (x: number) => {
nCalled++;
return Promise.resolve(x);
};
const fCached = cacher(f);
await fCached(3);
await fCached(3);
// nCalled is 1 here
The local cache stores data in a text file under a .rmmbr
directory.
There is also a memCache
, if you are feeling nostalgic ๐ and just want to store stuff in memory.
If you want to persist across devices, we offer a free to use cloud service:
const cacher = cloudCache({
token: "service-token",
url: "https://uriva-rmmbr.deno.dev",
ttl: 60 * 60 * 24, // Values will expire after one day, omission of this field implies max.
});
If your data is sensitive, you can encrypt it by adding an encryptionKey
parameter:
const cacher = cloudCache({
token: "service-token",
url: "https://uriva-rmmbr.deno.dev",
encryptionKey: "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
});
Note that this is implemented as e2e encryption.
At the moment this service is with no guarantees, but we are working on a production tier as well. Please contact us or post an issue if you want to try it out!
We also accept issues for feature requests ๐ฉโ๐ง
pip install rmmbr
The python api mimicks the js one, with exported decorators named mem_cache
, local_cache
and cloud_cache
.