123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- 'use strict';
- Object.defineProperty(exports, '__esModule', {
- value: true,
- });
- exports.NoDeprecatedCustomRule = NoDeprecatedCustomRule;
- var _invariant = require('../../../jsutils/invariant.js');
- var _GraphQLError = require('../../../error/GraphQLError.js');
- var _definition = require('../../../type/definition.js');
- /**
- * No deprecated
- *
- * A GraphQL document is only valid if all selected fields and all used enum values have not been
- * deprecated.
- *
- * Note: This rule is optional and is not part of the Validation section of the GraphQL
- * Specification. The main purpose of this rule is detection of deprecated usages and not
- * necessarily to forbid their use when querying a service.
- */
- function NoDeprecatedCustomRule(context) {
- return {
- Field(node) {
- const fieldDef = context.getFieldDef();
- const deprecationReason =
- fieldDef === null || fieldDef === void 0
- ? void 0
- : fieldDef.deprecationReason;
- if (fieldDef && deprecationReason != null) {
- const parentType = context.getParentType();
- parentType != null || (0, _invariant.invariant)(false);
- context.reportError(
- new _GraphQLError.GraphQLError(
- `The field ${parentType.name}.${fieldDef.name} is deprecated. ${deprecationReason}`,
- {
- nodes: node,
- },
- ),
- );
- }
- },
- Argument(node) {
- const argDef = context.getArgument();
- const deprecationReason =
- argDef === null || argDef === void 0
- ? void 0
- : argDef.deprecationReason;
- if (argDef && deprecationReason != null) {
- const directiveDef = context.getDirective();
- if (directiveDef != null) {
- context.reportError(
- new _GraphQLError.GraphQLError(
- `Directive "@${directiveDef.name}" argument "${argDef.name}" is deprecated. ${deprecationReason}`,
- {
- nodes: node,
- },
- ),
- );
- } else {
- const parentType = context.getParentType();
- const fieldDef = context.getFieldDef();
- (parentType != null && fieldDef != null) ||
- (0, _invariant.invariant)(false);
- context.reportError(
- new _GraphQLError.GraphQLError(
- `Field "${parentType.name}.${fieldDef.name}" argument "${argDef.name}" is deprecated. ${deprecationReason}`,
- {
- nodes: node,
- },
- ),
- );
- }
- }
- },
- ObjectField(node) {
- const inputObjectDef = (0, _definition.getNamedType)(
- context.getParentInputType(),
- );
- if ((0, _definition.isInputObjectType)(inputObjectDef)) {
- const inputFieldDef = inputObjectDef.getFields()[node.name.value];
- const deprecationReason =
- inputFieldDef === null || inputFieldDef === void 0
- ? void 0
- : inputFieldDef.deprecationReason;
- if (deprecationReason != null) {
- context.reportError(
- new _GraphQLError.GraphQLError(
- `The input field ${inputObjectDef.name}.${inputFieldDef.name} is deprecated. ${deprecationReason}`,
- {
- nodes: node,
- },
- ),
- );
- }
- }
- },
- EnumValue(node) {
- const enumValueDef = context.getEnumValue();
- const deprecationReason =
- enumValueDef === null || enumValueDef === void 0
- ? void 0
- : enumValueDef.deprecationReason;
- if (enumValueDef && deprecationReason != null) {
- const enumTypeDef = (0, _definition.getNamedType)(
- context.getInputType(),
- );
- enumTypeDef != null || (0, _invariant.invariant)(false);
- context.reportError(
- new _GraphQLError.GraphQLError(
- `The enum value "${enumTypeDef.name}.${enumValueDef.name}" is deprecated. ${deprecationReason}`,
- {
- nodes: node,
- },
- ),
- );
- }
- },
- };
- }
|