diff options
Diffstat (limited to 'alarm/node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs')
-rw-r--r-- | alarm/node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/alarm/node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs b/alarm/node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs new file mode 100644 index 0000000..004059f --- /dev/null +++ b/alarm/node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs @@ -0,0 +1,34 @@ +import { GraphQLError } from "../../error/GraphQLError.mjs"; + +/** + * No undefined variables + * + * A GraphQL operation is only valid if all variables encountered, both directly + * and via fragment spreads, are defined by that operation. + */ +export function NoUndefinedVariablesRule(context) { + var variableNameDefined = Object.create(null); + return { + OperationDefinition: { + enter: function enter() { + variableNameDefined = Object.create(null); + }, + leave: function leave(operation) { + var usages = context.getRecursiveVariableUsages(operation); + + for (var _i2 = 0; _i2 < usages.length; _i2++) { + var _ref2 = usages[_i2]; + var node = _ref2.node; + var varName = node.name.value; + + if (variableNameDefined[varName] !== true) { + context.reportError(new GraphQLError(operation.name ? "Variable \"$".concat(varName, "\" is not defined by operation \"").concat(operation.name.value, "\".") : "Variable \"$".concat(varName, "\" is not defined."), [node, operation])); + } + } + } + }, + VariableDefinition: function VariableDefinition(node) { + variableNameDefined[node.variable.name.value] = true; + } + }; +} |