mirror of
https://github.com/BradNut/graphbrainz
synced 2025-09-08 17:40:32 +00:00
* Add a schema extension API and several extensions * Update graphql-markdown to use new diffSchema function * Update Node support
22 lines
589 B
JavaScript
22 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 })
|
|
}
|