1 | import { addResolversToSchema } from '@graphql-tools/schema';
|
2 | import { composeResolvers } from '@graphql-tools/resolvers-composition';
|
3 | import { loadFromModuleExportExpressionSync, extractResolvers } from '@graphql-mesh/utils';
|
4 |
|
5 | class ResolversCompositionTransform {
|
6 | constructor(options) {
|
7 | this.options = options;
|
8 | this.noWrap = true;
|
9 | }
|
10 | transformSchema(schema) {
|
11 | const resolversComposition = {};
|
12 | for (const { resolver, composer } of this.options.config) {
|
13 | resolversComposition[resolver] = loadFromModuleExportExpressionSync(composer, 'default');
|
14 | }
|
15 | const resolvers = extractResolvers(schema);
|
16 | const composedResolvers = composeResolvers(resolvers, resolversComposition);
|
17 | return addResolversToSchema({
|
18 | schema,
|
19 | resolvers: composedResolvers,
|
20 | updateResolversInPlace: true,
|
21 | });
|
22 | }
|
23 | }
|
24 |
|
25 | export default ResolversCompositionTransform;
|
26 |
|