Memoize functions returning JSON by caching results on disk. Useful for toos relying on APIs.
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