UNPKG

@graphql-eslint/eslint-plugin

Version:
74 lines (73 loc) 1.85 kB
import "../chunk-BMTV3EA2.js"; import { Kind } from "graphql"; import { getNodeName } from "../utils.js"; const rule = { meta: { type: "suggestion", hasSuggestions: true, docs: { url: "https://the-guild.dev/graphql/eslint/rules/no-case-insensitive-enum-values-duplicates", 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 = [Kind.ENUM_TYPE_DEFINITION, Kind.ENUM_TYPE_EXTENSION].join(","); return { [selector](node) { var _a; const duplicates = (_a = node.values) == null ? void 0 : _a.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: `Unexpected case-insensitive enum values duplicates for ${getNodeName( duplicate )}`, suggest: [ { desc: `Remove \`${enumName}\` enum value`, fix: (fixer) => fixer.remove(duplicate) } ] }); } } }; } }; export { rule };