1
1
import { makeExecutableSchema } from 'graphql-tools' ;
2
2
import { neo4jgraphql } from './index' ;
3
- import { print } from 'graphql' ;
3
+ import { print , parse } from 'graphql' ;
4
4
5
- export const makeAugmentedSchema = ( typeMap , queryResolvers , mutationResolvers ) => {
5
+ export const augmentedSchema = ( typeMap , queryResolvers , mutationResolvers ) => {
6
6
const augmentedTypeMap = augmentTypeMap ( typeMap ) ;
7
7
const augmentedResolvers = augmentResolvers ( queryResolvers , mutationResolvers , augmentedTypeMap ) ;
8
8
return makeExecutableSchema ( {
@@ -14,7 +14,47 @@ export const makeAugmentedSchema = (typeMap, queryResolvers, mutationResolvers)
14
14
} ) ;
15
15
}
16
16
17
- export const extractAstNodesFromSchema = ( schema ) => {
17
+ export const makeAugmentedExecutableSchema = ( {
18
+ typeDefs,
19
+ resolvers,
20
+ logger,
21
+ allowUndefinedInResolve,
22
+ resolverValidationOptions,
23
+ directiveResolvers,
24
+ schemaDirectives,
25
+ parseOptions,
26
+ inheritResolversFromInterfaces
27
+ } ) => {
28
+ const typeMap = extractTypeMapFromTypeDefs ( typeDefs ) ;
29
+ const augmentedTypeMap = augmentTypeMap ( typeMap ) ;
30
+ const queryResolvers = resolvers && resolvers . Query ? resolvers . Query : { } ;
31
+ const mutationResolvers = resolvers && resolvers . Mutation ? resolvers . Mutation : { } ;
32
+ const augmentedResolvers = augmentResolvers ( queryResolvers , mutationResolvers , augmentedTypeMap ) ;
33
+ resolverValidationOptions . requireResolversForResolveType = false ;
34
+ return makeExecutableSchema ( {
35
+ typeDefs : printTypeMap ( augmentedTypeMap ) ,
36
+ resolvers : augmentedResolvers ,
37
+ logger : logger ,
38
+ allowUndefinedInResolve : allowUndefinedInResolve ,
39
+ resolverValidationOptions : resolverValidationOptions ,
40
+ directiveResolvers : directiveResolvers ,
41
+ schemaDirectives : schemaDirectives ,
42
+ parseOptions : parseOptions ,
43
+ inheritResolversFromInterfaces : inheritResolversFromInterfaces
44
+ } ) ;
45
+ }
46
+
47
+ const extractTypeMapFromTypeDefs = ( typeDefs ) => {
48
+ // TODO: accept alternative typeDefs formats (arr of strings, ast, etc.)
49
+ // into a single string for parse, add validatation
50
+ const astNodes = parse ( typeDefs ) . definitions ;
51
+ return astNodes . reduce ( ( acc , t ) => {
52
+ acc [ t . name . value ] = t ;
53
+ return acc ;
54
+ } , { } ) ;
55
+ }
56
+
57
+ export const extractTypeMapFromSchema = ( schema ) => {
18
58
const typeMap = schema . getTypeMap ( ) ;
19
59
let astNode = { } ;
20
60
return Object . keys ( typeMap ) . reduce ( ( acc , t ) => {
0 commit comments