UNPKG

@graphql-mesh/transform-resolvers-composition

Version:
36 lines (32 loc) 1.49 kB
'use strict'; const schema = require('@graphql-tools/schema'); const resolversComposition = require('@graphql-tools/resolvers-composition'); const utils = require('@graphql-mesh/utils'); class ResolversCompositionTransform { constructor({ baseDir, config, importFn }) { this.noWrap = config.mode ? config.mode !== 'wrap' : false; // use config.mode value or default to false this.compositions = Array.isArray(config) ? config : config.compositions; this.baseDir = baseDir; this.importFn = importFn; } transformSchema(schema$1) { const resolversComposition$1 = {}; for (const { resolver, composer } of this.compositions) { const composerFn$ = utils.loadFromModuleExportExpression(composer, { cwd: this.baseDir, defaultExportName: 'default', importFn: this.importFn, }); resolversComposition$1[resolver] = next => (...args) => composerFn$.then(composerFn => (composerFn ? composerFn(next) : next)).then(next => next(...args)); } const resolvers = utils.extractResolvers(schema$1); const composedResolvers = resolversComposition.composeResolvers(resolvers, resolversComposition$1); return schema.addResolversToSchema({ schema: schema$1, resolvers: composedResolvers, updateResolversInPlace: true, }); } } module.exports = ResolversCompositionTransform;