A simple cache system for a single user request, built on the same concepts of data loader.
npm i @npmteam2024/nesciunt-tempore-occaecati
const { Factory } = require('.')
const factory = new Factory()
factory.add('fetchSomething', {
// cache by default, set to false to just do batching
cache: true
}, async (queries, context) => {
console.log(queries)
// [ 42, 24 ]
console.log(context)
// { some: 'data' }
return queries.map((k) => {
return { k }
})
})
async function run () {
const context = {
some: 'data'
}
const cache = factory.create(context)
const p1 = cache.fetchSomething(42)
const p2 = cache.fetchSomething(24)
const res = await Promise.all([p1, p2])
console.log(res)
// [
// { k: 42 },
// { k: 24 }
// ]
}
run().catch(console.log)
If the query parameter is an object, its cache key will be generated using safe-stable-stringify.
MIT