@graphql-eslint/eslint-plugin
Version:
GraphQL plugin for ESLint
58 lines (57 loc) • 1.91 kB
JavaScript
;
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!',
});
}
},
};
},
};