UNPKG

911 BJavaScriptView Raw
1import { GraphQLError } from "../../error/GraphQLError.mjs";
2
3/**
4 * Unique input field names
5 *
6 * A GraphQL input object value is only valid if all supplied fields are
7 * uniquely named.
8 */
9export function UniqueInputFieldNamesRule(context) {
10 var knownNameStack = [];
11 var knownNames = Object.create(null);
12 return {
13 ObjectValue: {
14 enter: function enter() {
15 knownNameStack.push(knownNames);
16 knownNames = Object.create(null);
17 },
18 leave: function leave() {
19 knownNames = knownNameStack.pop();
20 }
21 },
22 ObjectField: function ObjectField(node) {
23 var fieldName = node.name.value;
24
25 if (knownNames[fieldName]) {
26 context.reportError(new GraphQLError("There can be only one input field named \"".concat(fieldName, "\"."), [knownNames[fieldName], node.name]));
27 } else {
28 knownNames[fieldName] = node.name;
29 }
30 }
31 };
32}