mirror of
https://github.com/BradNut/graphbrainz
synced 2025-09-08 17:40:32 +00:00
* wip: Modernize dependencies, syntax, imports * Use final release of ava-nock v2 * Update Travis config * Remove Node 13 from test matrix * Replace errorClass with parseErrorMessage in subclasses * define exports, apply updated lint rules * Remove markdown eslint plugin * Update README * v9.0.0-beta.1 * Add gql tag to exports * v9.0.0-beta.2 * Bump ava-nock, add test * Update dataloader loadMany usage * Add modules note to README * Add retry option to got calls
30 lines
776 B
JavaScript
30 lines
776 B
JavaScript
import createDebug from 'debug';
|
|
import DataLoader from 'dataloader';
|
|
import LRUCache from 'lru-cache';
|
|
|
|
const debug = createDebug('graphbrainz:extensions/mediawiki');
|
|
|
|
export default function createLoader(options) {
|
|
const { client } = options;
|
|
const cache = new 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.allSettled(
|
|
keys.map((key) => client.imageInfo(key))
|
|
).then((results) =>
|
|
results.map((result) => result.reason || result.value)
|
|
);
|
|
},
|
|
{ batch: false, cacheMap: cache }
|
|
);
|
|
}
|