mirror of
https://github.com/BradNut/graphbrainz
synced 2025-09-08 17:40:32 +00:00
23 lines
589 B
JavaScript
23 lines
589 B
JavaScript
|
|
import DataLoader from 'dataloader'
|
||
|
|
import LRUCache from 'lru-cache'
|
||
|
|
|
||
|
|
const debug = require('debug')('graphbrainz:extensions/mediawiki')
|
||
|
|
|
||
|
|
export default function createLoader (options) {
|
||
|
|
const { client } = options
|
||
|
|
const cache = LRUCache({
|
||
|
|
max: options.cacheSize,
|
||
|
|
maxAge: options.cacheTTL,
|
||
|
|
dispose (key) {
|
||
|
|
debug(`Removed from cache. key=${key}`)
|
||
|
|
}
|
||
|
|
})
|
||
|
|
// Make the cache Map-like.
|
||
|
|
cache.delete = cache.del
|
||
|
|
cache.clear = cache.reset
|
||
|
|
|
||
|
|
return new DataLoader(keys => {
|
||
|
|
return Promise.all(keys.map(key => client.imageInfo(key)))
|
||
|
|
}, { cacheMap: cache })
|
||
|
|
}
|