graphbrainz/src/context.js
Brian Beck f095cd4de7
Modernize dependencies, syntax, imports (#93)
* 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
2021-04-15 21:34:29 -07:00

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);
}