UNPKG

3.14 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.getResolversFromSchema = void 0;
4const graphql_1 = require("graphql");
5function getResolversFromSchema(schema,
6// Include default merged resolvers
7includeDefaultMergedResolver) {
8 const resolvers = Object.create(null);
9 const typeMap = schema.getTypeMap();
10 for (const typeName in typeMap) {
11 if (!typeName.startsWith('__')) {
12 const type = typeMap[typeName];
13 if ((0, graphql_1.isScalarType)(type)) {
14 if (!(0, graphql_1.isSpecifiedScalarType)(type)) {
15 const config = type.toConfig();
16 delete config.astNode; // avoid AST duplication elsewhere
17 resolvers[typeName] = new graphql_1.GraphQLScalarType(config);
18 }
19 }
20 else if ((0, graphql_1.isEnumType)(type)) {
21 resolvers[typeName] = {};
22 const values = type.getValues();
23 for (const value of values) {
24 resolvers[typeName][value.name] = value.value;
25 }
26 }
27 else if ((0, graphql_1.isInterfaceType)(type)) {
28 if (type.resolveType != null) {
29 resolvers[typeName] = {
30 __resolveType: type.resolveType,
31 };
32 }
33 }
34 else if ((0, graphql_1.isUnionType)(type)) {
35 if (type.resolveType != null) {
36 resolvers[typeName] = {
37 __resolveType: type.resolveType,
38 };
39 }
40 }
41 else if ((0, graphql_1.isObjectType)(type)) {
42 resolvers[typeName] = {};
43 if (type.isTypeOf != null) {
44 resolvers[typeName].__isTypeOf = type.isTypeOf;
45 }
46 const fields = type.getFields();
47 for (const fieldName in fields) {
48 const field = fields[fieldName];
49 if (field.subscribe != null) {
50 resolvers[typeName][fieldName] = resolvers[typeName][fieldName] || {};
51 resolvers[typeName][fieldName].subscribe = field.subscribe;
52 }
53 if (field.resolve != null && field.resolve?.name !== 'defaultFieldResolver') {
54 switch (field.resolve?.name) {
55 case 'defaultMergedResolver':
56 if (!includeDefaultMergedResolver) {
57 continue;
58 }
59 break;
60 case 'defaultFieldResolver':
61 continue;
62 }
63 resolvers[typeName][fieldName] = resolvers[typeName][fieldName] || {};
64 resolvers[typeName][fieldName].resolve = field.resolve;
65 }
66 }
67 }
68 }
69 }
70 return resolvers;
71}
72exports.getResolversFromSchema = getResolversFromSchema;