Memoize functions returning JSON by caching results to disk. Useful for applications depending on external resources.
To install:
npm install memo-json
# or
yarn add memo-json
// src/data.ts
import { memo } from 'memo-json'
const getDataMemo = memo(function getData(param: string) { ... })
await getDataMemo('a') // Access remote
await getDataMemo('a') // 🥶 Hit cache!
await getDataMemo('b') // Access remote again. A cache key includes function arguments.
The first run of the above code will generate cache like below being reused in the subsequent calls.
# ${process.cwd()}/${functionName}-${paramHash}.json
.memo/getData-4e6c99.json
.memo/getData-dee827.json
You can own your cusomized memo()
funciton by createMemo(opts)
.
Available options:
dir
- Optional string.".memo"
by default.enable
- Optional boolean.true
by default.
Cusomization example:
import { createMemo } from "memo-json";
const memo = createMemo({
dir: "__generated",
enable: process.env.NODE_ENV !== "production",
});
const getDataMemo = memo(function getData() { ... })
Debug logs are available when you pass a DEBUG
environment variable.
DEBUG=memo-json ts-node your-script.ts
# memo-json Cached .memo/xxx-5c9359.json +0ms
Apache 2.0
Soichi Takamura @piglovesyou