UNPKG

@vanta-inc/eslint-plugin-vanta

Version:
55 lines (54 loc) 2.22 kB
"use strict"; /** * @fileoverview Ensure that all mutations take a unique type */ Object.defineProperty(exports, "__esModule", { value: true }); var graphqlutils_1 = require("../utils/graphqlutils"); var rule = { meta: { type: "suggestion", docs: { // @ts-ignore description: "All mutations must take a unique input type", category: "Operations", url: "https://github.com/VantaInc/eslint-plugin-vanta/blob/main/docs/rules/mutations-inputs-unique.md", }, }, create: function (context) { var validatePayload = function (node) { var _a; var typeNames = new Set(); (_a = node.rawNode().definitions) === null || _a === void 0 ? void 0 : _a.forEach(function (definition) { var _a; if (definition.kind === "ObjectTypeDefinition" || definition.kind === "ObjectTypeExtension") { if (definition.name.value !== "Mutation") { return; } (_a = definition.fields) === null || _a === void 0 ? void 0 : _a.forEach(function (field) { var _a; (_a = field.arguments) === null || _a === void 0 ? void 0 : _a.forEach(function (arg) { var inputTypeName = graphqlutils_1.extractNamedType(arg.type).name.value; if (typeNames.has(inputTypeName)) { context.report({ node: node, message: "Mutation input types must be unique; reused type {{type}}", data: { type: inputTypeName, }, }); return; } typeNames.add(inputTypeName); }); }); } }); }; return { Document: validatePayload, }; }, }; module.exports = rule; exports.default = rule;