mirror of
https://github.com/wassname/talk.git
synced 2026-06-28 16:31:31 +08:00
48 lines
1.1 KiB
JavaScript
48 lines
1.1 KiB
JavaScript
const _ = require('lodash');
|
|
const debug = require('debug')('talk:graph:loaders');
|
|
|
|
const Actions = require('./actions');
|
|
const Assets = require('./assets');
|
|
const Comments = require('./comments');
|
|
const Metrics = require('./metrics');
|
|
const Settings = require('./settings');
|
|
const Tags = require('./tags');
|
|
const Users = require('./users');
|
|
|
|
const plugins = require('../../services/plugins');
|
|
|
|
let loaders = [
|
|
|
|
// Load the core loaders.
|
|
Actions,
|
|
Assets,
|
|
Comments,
|
|
Metrics,
|
|
Settings,
|
|
Tags,
|
|
Users,
|
|
|
|
// Load the plugin loaders from the manager.
|
|
...plugins
|
|
.get('server', 'loaders').map(({plugin, loaders}) => {
|
|
debug(`added plugin '${plugin.name}'`);
|
|
|
|
return loaders;
|
|
})
|
|
];
|
|
|
|
/**
|
|
* Creates a set of loaders based on a GraphQL context.
|
|
* @param {Object} context the context of the GraphQL request
|
|
* @return {Object} object of loaders
|
|
*/
|
|
module.exports = (context) => {
|
|
|
|
// We need to return an object to be accessed.
|
|
return _.merge(...loaders.map((loaders) => {
|
|
|
|
// Each loader is a function which takes the context.
|
|
return loaders(context);
|
|
}));
|
|
};
|