UNPKG

2.42 kBJavaScriptView Raw
1Object.defineProperty(exports, "__esModule", { value: true });
2var graphql_1 = require("graphql");
3var _1 = require(".");
4function assertResolveFunctionsPresent(schema, resolverValidationOptions) {
5 if (resolverValidationOptions === void 0) { resolverValidationOptions = {}; }
6 var _a = resolverValidationOptions.requireResolversForArgs, requireResolversForArgs = _a === void 0 ? false : _a, _b = resolverValidationOptions.requireResolversForNonScalar, requireResolversForNonScalar = _b === void 0 ? false : _b, _c = resolverValidationOptions.requireResolversForAllFields, requireResolversForAllFields = _c === void 0 ? false : _c;
7 if (requireResolversForAllFields &&
8 (requireResolversForArgs || requireResolversForNonScalar)) {
9 throw new TypeError('requireResolversForAllFields takes precedence over the more specific assertions. ' +
10 'Please configure either requireResolversForAllFields or requireResolversForArgs / ' +
11 'requireResolversForNonScalar, but not a combination of them.');
12 }
13 _1.forEachField(schema, function (field, typeName, fieldName) {
14 // requires a resolve function for *every* field.
15 if (requireResolversForAllFields) {
16 expectResolveFunction(field, typeName, fieldName);
17 }
18 // requires a resolve function on every field that has arguments
19 if (requireResolversForArgs && field.args.length > 0) {
20 expectResolveFunction(field, typeName, fieldName);
21 }
22 // requires a resolve function on every field that returns a non-scalar type
23 if (requireResolversForNonScalar &&
24 !(graphql_1.getNamedType(field.type) instanceof graphql_1.GraphQLScalarType)) {
25 expectResolveFunction(field, typeName, fieldName);
26 }
27 });
28}
29function expectResolveFunction(field, typeName, fieldName) {
30 if (!field.resolve) {
31 console.warn(
32 // tslint:disable-next-line: max-line-length
33 "Resolve function missing for \"" + typeName + "." + fieldName + "\". To disable this warning check https://github.com/apollostack/graphql-tools/issues/131");
34 return;
35 }
36 if (typeof field.resolve !== 'function') {
37 throw new _1.SchemaError("Resolver \"" + typeName + "." + fieldName + "\" must be a function");
38 }
39}
40exports.default = assertResolveFunctionsPresent;
41//# sourceMappingURL=assertResolveFunctionsPresent.js.map
\No newline at end of file