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
949 B
JavaScript
30 lines
949 B
JavaScript
import createLoaders from './loaders.js';
|
|
import createDebug from 'debug';
|
|
|
|
const debug = createDebug('graphbrainz:context');
|
|
|
|
export function extendContext(extension, context, options) {
|
|
if (extension.extendContext) {
|
|
if (typeof extension.extendContext === 'function') {
|
|
debug(
|
|
`Extending context via a function from the “${extension.name}” extension.`
|
|
);
|
|
context = extension.extendContext(context, options);
|
|
} else {
|
|
throw new Error(
|
|
`Extension “${extension.name}” contains an invalid \`extendContext\` ` +
|
|
`value: ${extension.extendContext}`
|
|
);
|
|
}
|
|
}
|
|
return context;
|
|
}
|
|
|
|
export function createContext(options = {}) {
|
|
const { client, extensions = [] } = options;
|
|
const loaders = createLoaders(client);
|
|
let context = { client, loaders };
|
|
return extensions.reduce((context, extension) => {
|
|
return extendContext(extension, context, options);
|
|
}, context);
|
|
}
|