graphql
Version:
A Query Language and Runtime which can target any service.
31 lines • 1.13 kB
JavaScript
import { invariant } from "../../jsutils/invariant.mjs";
import { GraphQLError } from "../../error/GraphQLError.mjs";
export function UniqueInputFieldNamesRule(context) {
const knownNameStack = [];
let knownNames = new Map();
return {
ObjectValue: {
enter() {
knownNameStack.push(knownNames);
knownNames = new Map();
},
leave() {
const prevKnownNames = knownNameStack.pop();
if (!(prevKnownNames != null))
invariant(false);
knownNames = prevKnownNames;
},
},
ObjectField(node) {
const fieldName = node.name.value;
const knownName = knownNames.get(fieldName);
if (knownName != null) {
context.reportError(new GraphQLError(`There can be only one input field named "${fieldName}".`, { nodes: [knownName, node.name] }));
}
else {
knownNames.set(fieldName, node.name);
}
},
};
}
//# sourceMappingURL=UniqueInputFieldNamesRule.js.map