UNPKG

@graphql-eslint/eslint-plugin

Version:
58 lines (57 loc) 1.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.rule = void 0; const index_js_1 = require("../estree-converter/index.js"); exports.rule = { meta: { docs: { description: 'Require all deprecation directives to specify a reason.', category: 'Schema', url: 'https://github.com/B2o5T/graphql-eslint/blob/master/docs/rules/require-deprecation-reason.md', recommended: true, examples: [ { title: 'Incorrect', code: /* GraphQL */ ` type MyType { name: String @deprecated } `, }, { title: 'Incorrect', code: /* GraphQL */ ` type MyType { name: String @deprecated(reason: "") } `, }, { title: 'Correct', code: /* GraphQL */ ` type MyType { name: String @deprecated(reason: "no longer relevant, please use fullName field") } `, }, ], }, type: 'suggestion', schema: [], }, create(context) { return { 'Directive[name.value=deprecated]'(node) { var _a; const reasonArgument = (_a = node.arguments) === null || _a === void 0 ? void 0 : _a.find(arg => arg.name.value === 'reason'); const value = reasonArgument && String((0, index_js_1.valueFromNode)(reasonArgument.value)).trim(); if (!value) { context.report({ node: node.name, message: 'Directive "@deprecated" must have a reason!', }); } }, }; }, };