@@ -10,6 +10,7 @@ export const buildSchema =
10
10
typeDefs,
11
11
resolvers,
12
12
authDirective : { authDirectiveTypeDefs, authDirectiveTransformer } = authDirective ( 'auth' ) ,
13
+ directives = [ ] ,
13
14
} : {
14
15
typeDefs ?: TypeSource ;
15
16
resolvers ?:
@@ -19,19 +20,24 @@ export const buildSchema =
19
20
authDirectiveTypeDefs : string ;
20
21
authDirectiveTransformer : ( schema : GraphQLSchema ) => GraphQLSchema ;
21
22
} ;
23
+ directives ?: Array < [ TypeSource , ( schema : GraphQLSchema ) => GraphQLSchema ] > ;
22
24
} = { } ) : ApplicationConfig [ 'schemaBuilder' ] =>
23
- ( { typeDefs : accountsTypeDefs , resolvers : accountsResolvers } ) =>
24
- authDirectiveTransformer (
25
- makeExecutableSchema ( {
26
- typeDefs : mergeTypeDefs ( [
27
- ...accountsTypeDefs ,
28
- ...( typeDefs ? [ typeDefs ] : [ ] ) ,
29
- authDirectiveTypeDefs ,
30
- ] ) ,
31
- resolvers : resolvers
32
- ? mergeResolvers ( [ resolvers , ...accountsResolvers ] as Maybe <
33
- Maybe < IResolvers < TSource , TContext > > [ ]
34
- > )
35
- : accountsResolvers ,
36
- } )
37
- ) ;
25
+ ( { typeDefs : accountsTypeDefs , resolvers : accountsResolvers } ) => {
26
+ let schema = makeExecutableSchema ( {
27
+ typeDefs : mergeTypeDefs ( [
28
+ ...accountsTypeDefs ,
29
+ ...( typeDefs ? [ typeDefs ] : [ ] ) ,
30
+ authDirectiveTypeDefs ,
31
+ ...directives . map ( ( [ directiveTypeDefs ] ) => directiveTypeDefs ) ,
32
+ ] ) ,
33
+ resolvers : resolvers
34
+ ? mergeResolvers ( [ resolvers , ...accountsResolvers ] as Maybe <
35
+ Maybe < IResolvers < TSource , TContext > > [ ]
36
+ > )
37
+ : accountsResolvers ,
38
+ } ) ;
39
+ for ( const [ , directiveTransformer ] of directives ) {
40
+ schema = directiveTransformer ( schema ) ;
41
+ }
42
+ return authDirectiveTransformer ( schema ) ;
43
+ } ;
0 commit comments