graphql 14.0.2 → 14.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/README.md +4 -4
  2. package/error/GraphQLError.js +1 -1
  3. package/error/GraphQLError.js.flow +3 -3
  4. package/error/GraphQLError.mjs +1 -1
  5. package/error/formatError.js +1 -1
  6. package/error/formatError.mjs +1 -1
  7. package/error/index.mjs +1 -1
  8. package/error/locatedError.js +1 -1
  9. package/error/locatedError.mjs +1 -1
  10. package/error/printError.js +1 -1
  11. package/error/printError.mjs +1 -1
  12. package/error/syntaxError.js +1 -1
  13. package/error/syntaxError.mjs +1 -1
  14. package/execution/execute.mjs +1 -1
  15. package/execution/index.mjs +1 -1
  16. package/execution/values.js +3 -3
  17. package/execution/values.js.flow +1 -1
  18. package/execution/values.mjs +2 -2
  19. package/graphql.js +1 -1
  20. package/graphql.mjs +1 -1
  21. package/index.js +12 -0
  22. package/index.js.flow +2 -0
  23. package/index.mjs +2 -2
  24. package/jsutils/dedent.js +1 -1
  25. package/jsutils/dedent.mjs +1 -1
  26. package/jsutils/defineToJSON.js +17 -6
  27. package/jsutils/defineToJSON.js.flow +14 -5
  28. package/jsutils/defineToJSON.mjs +14 -6
  29. package/jsutils/defineToStringTag.js +5 -5
  30. package/jsutils/defineToStringTag.js.flow +3 -3
  31. package/jsutils/defineToStringTag.mjs +4 -4
  32. package/jsutils/inspect.js +22 -11
  33. package/jsutils/inspect.js.flow +22 -2
  34. package/jsutils/inspect.mjs +21 -4
  35. package/jsutils/instanceOf.js +1 -1
  36. package/jsutils/instanceOf.mjs +1 -1
  37. package/jsutils/invariant.js +1 -1
  38. package/jsutils/invariant.mjs +1 -1
  39. package/jsutils/isInvalid.js +1 -1
  40. package/jsutils/isInvalid.mjs +1 -1
  41. package/jsutils/isNullish.js +1 -1
  42. package/jsutils/isNullish.mjs +1 -1
  43. package/jsutils/isPromise.js +1 -1
  44. package/jsutils/isPromise.mjs +1 -1
  45. package/jsutils/keyMap.js +1 -1
  46. package/jsutils/keyMap.mjs +1 -1
  47. package/jsutils/keyValMap.js +1 -1
  48. package/jsutils/keyValMap.mjs +1 -1
  49. package/jsutils/mapValue.js +54 -0
  50. package/jsutils/mapValue.js.flow +27 -0
  51. package/jsutils/mapValue.mjs +44 -0
  52. package/jsutils/memoize3.js +1 -1
  53. package/jsutils/memoize3.mjs +1 -1
  54. package/jsutils/nodejsCustomInspectSymbol.js +18 -0
  55. package/jsutils/nodejsCustomInspectSymbol.js.flow +15 -0
  56. package/jsutils/nodejsCustomInspectSymbol.mjs +10 -0
  57. package/jsutils/orList.js +17 -4
  58. package/jsutils/orList.js.flow +13 -7
  59. package/jsutils/orList.mjs +14 -4
  60. package/jsutils/promiseForObject.js +1 -1
  61. package/jsutils/promiseForObject.mjs +1 -1
  62. package/jsutils/promiseReduce.js +1 -1
  63. package/jsutils/promiseReduce.mjs +1 -1
  64. package/jsutils/quotedOrList.js +1 -1
  65. package/jsutils/quotedOrList.mjs +1 -1
  66. package/jsutils/suggestionList.js +1 -1
  67. package/jsutils/suggestionList.mjs +1 -1
  68. package/language/blockStringValue.js +1 -1
  69. package/language/blockStringValue.mjs +1 -1
  70. package/language/directiveLocation.js +1 -1
  71. package/language/directiveLocation.mjs +1 -1
  72. package/language/index.mjs +1 -1
  73. package/language/kinds.js +1 -1
  74. package/language/kinds.mjs +1 -1
  75. package/language/lexer.js +28 -12
  76. package/language/lexer.js.flow +33 -19
  77. package/language/lexer.mjs +27 -12
  78. package/language/location.js +1 -1
  79. package/language/location.mjs +1 -1
  80. package/language/parser.js +31 -38
  81. package/language/parser.js.flow +32 -48
  82. package/language/parser.mjs +30 -38
  83. package/language/predicates.js +1 -1
  84. package/language/predicates.mjs +1 -1
  85. package/language/printer.js +13 -7
  86. package/language/printer.js.flow +19 -9
  87. package/language/printer.mjs +13 -7
  88. package/language/source.js +8 -7
  89. package/language/source.mjs +1 -9
  90. package/language/visitor.js +6 -5
  91. package/language/visitor.js.flow +2 -4
  92. package/language/visitor.mjs +6 -5
  93. package/package.json +5 -2
  94. package/polyfills/find.js +31 -0
  95. package/polyfills/find.js.flow +29 -0
  96. package/polyfills/find.mjs +23 -0
  97. package/{jsutils → polyfills}/isFinite.js +1 -1
  98. package/{jsutils → polyfills}/isFinite.js.flow +0 -0
  99. package/{jsutils → polyfills}/isFinite.mjs +1 -1
  100. package/{jsutils → polyfills}/isInteger.js +1 -1
  101. package/{jsutils → polyfills}/isInteger.js.flow +0 -0
  102. package/{jsutils → polyfills}/isInteger.mjs +1 -1
  103. package/polyfills/objectEntries.js +26 -0
  104. package/polyfills/objectEntries.js.flow +19 -0
  105. package/polyfills/objectEntries.mjs +18 -0
  106. package/{jsutils → polyfills}/objectValues.js +1 -1
  107. package/{jsutils → polyfills}/objectValues.js.flow +1 -1
  108. package/{jsutils → polyfills}/objectValues.mjs +1 -1
  109. package/subscription/asyncIteratorReject.mjs +1 -1
  110. package/subscription/index.mjs +1 -1
  111. package/subscription/mapAsyncIterator.mjs +1 -1
  112. package/subscription/subscribe.js +1 -1
  113. package/subscription/subscribe.mjs +1 -1
  114. package/type/definition.js +31 -130
  115. package/type/definition.js.flow +35 -47
  116. package/type/definition.mjs +30 -131
  117. package/type/directives.js +25 -29
  118. package/type/directives.js.flow +24 -20
  119. package/type/directives.mjs +22 -30
  120. package/type/index.js +12 -0
  121. package/type/index.js.flow +4 -0
  122. package/type/index.mjs +5 -3
  123. package/type/introspection.js +3 -3
  124. package/type/introspection.js.flow +1 -1
  125. package/type/introspection.mjs +2 -2
  126. package/type/scalars.js +45 -34
  127. package/type/scalars.js.flow +40 -26
  128. package/type/scalars.mjs +44 -26
  129. package/type/schema.js +82 -87
  130. package/type/schema.js.flow +17 -9
  131. package/type/schema.mjs +79 -86
  132. package/type/validate.js +168 -175
  133. package/type/validate.js.flow +8 -49
  134. package/type/validate.mjs +159 -175
  135. package/utilities/TypeInfo.js +10 -23
  136. package/utilities/TypeInfo.js.flow +1 -1
  137. package/utilities/TypeInfo.mjs +2 -24
  138. package/utilities/assertValidName.js +1 -1
  139. package/utilities/assertValidName.mjs +1 -1
  140. package/utilities/astFromValue.js +2 -2
  141. package/utilities/astFromValue.js.flow +1 -1
  142. package/utilities/astFromValue.mjs +2 -2
  143. package/utilities/buildASTSchema.js +53 -53
  144. package/utilities/buildASTSchema.js.flow +14 -30
  145. package/utilities/buildASTSchema.mjs +45 -55
  146. package/utilities/buildClientSchema.js +3 -3
  147. package/utilities/buildClientSchema.js.flow +6 -2
  148. package/utilities/buildClientSchema.mjs +3 -3
  149. package/utilities/coerceValue.js +38 -19
  150. package/utilities/coerceValue.js.flow +41 -47
  151. package/utilities/coerceValue.mjs +38 -20
  152. package/utilities/concatAST.js +1 -1
  153. package/utilities/concatAST.mjs +1 -1
  154. package/utilities/extendSchema.js +228 -312
  155. package/utilities/extendSchema.js.flow +27 -152
  156. package/utilities/extendSchema.mjs +229 -312
  157. package/utilities/findBreakingChanges.js +7 -5
  158. package/utilities/findBreakingChanges.js.flow +3 -2
  159. package/utilities/findBreakingChanges.mjs +6 -5
  160. package/utilities/findDeprecatedUsages.js +1 -1
  161. package/utilities/findDeprecatedUsages.mjs +1 -1
  162. package/utilities/getOperationAST.js +1 -1
  163. package/utilities/getOperationAST.mjs +1 -1
  164. package/utilities/getOperationRootType.js +1 -1
  165. package/utilities/getOperationRootType.mjs +1 -1
  166. package/utilities/index.mjs +1 -1
  167. package/utilities/introspectionFromSchema.js +1 -1
  168. package/utilities/introspectionFromSchema.mjs +1 -1
  169. package/utilities/introspectionQuery.js +1 -1
  170. package/utilities/introspectionQuery.mjs +1 -1
  171. package/utilities/isValidJSValue.js +1 -1
  172. package/utilities/isValidJSValue.mjs +1 -1
  173. package/utilities/isValidLiteralValue.js +1 -1
  174. package/utilities/isValidLiteralValue.mjs +1 -1
  175. package/utilities/lexicographicSortSchema.js +2 -2
  176. package/utilities/lexicographicSortSchema.js.flow +1 -1
  177. package/utilities/lexicographicSortSchema.mjs +2 -2
  178. package/utilities/schemaPrinter.js +3 -3
  179. package/utilities/schemaPrinter.js.flow +1 -1
  180. package/utilities/schemaPrinter.mjs +2 -2
  181. package/utilities/separateOperations.js +1 -1
  182. package/utilities/separateOperations.mjs +1 -1
  183. package/utilities/typeComparators.js +1 -1
  184. package/utilities/typeComparators.mjs +1 -1
  185. package/utilities/typeFromAST.js +1 -1
  186. package/utilities/typeFromAST.mjs +1 -1
  187. package/utilities/valueFromAST.js +3 -3
  188. package/utilities/valueFromAST.js.flow +1 -1
  189. package/utilities/valueFromAST.mjs +2 -2
  190. package/utilities/valueFromASTUntyped.js +1 -1
  191. package/utilities/valueFromASTUntyped.mjs +1 -1
  192. package/validation/ValidationContext.js +57 -82
  193. package/validation/ValidationContext.js.flow +52 -49
  194. package/validation/ValidationContext.mjs +52 -77
  195. package/validation/index.mjs +1 -1
  196. package/validation/rules/ExecutableDefinitions.js +1 -1
  197. package/validation/rules/ExecutableDefinitions.js.flow +1 -1
  198. package/validation/rules/ExecutableDefinitions.mjs +1 -1
  199. package/validation/rules/FieldsOnCorrectType.js +1 -1
  200. package/validation/rules/FieldsOnCorrectType.mjs +1 -1
  201. package/validation/rules/FragmentsOnCompositeTypes.js +1 -1
  202. package/validation/rules/FragmentsOnCompositeTypes.mjs +1 -1
  203. package/validation/rules/KnownArgumentNames.mjs +1 -1
  204. package/validation/rules/KnownDirectives.js +1 -1
  205. package/validation/rules/KnownDirectives.mjs +1 -1
  206. package/validation/rules/KnownFragmentNames.js +1 -1
  207. package/validation/rules/KnownFragmentNames.mjs +1 -1
  208. package/validation/rules/KnownTypeNames.js +59 -21
  209. package/validation/rules/KnownTypeNames.js.flow +54 -20
  210. package/validation/rules/KnownTypeNames.mjs +56 -21
  211. package/validation/rules/LoneAnonymousOperation.js +1 -1
  212. package/validation/rules/LoneAnonymousOperation.mjs +1 -1
  213. package/validation/rules/LoneSchemaDefinition.js +1 -1
  214. package/validation/rules/LoneSchemaDefinition.mjs +1 -1
  215. package/validation/rules/NoFragmentCycles.js +1 -1
  216. package/validation/rules/NoFragmentCycles.js.flow +2 -2
  217. package/validation/rules/NoFragmentCycles.mjs +1 -1
  218. package/validation/rules/NoUndefinedVariables.js +1 -1
  219. package/validation/rules/NoUndefinedVariables.mjs +1 -1
  220. package/validation/rules/NoUnusedFragments.js +1 -1
  221. package/validation/rules/NoUnusedFragments.js.flow +2 -2
  222. package/validation/rules/NoUnusedFragments.mjs +1 -1
  223. package/validation/rules/NoUnusedVariables.js +1 -1
  224. package/validation/rules/NoUnusedVariables.mjs +1 -1
  225. package/validation/rules/OverlappingFieldsCanBeMerged.js +56 -32
  226. package/validation/rules/OverlappingFieldsCanBeMerged.js.flow +3 -3
  227. package/validation/rules/OverlappingFieldsCanBeMerged.mjs +47 -32
  228. package/validation/rules/PossibleFragmentSpreads.js +1 -1
  229. package/validation/rules/PossibleFragmentSpreads.mjs +1 -1
  230. package/validation/rules/PossibleTypeExtensions.js +158 -0
  231. package/validation/rules/PossibleTypeExtensions.js.flow +160 -0
  232. package/validation/rules/PossibleTypeExtensions.mjs +146 -0
  233. package/validation/rules/ProvidedRequiredArguments.mjs +1 -1
  234. package/validation/rules/ScalarLeafs.js +1 -1
  235. package/validation/rules/ScalarLeafs.mjs +1 -1
  236. package/validation/rules/SingleFieldSubscriptions.js +1 -1
  237. package/validation/rules/SingleFieldSubscriptions.mjs +1 -1
  238. package/validation/rules/UniqueArgumentNames.js +1 -1
  239. package/validation/rules/UniqueArgumentNames.mjs +1 -1
  240. package/validation/rules/UniqueDirectiveNames.js +55 -0
  241. package/validation/rules/UniqueDirectiveNames.js.flow +64 -0
  242. package/validation/rules/UniqueDirectiveNames.mjs +43 -0
  243. package/validation/rules/UniqueDirectivesPerLocation.js +1 -1
  244. package/validation/rules/UniqueDirectivesPerLocation.mjs +1 -1
  245. package/validation/rules/UniqueEnumValueNames.js +94 -0
  246. package/validation/rules/UniqueEnumValueNames.js.flow +87 -0
  247. package/validation/rules/UniqueEnumValueNames.mjs +81 -0
  248. package/validation/rules/UniqueFieldDefinitionNames.js +105 -0
  249. package/validation/rules/UniqueFieldDefinitionNames.js.flow +101 -0
  250. package/validation/rules/UniqueFieldDefinitionNames.mjs +92 -0
  251. package/validation/rules/UniqueFragmentNames.js +1 -1
  252. package/validation/rules/UniqueFragmentNames.mjs +1 -1
  253. package/validation/rules/UniqueInputFieldNames.js +1 -1
  254. package/validation/rules/UniqueInputFieldNames.mjs +1 -1
  255. package/validation/rules/UniqueOperationNames.js +1 -1
  256. package/validation/rules/UniqueOperationNames.mjs +1 -1
  257. package/validation/rules/UniqueOperationTypes.js +85 -0
  258. package/validation/rules/UniqueOperationTypes.js.flow +76 -0
  259. package/validation/rules/UniqueOperationTypes.mjs +73 -0
  260. package/validation/rules/UniqueTypeNames.js +62 -0
  261. package/validation/rules/UniqueTypeNames.js.flow +67 -0
  262. package/validation/rules/UniqueTypeNames.mjs +50 -0
  263. package/validation/rules/UniqueVariableNames.js +1 -1
  264. package/validation/rules/UniqueVariableNames.mjs +1 -1
  265. package/validation/rules/ValuesOfCorrectType.js +29 -13
  266. package/validation/rules/ValuesOfCorrectType.js.flow +4 -5
  267. package/validation/rules/ValuesOfCorrectType.mjs +28 -13
  268. package/validation/rules/VariablesAreInputTypes.js +1 -1
  269. package/validation/rules/VariablesAreInputTypes.mjs +1 -1
  270. package/validation/rules/VariablesInAllowedPosition.js +4 -4
  271. package/validation/rules/VariablesInAllowedPosition.mjs +4 -4
  272. package/validation/specifiedRules.js +14 -2
  273. package/validation/specifiedRules.js.flow +13 -0
  274. package/validation/specifiedRules.mjs +8 -2
  275. package/validation/validate.js +1 -1
  276. package/validation/validate.mjs +1 -1
  277. package/jsutils/find.js +0 -22
  278. package/jsutils/find.js.flow +0 -19
  279. package/jsutils/find.mjs +0 -15
@@ -8,6 +8,7 @@
8
8
  */
9
9
 
10
10
  import { forEach, isCollection } from 'iterall';
11
+ import objectValues from '../polyfills/objectValues';
11
12
  import inspect from '../jsutils/inspect';
12
13
  import isInvalid from '../jsutils/isInvalid';
13
14
  import orList from '../jsutils/orList';
@@ -147,58 +148,53 @@ export function coerceValue(
147
148
  const fields = type.getFields();
148
149
 
149
150
  // Ensure every defined field is valid.
150
- for (const fieldName in fields) {
151
- if (hasOwnProperty.call(fields, fieldName)) {
152
- const field = fields[fieldName];
153
- const fieldValue = value[fieldName];
154
- if (isInvalid(fieldValue)) {
155
- if (!isInvalid(field.defaultValue)) {
156
- coercedValue[fieldName] = field.defaultValue;
157
- } else if (isNonNullType(field.type)) {
158
- errors = add(
159
- errors,
160
- coercionError(
161
- `Field ${printPath(atPath(path, fieldName))} of required ` +
162
- `type ${inspect(field.type)} was not provided`,
163
- blameNode,
164
- ),
165
- );
166
- }
167
- } else {
168
- const coercedField = coerceValue(
169
- fieldValue,
170
- field.type,
171
- blameNode,
172
- atPath(path, fieldName),
173
- );
174
- if (coercedField.errors) {
175
- errors = add(errors, coercedField.errors);
176
- } else if (!errors) {
177
- coercedValue[fieldName] = coercedField.value;
178
- }
179
- }
180
- }
181
- }
182
-
183
- // Ensure every provided field is defined.
184
- for (const fieldName in value) {
185
- if (hasOwnProperty.call(value, fieldName)) {
186
- if (!fields[fieldName]) {
187
- const suggestions = suggestionList(fieldName, Object.keys(fields));
188
- const didYouMean =
189
- suggestions.length !== 0
190
- ? `did you mean ${orList(suggestions)}?`
191
- : undefined;
151
+ for (const field of objectValues(fields)) {
152
+ const fieldValue = value[field.name];
153
+ if (isInvalid(fieldValue)) {
154
+ if (!isInvalid(field.defaultValue)) {
155
+ coercedValue[field.name] = field.defaultValue;
156
+ } else if (isNonNullType(field.type)) {
192
157
  errors = add(
193
158
  errors,
194
159
  coercionError(
195
- `Field "${fieldName}" is not defined by type ${type.name}`,
160
+ `Field ${printPath(atPath(path, field.name))} of required ` +
161
+ `type ${inspect(field.type)} was not provided`,
196
162
  blameNode,
197
- path,
198
- didYouMean,
199
163
  ),
200
164
  );
201
165
  }
166
+ } else {
167
+ const coercedField = coerceValue(
168
+ fieldValue,
169
+ field.type,
170
+ blameNode,
171
+ atPath(path, field.name),
172
+ );
173
+ if (coercedField.errors) {
174
+ errors = add(errors, coercedField.errors);
175
+ } else if (!errors) {
176
+ coercedValue[field.name] = coercedField.value;
177
+ }
178
+ }
179
+ }
180
+
181
+ // Ensure every provided field is defined.
182
+ for (const fieldName of Object.keys(value)) {
183
+ if (!fields[fieldName]) {
184
+ const suggestions = suggestionList(fieldName, Object.keys(fields));
185
+ const didYouMean =
186
+ suggestions.length !== 0
187
+ ? `did you mean ${orList(suggestions)}?`
188
+ : undefined;
189
+ errors = add(
190
+ errors,
191
+ coercionError(
192
+ `Field "${fieldName}" is not defined by type ${type.name}`,
193
+ blameNode,
194
+ path,
195
+ didYouMean,
196
+ ),
197
+ );
202
198
  }
203
199
  }
204
200
 
@@ -253,5 +249,3 @@ function printPath(path) {
253
249
  }
254
250
  return pathStr ? 'value' + pathStr : '';
255
251
  }
256
-
257
- const hasOwnProperty = Object.prototype.hasOwnProperty;
@@ -6,9 +6,10 @@ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterat
6
6
  * This source code is licensed under the MIT license found in the
7
7
  * LICENSE file in the root directory of this source tree.
8
8
  *
9
- * strict
9
+ *
10
10
  */
11
11
  import { forEach, isCollection } from 'iterall';
12
+ import objectValues from '../polyfills/objectValues';
12
13
  import inspect from '../jsutils/inspect';
13
14
  import isInvalid from '../jsutils/isInvalid';
14
15
  import orList from '../jsutils/orList';
@@ -104,39 +105,58 @@ export function coerceValue(value, type, blameNode, path) {
104
105
  var _coercedValue = {};
105
106
  var fields = type.getFields(); // Ensure every defined field is valid.
106
107
 
107
- for (var fieldName in fields) {
108
- if (hasOwnProperty.call(fields, fieldName)) {
109
- var field = fields[fieldName];
110
- var fieldValue = value[fieldName];
108
+ var _iteratorNormalCompletion = true;
109
+ var _didIteratorError = false;
110
+ var _iteratorError = undefined;
111
+
112
+ try {
113
+ for (var _iterator = objectValues(fields)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
114
+ var field = _step.value;
115
+ var fieldValue = value[field.name];
111
116
 
112
117
  if (isInvalid(fieldValue)) {
113
118
  if (!isInvalid(field.defaultValue)) {
114
- _coercedValue[fieldName] = field.defaultValue;
119
+ _coercedValue[field.name] = field.defaultValue;
115
120
  } else if (isNonNullType(field.type)) {
116
- _errors = add(_errors, coercionError("Field ".concat(printPath(atPath(path, fieldName)), " of required ") + "type ".concat(inspect(field.type), " was not provided"), blameNode));
121
+ _errors = add(_errors, coercionError("Field ".concat(printPath(atPath(path, field.name)), " of required ") + "type ".concat(inspect(field.type), " was not provided"), blameNode));
117
122
  }
118
123
  } else {
119
- var coercedField = coerceValue(fieldValue, field.type, blameNode, atPath(path, fieldName));
124
+ var coercedField = coerceValue(fieldValue, field.type, blameNode, atPath(path, field.name));
120
125
 
121
126
  if (coercedField.errors) {
122
127
  _errors = add(_errors, coercedField.errors);
123
128
  } else if (!_errors) {
124
- _coercedValue[fieldName] = coercedField.value;
129
+ _coercedValue[field.name] = coercedField.value;
125
130
  }
126
131
  }
132
+ } // Ensure every provided field is defined.
133
+
134
+ } catch (err) {
135
+ _didIteratorError = true;
136
+ _iteratorError = err;
137
+ } finally {
138
+ try {
139
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
140
+ _iterator.return();
141
+ }
142
+ } finally {
143
+ if (_didIteratorError) {
144
+ throw _iteratorError;
145
+ }
127
146
  }
128
- } // Ensure every provided field is defined.
147
+ }
129
148
 
149
+ var _arr = Object.keys(value);
130
150
 
131
- for (var _fieldName in value) {
132
- if (hasOwnProperty.call(value, _fieldName)) {
133
- if (!fields[_fieldName]) {
134
- var _suggestions = suggestionList(_fieldName, Object.keys(fields));
151
+ for (var _i = 0; _i < _arr.length; _i++) {
152
+ var fieldName = _arr[_i];
135
153
 
136
- var _didYouMean = _suggestions.length !== 0 ? "did you mean ".concat(orList(_suggestions), "?") : undefined;
154
+ if (!fields[fieldName]) {
155
+ var _suggestions = suggestionList(fieldName, Object.keys(fields));
137
156
 
138
- _errors = add(_errors, coercionError("Field \"".concat(_fieldName, "\" is not defined by type ").concat(type.name), blameNode, path, _didYouMean));
139
- }
157
+ var _didYouMean = _suggestions.length !== 0 ? "did you mean ".concat(orList(_suggestions), "?") : undefined;
158
+
159
+ _errors = add(_errors, coercionError("Field \"".concat(fieldName, "\" is not defined by type ").concat(type.name), blameNode, path, _didYouMean));
140
160
  }
141
161
  }
142
162
 
@@ -190,6 +210,4 @@ function printPath(path) {
190
210
  }
191
211
 
192
212
  return pathStr ? 'value' + pathStr : '';
193
- }
194
-
195
- var hasOwnProperty = Object.prototype.hasOwnProperty;
213
+ }
@@ -11,7 +11,7 @@ exports.concatAST = concatAST;
11
11
  * This source code is licensed under the MIT license found in the
12
12
  * LICENSE file in the root directory of this source tree.
13
13
  *
14
- * strict
14
+ *
15
15
  */
16
16
 
17
17
  /**
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * strict
7
+ *
8
8
  */
9
9
 
10
10
  /**