import { GraphQLError } from "../../error/GraphQLError.mjs"; /** * No unused variables * * A GraphQL operation is only valid if all variables defined by an operation * are used, either directly or within a spread fragment. */ export function NoUnusedVariablesRule(context) { var variableDefs = []; return { OperationDefinition: { enter: function enter() { variableDefs = []; }, leave: function leave(operation) { var variableNameUsed = Object.create(null); var usages = context.getRecursiveVariableUsages(operation); for (var _i2 = 0; _i2 < usages.length; _i2++) { var _ref2 = usages[_i2]; var node = _ref2.node; variableNameUsed[node.name.value] = true; } for (var _i4 = 0, _variableDefs2 = variableDefs; _i4 < _variableDefs2.length; _i4++) { var variableDef = _variableDefs2[_i4]; var variableName = variableDef.variable.name.value; if (variableNameUsed[variableName] !== true) { context.reportError(new GraphQLError(operation.name ? "Variable \"$".concat(variableName, "\" is never used in operation \"").concat(operation.name.value, "\".") : "Variable \"$".concat(variableName, "\" is never used."), variableDef)); } } } }, VariableDefinition: function VariableDefinition(def) { variableDefs.push(def); } }; }