UNPKG

1.27 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.extendContext = extendContext;
7exports.createContext = createContext;
8
9var _loaders = require('./loaders');
10
11var _loaders2 = _interopRequireDefault(_loaders);
12
13var _extensions = require('./extensions');
14
15function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
17const debug = require('debug')('graphbrainz:context');
18
19function extendContext(extension, context, options) {
20 if (extension.extendContext) {
21 if (typeof extension.extendContext === 'function') {
22 debug(`Extending context via a function from the “${extension.name}” extension.`);
23 context = extension.extendContext(context, options);
24 } else {
25 throw new Error(`Extension “${extension.name}” contains an invalid \`extendContext\` ` + `value: ${extension.extendContext}`);
26 }
27 }
28 return context;
29}
30
31function createContext(options = {}) {
32 const { client } = options;
33 const loaders = (0, _loaders2.default)(client);
34 const context = { client, loaders };
35 const { extensions = [] } = options;
36 return extensions.reduce((context, extension) => {
37 return extendContext((0, _extensions.loadExtension)(extension), context, options);
38 }, context);
39}
\No newline at end of file