graphql
Version:
A Query Language and Runtime which can target any service.
25 lines (22 loc) • 894 B
JavaScript
import { GraphQLError } from "../../error/GraphQLError.mjs";
import { print } from "../../language/printer.mjs";
import { isInputType } from "../../type/definition.mjs";
import { typeFromAST } from "../../utilities/typeFromAST.mjs";
/**
* Variables are input types
*
* A GraphQL operation is only valid if all the variables it defines are of
* input types (scalar, enum, or input object).
*/
export function VariablesAreInputTypesRule(context) {
return {
VariableDefinition: function VariableDefinition(node) {
var type = typeFromAST(context.getSchema(), node.type);
if (type && !isInputType(type)) {
var variableName = node.variable.name.value;
var typeName = print(node.type);
context.reportError(new GraphQLError("Variable \"$".concat(variableName, "\" cannot be non-input type \"").concat(typeName, "\"."), node.type));
}
}
};
}