UNPKG

1.06 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.UniqueInputFieldNamesRule = UniqueInputFieldNamesRule;
7
8var _GraphQLError = require("../../error/GraphQLError.js");
9
10/**
11 * Unique input field names
12 *
13 * A GraphQL input object value is only valid if all supplied fields are
14 * uniquely named.
15 */
16function UniqueInputFieldNamesRule(context) {
17 var knownNameStack = [];
18 var knownNames = Object.create(null);
19 return {
20 ObjectValue: {
21 enter: function enter() {
22 knownNameStack.push(knownNames);
23 knownNames = Object.create(null);
24 },
25 leave: function leave() {
26 knownNames = knownNameStack.pop();
27 }
28 },
29 ObjectField: function ObjectField(node) {
30 var fieldName = node.name.value;
31
32 if (knownNames[fieldName]) {
33 context.reportError(new _GraphQLError.GraphQLError("There can be only one input field named \"".concat(fieldName, "\"."), [knownNames[fieldName], node.name]));
34 } else {
35 knownNames[fieldName] = node.name;
36 }
37 }
38 };
39}