diff options
Diffstat (limited to 'school/node_modules/graphql/validation/rules/NoUnusedVariablesRule.js')
-rw-r--r-- | school/node_modules/graphql/validation/rules/NoUnusedVariablesRule.js | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/school/node_modules/graphql/validation/rules/NoUnusedVariablesRule.js b/school/node_modules/graphql/validation/rules/NoUnusedVariablesRule.js new file mode 100644 index 0000000..10fa8c8 --- /dev/null +++ b/school/node_modules/graphql/validation/rules/NoUnusedVariablesRule.js @@ -0,0 +1,47 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.NoUnusedVariablesRule = NoUnusedVariablesRule; + +var _GraphQLError = require("../../error/GraphQLError.js"); + +/** + * 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. + */ +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.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); + } + }; +} |