import { GraphQLError } from '../../error'; /** * Copyright (c) 2015-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * strict */ export function unusedVariableMessage(varName, opName) { return opName ? 'Variable "$' + varName + '" is never used in operation "' + opName + '".' : 'Variable "$' + 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; usages.forEach(function (_ref) { var node = _ref.node; variableNameUsed[node.name.value] = true; }); variableDefs.forEach(function (variableDef) { 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); } }; }