@relay-graphql-js/validation-rules
Version:
shared relay validation rules for graphql-js parser
30 lines (29 loc) • 1.31 kB
JavaScript
;
exports.__esModule = true;
exports.RelayNoUnusedArguments = exports.unusedArgumentMessage = void 0;
var graphql_1 = require("graphql");
var argumentDefinitions_1 = require("./argumentDefinitions");
function unusedArgumentMessage(varName, framgnetName) {
return "Argument \"" + varName + "\" in fragment \"" + framgnetName + "\" is never used.";
}
exports.unusedArgumentMessage = unusedArgumentMessage;
// tslint:disable-next-line: no-shadowed-variable
exports.RelayNoUnusedArguments = function RelayNoUnusedArguments(context) {
return {
FragmentDefinition: function (fragmentDef) {
var argumentDefinitions = argumentDefinitions_1.getFragmentArgumentDefinitions(context, fragmentDef);
var usages = {};
graphql_1.visit(fragmentDef.selectionSet, {
Variable: function (variableNode) {
usages[variableNode.name.value] = 1;
}
});
Object.keys(argumentDefinitions).forEach(function (arg) {
var definition = argumentDefinitions[arg];
if (!usages[arg]) {
context.reportError(new graphql_1.GraphQLError(unusedArgumentMessage(arg, fragmentDef.name.value), definition.node));
}
});
}
};
};