2020-10-27 11:27:17 +01:00
|
|
|
'use strict';
|
|
|
|
|
2020-01-24 15:39:14 +01:00
|
|
|
// eslint-disable-next-line node/no-extraneous-require
|
2021-04-29 13:51:12 +02:00
|
|
|
const loadUtils = require('@strapi/strapi/lib/load');
|
2019-04-09 21:51:28 +02:00
|
|
|
const _ = require('lodash');
|
|
|
|
|
|
|
|
const loadApisGraphqlConfig = appPath =>
|
|
|
|
loadUtils.loadFiles(appPath, 'api/**/config/*.graphql?(.js)');
|
|
|
|
|
|
|
|
const loadPluginsGraphqlConfig = async installedPlugins => {
|
|
|
|
const root = {};
|
|
|
|
|
|
|
|
for (let pluginName of installedPlugins) {
|
2021-04-29 13:51:12 +02:00
|
|
|
const pluginDir = loadUtils.findPackagePath(`@strapi/plugin-${pluginName}`);
|
2019-04-09 21:51:28 +02:00
|
|
|
|
2020-03-02 15:18:08 +01:00
|
|
|
const result = await loadUtils.loadFiles(pluginDir, 'config/*.graphql?(.js)');
|
2020-01-30 10:49:42 +01:00
|
|
|
|
2019-04-09 21:51:28 +02:00
|
|
|
_.set(root, ['plugins', pluginName], result);
|
|
|
|
}
|
2019-06-10 20:37:13 +02:00
|
|
|
|
2019-04-09 21:51:28 +02:00
|
|
|
return root;
|
|
|
|
};
|
|
|
|
|
|
|
|
const loadLocalPluginsGraphqlConfig = async appPath =>
|
|
|
|
loadUtils.loadFiles(appPath, 'plugins/**/config/*.graphql?(.js)');
|
|
|
|
|
2019-06-10 20:37:13 +02:00
|
|
|
const loadExtensions = async appPath =>
|
|
|
|
loadUtils.loadFiles(appPath, 'extensions/**/config/*.graphql?(.js)');
|
|
|
|
|
2019-04-09 21:51:28 +02:00
|
|
|
/**
|
|
|
|
* Loads the graphql config files
|
|
|
|
*/
|
|
|
|
module.exports = async ({ appPath, installedPlugins }) => {
|
2019-06-10 20:37:13 +02:00
|
|
|
const [apis, plugins, localPlugins, extensions] = await Promise.all([
|
2019-04-09 21:51:28 +02:00
|
|
|
loadApisGraphqlConfig(appPath),
|
|
|
|
loadPluginsGraphqlConfig(installedPlugins),
|
|
|
|
loadLocalPluginsGraphqlConfig(appPath),
|
2019-06-10 20:37:13 +02:00
|
|
|
loadExtensions(appPath),
|
2019-04-09 21:51:28 +02:00
|
|
|
]);
|
|
|
|
|
2019-06-10 20:37:13 +02:00
|
|
|
return _.merge({}, apis, plugins, extensions, localPlugins);
|
2019-04-09 21:51:28 +02:00
|
|
|
};
|