@graphql-eslint/eslint-plugin
Version:
GraphQL plugin for ESLint
62 lines (61 loc) • 2.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.rule = void 0;
const graphql_1 = require("graphql");
exports.rule = {
meta: {
type: 'suggestion',
hasSuggestions: true,
docs: {
url: 'https://github.com/B2o5T/graphql-eslint/blob/master/docs/rules/no-case-insensitive-enum-values-duplicates.md',
category: 'Schema',
recommended: true,
description: 'Disallow case-insensitive enum values duplicates.',
examples: [
{
title: 'Incorrect',
code: /* GraphQL */ `
enum MyEnum {
Value
VALUE
ValuE
}
`,
},
{
title: 'Correct',
code: /* GraphQL */ `
enum MyEnum {
Value1
Value2
Value3
}
`,
},
],
},
schema: [],
},
create(context) {
const selector = [graphql_1.Kind.ENUM_TYPE_DEFINITION, graphql_1.Kind.ENUM_TYPE_EXTENSION].join(',');
return {
[selector](node) {
const duplicates = node.values.filter((item, index, array) => array.findIndex(v => v.name.value.toLowerCase() === item.name.value.toLowerCase()) !==
index);
for (const duplicate of duplicates) {
const enumName = duplicate.name.value;
context.report({
node: duplicate.name,
message: `Case-insensitive enum values duplicates are not allowed! Found: \`${enumName}\`.`,
suggest: [
{
desc: `Remove \`${enumName}\` enum value`,
fix: fixer => fixer.remove(duplicate),
},
],
});
}
},
};
},
};