import { GraphQLError } from '../../error/GraphQLError'; export function unusedVariableMessage(varName, opName) { return opName ? "Variable \"$".concat(varName, "\" is never used in operation \"").concat(opName, "\".") : "Variable \"$".concat(varName, "\" is never used."); } /** * 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 NoUnusedVariables(context) { var variableDefs = []; return { OperationDefinition: { enter: function enter() { variableDefs = []; }, leave: function leave(operation) { var variableNameUsed = Object.create(null); var usages = context.getRecursiveVariableUsages(operation); var opName = operation.name ? operation.name.value : null; 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(unusedVariableMessage(variableName, opName), variableDef)); } } } }, VariableDefinition: function VariableDefinition(def) { variableDefs.push(def); } }; }