1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.assertResolversPresent = void 0;
- const graphql_1 = require("graphql");
- const utils_1 = require("@graphql-tools/utils");
- function assertResolversPresent(schema, resolverValidationOptions = {}) {
- const { requireResolversForArgs, requireResolversForNonScalar, requireResolversForAllFields } = resolverValidationOptions;
- if (requireResolversForAllFields && (requireResolversForArgs || requireResolversForNonScalar)) {
- throw new TypeError('requireResolversForAllFields takes precedence over the more specific assertions. ' +
- 'Please configure either requireResolversForAllFields or requireResolversForArgs / ' +
- 'requireResolversForNonScalar, but not a combination of them.');
- }
- (0, utils_1.forEachField)(schema, (field, typeName, fieldName) => {
- // requires a resolver for *every* field.
- if (requireResolversForAllFields) {
- expectResolver('requireResolversForAllFields', requireResolversForAllFields, field, typeName, fieldName);
- }
- // requires a resolver on every field that has arguments
- if (requireResolversForArgs && field.args.length > 0) {
- expectResolver('requireResolversForArgs', requireResolversForArgs, field, typeName, fieldName);
- }
- // requires a resolver on every field that returns a non-scalar type
- if (requireResolversForNonScalar !== 'ignore' && !(0, graphql_1.isScalarType)((0, graphql_1.getNamedType)(field.type))) {
- expectResolver('requireResolversForNonScalar', requireResolversForNonScalar, field, typeName, fieldName);
- }
- });
- }
- exports.assertResolversPresent = assertResolversPresent;
- function expectResolver(validator, behavior, field, typeName, fieldName) {
- if (!field.resolve) {
- const message = `Resolver missing for "${typeName}.${fieldName}".
- To disable this validator, use:
- resolverValidationOptions: {
- ${validator}: 'ignore'
- }`;
- if (behavior === 'error') {
- throw new Error(message);
- }
- if (behavior === 'warn') {
- console.warn(message);
- }
- return;
- }
- if (typeof field.resolve !== 'function') {
- throw new Error(`Resolver "${typeName}.${fieldName}" must be a function`);
- }
- }
|