UNPKG

graphql

Version:

A Query Language and Runtime which can target any service.

39 lines 2.02 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.NoUnusedVariablesRule = NoUnusedVariablesRule; const GraphQLError_ts_1 = require("../../error/GraphQLError.js"); function NoUnusedVariablesRule(context) { return { FragmentDefinition(fragment) { const usages = context.getVariableUsages(fragment); const argumentNameUsed = new Set(usages.map(({ node }) => node.name.value)); const variableDefinitions = fragment.variableDefinitions ?? []; for (const varDef of variableDefinitions) { const argName = varDef.variable.name.value; if (!argumentNameUsed.has(argName)) { context.reportError(new GraphQLError_ts_1.GraphQLError(`Variable "$${argName}" is never used in fragment "${fragment.name.value}".`, { nodes: varDef })); } } }, OperationDefinition(operation) { const usages = context.getRecursiveVariableUsages(operation); const operationVariableNameUsed = new Set(); for (const { node, fragmentVariableDefinition } of usages) { const varName = node.name.value; if (!fragmentVariableDefinition) { operationVariableNameUsed.add(varName); } } const variableDefinitions = operation.variableDefinitions ?? []; for (const variableDef of variableDefinitions) { const variableName = variableDef.variable.name.value; if (!operationVariableNameUsed.has(variableName)) { context.reportError(new GraphQLError_ts_1.GraphQLError(operation.name ? `Variable "$${variableName}" is never used in operation "${operation.name.value}".` : `Variable "$${variableName}" is never used.`, { nodes: variableDef })); } } }, }; } //# sourceMappingURL=NoUnusedVariablesRule.js.map