diff options
Diffstat (limited to 'alarm/node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs')
-rw-r--r-- | alarm/node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/alarm/node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs b/alarm/node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs new file mode 100644 index 0000000..df62472 --- /dev/null +++ b/alarm/node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs @@ -0,0 +1,40 @@ +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); + } + }; +} |