diff --git a/packages/plugins/graphql/server/bootstrap.js b/packages/plugins/graphql/server/bootstrap.js index f93fdd917e..3823d7928a 100644 --- a/packages/plugins/graphql/server/bootstrap.js +++ b/packages/plugins/graphql/server/bootstrap.js @@ -31,9 +31,9 @@ module.exports = async ({ strapi }) => { return; } - const { config } = strapi.plugin('graphql').service('utils'); + const { config } = strapi.plugin('graphql'); - const path = config.endpoint; + const path = config('endpoint'); const defaultServerConfig = { // Schema @@ -46,7 +46,7 @@ module.exports = async ({ strapi }) => { }), // Validation - validationRules: [depthLimit(config.depthLimit)], + validationRules: [depthLimit(config('depthLimit'))], // Errors formatError: formatGraphqlError, @@ -63,10 +63,10 @@ module.exports = async ({ strapi }) => { ], }; - const serverConfig = merge(defaultServerConfig, config.apolloServer); + const serverConfig = merge(defaultServerConfig, config('apolloServer')); // Handle subscriptions - if (config.subscriptions) { + if (config('subscriptions')) { const subscriptionServer = SubscriptionServer.create( { schema, execute, subscribe }, { server: strapi.server.httpServer, path } diff --git a/packages/plugins/graphql/server/config/default-config.js b/packages/plugins/graphql/server/config/default-config.js new file mode 100644 index 0000000000..358e9c98f9 --- /dev/null +++ b/packages/plugins/graphql/server/config/default-config.js @@ -0,0 +1,13 @@ +'use strict'; + +module.exports = { + shadowCRUD: true, + + endpoint: '/graphql', + + subscriptions: false, + + maxLimit: -1, + + apolloServer: {}, +}; diff --git a/packages/plugins/graphql/server/config/index.js b/packages/plugins/graphql/server/config/index.js new file mode 100644 index 0000000000..c3c3b4c16c --- /dev/null +++ b/packages/plugins/graphql/server/config/index.js @@ -0,0 +1,7 @@ +'use strict'; + +const defaultConfig = require('./default-config'); + +module.exports = { + default: defaultConfig, +}; diff --git a/packages/plugins/graphql/server/services/content-api/index.js b/packages/plugins/graphql/server/services/content-api/index.js index db25d0d256..444a14317b 100644 --- a/packages/plugins/graphql/server/services/content-api/index.js +++ b/packages/plugins/graphql/server/services/content-api/index.js @@ -27,7 +27,7 @@ const { module.exports = ({ strapi }) => { const { service: getGraphQLService } = strapi.plugin('graphql'); - const { config } = getGraphQLService('utils'); + const { config } = strapi.plugin('graphql'); const { KINDS, GENERIC_MORPH_TYPENAME } = getGraphQLService('constants'); const extensionService = getGraphQLService('extension'); @@ -38,7 +38,7 @@ module.exports = ({ strapi }) => { let builders; const buildSchema = () => { - const isShadowCRUDEnabled = !!config.shadowCRUD; + const isShadowCRUDEnabled = !!config('shadowCRUD'); // Create a new empty type registry registry = getGraphQLService('type-registry').new(); diff --git a/packages/plugins/graphql/server/services/content-api/wrap-resolvers.js b/packages/plugins/graphql/server/services/content-api/wrap-resolvers.js index 8efb1fb968..673152c973 100644 --- a/packages/plugins/graphql/server/services/content-api/wrap-resolvers.js +++ b/packages/plugins/graphql/server/services/content-api/wrap-resolvers.js @@ -25,7 +25,7 @@ const introspectionQueries = [ * @return {GraphQLSchema} */ const wrapResolvers = ({ schema, strapi, extension = {} }) => { - const { config: graphQLConfig } = strapi.plugin('graphql').service('utils'); + const { config: graphQLConfig } = strapi.plugin('graphql'); // Get all the registered resolvers configuration const { resolversConfig = {} } = extension; @@ -34,7 +34,7 @@ const wrapResolvers = ({ schema, strapi, extension = {} }) => { const typeMap = schema.getTypeMap(); - if (!graphQLConfig.subscriptions) { + if (!graphQLConfig('subscriptions')) { delete typeMap.Subscription; } diff --git a/packages/plugins/graphql/server/services/utils/config.js b/packages/plugins/graphql/server/services/utils/config.js deleted file mode 100644 index 2fb1b66547..0000000000 --- a/packages/plugins/graphql/server/services/utils/config.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -/** - * GraphQL config helper with consistent defaults values - */ -module.exports = ({ strapi }) => { - const { config: graphQLConfig } = strapi.plugin('graphql'); - - return { - get shadowCRUD() { - return graphQLConfig('shadowCRUD', true); - }, - - get subscriptions() { - return graphQLConfig('subscriptions', false); - }, - - get endpoint() { - return graphQLConfig('endpoint', '/graphql'); - }, - - get defaultLimit() { - return graphQLConfig('defaultLimit'); - }, - - get maxLimit() { - return graphQLConfig('maxLimit', -1); - }, - - get depthLimit() { - return graphQLConfig('depthLimit'); - }, - - get apolloServer() { - return graphQLConfig('apolloServer', {}); - }, - }; -}; diff --git a/packages/plugins/graphql/server/services/utils/index.js b/packages/plugins/graphql/server/services/utils/index.js index 795b3153d3..db4bbeda9b 100644 --- a/packages/plugins/graphql/server/services/utils/index.js +++ b/packages/plugins/graphql/server/services/utils/index.js @@ -3,11 +3,9 @@ const mappers = require('./mappers'); const attributes = require('./attributes'); const naming = require('./naming'); -const config = require('./config'); module.exports = context => ({ naming: naming(context), attributes: attributes(context), mappers: mappers(context), - config: config(context), }); diff --git a/packages/plugins/graphql/strapi-server.js b/packages/plugins/graphql/strapi-server.js index a52ffb5827..70f2209111 100644 --- a/packages/plugins/graphql/strapi-server.js +++ b/packages/plugins/graphql/strapi-server.js @@ -2,9 +2,11 @@ const bootstrap = require('./server/bootstrap'); const services = require('./server/services'); +const config = require('./server/config'); module.exports = (/* strapi, config */) => { return { + config, bootstrap, services, };