graphql 14.0.0 → 14.1.1

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 (285) 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.js +4 -4
  15. package/execution/execute.js.flow +4 -6
  16. package/execution/execute.mjs +5 -5
  17. package/execution/index.mjs +1 -1
  18. package/execution/values.js +4 -4
  19. package/execution/values.js.flow +3 -3
  20. package/execution/values.mjs +3 -3
  21. package/graphql.js +1 -1
  22. package/graphql.mjs +1 -1
  23. package/index.js +12 -0
  24. package/index.js.flow +4 -0
  25. package/index.mjs +4 -4
  26. package/jsutils/dedent.js +2 -2
  27. package/jsutils/dedent.js.flow +1 -1
  28. package/jsutils/dedent.mjs +2 -2
  29. package/jsutils/defineToJSON.js +17 -6
  30. package/jsutils/defineToJSON.js.flow +14 -5
  31. package/jsutils/defineToJSON.mjs +14 -6
  32. package/jsutils/defineToStringTag.js +5 -5
  33. package/jsutils/defineToStringTag.js.flow +3 -3
  34. package/jsutils/defineToStringTag.mjs +4 -4
  35. package/jsutils/inspect.js +46 -12
  36. package/jsutils/inspect.js.flow +42 -15
  37. package/jsutils/inspect.mjs +45 -5
  38. package/jsutils/instanceOf.js +1 -1
  39. package/jsutils/instanceOf.mjs +1 -1
  40. package/jsutils/invariant.js +1 -1
  41. package/jsutils/invariant.mjs +1 -1
  42. package/jsutils/isInvalid.js +1 -1
  43. package/jsutils/isInvalid.mjs +1 -1
  44. package/jsutils/isNullish.js +1 -1
  45. package/jsutils/isNullish.mjs +1 -1
  46. package/jsutils/isPromise.js +1 -1
  47. package/jsutils/isPromise.mjs +1 -1
  48. package/jsutils/keyMap.js +1 -1
  49. package/jsutils/keyMap.mjs +1 -1
  50. package/jsutils/keyValMap.js +1 -1
  51. package/jsutils/keyValMap.mjs +1 -1
  52. package/jsutils/mapValue.js +54 -0
  53. package/jsutils/mapValue.js.flow +27 -0
  54. package/jsutils/mapValue.mjs +44 -0
  55. package/jsutils/memoize3.js +1 -1
  56. package/jsutils/memoize3.mjs +1 -1
  57. package/jsutils/nodejsCustomInspectSymbol.js +18 -0
  58. package/jsutils/nodejsCustomInspectSymbol.js.flow +15 -0
  59. package/jsutils/nodejsCustomInspectSymbol.mjs +10 -0
  60. package/jsutils/orList.js +17 -4
  61. package/jsutils/orList.js.flow +13 -7
  62. package/jsutils/orList.mjs +14 -4
  63. package/jsutils/promiseForObject.js +1 -1
  64. package/jsutils/promiseForObject.mjs +1 -1
  65. package/jsutils/promiseReduce.js +1 -1
  66. package/jsutils/promiseReduce.mjs +1 -1
  67. package/jsutils/quotedOrList.js +1 -1
  68. package/jsutils/quotedOrList.mjs +1 -1
  69. package/jsutils/suggestionList.js +1 -1
  70. package/jsutils/suggestionList.mjs +1 -1
  71. package/language/blockStringValue.js +2 -2
  72. package/language/blockStringValue.js.flow +1 -1
  73. package/language/blockStringValue.mjs +2 -2
  74. package/language/directiveLocation.js +1 -1
  75. package/language/directiveLocation.mjs +1 -1
  76. package/language/index.mjs +1 -1
  77. package/language/kinds.js +1 -1
  78. package/language/kinds.mjs +1 -1
  79. package/language/lexer.js +29 -13
  80. package/language/lexer.js.flow +34 -20
  81. package/language/lexer.mjs +28 -13
  82. package/language/location.js +1 -1
  83. package/language/location.mjs +1 -1
  84. package/language/parser.js +31 -38
  85. package/language/parser.js.flow +32 -48
  86. package/language/parser.mjs +30 -38
  87. package/language/predicates.js +1 -1
  88. package/language/predicates.mjs +1 -1
  89. package/language/printer.js +13 -7
  90. package/language/printer.js.flow +19 -9
  91. package/language/printer.mjs +13 -7
  92. package/language/source.js +8 -7
  93. package/language/source.mjs +1 -9
  94. package/language/visitor.js +11 -20
  95. package/language/visitor.js.flow +4 -5
  96. package/language/visitor.mjs +8 -20
  97. package/package.json +10 -3
  98. package/polyfills/find.js +31 -0
  99. package/polyfills/find.js.flow +29 -0
  100. package/polyfills/find.mjs +23 -0
  101. package/{jsutils → polyfills}/isFinite.js +1 -1
  102. package/{jsutils → polyfills}/isFinite.js.flow +0 -0
  103. package/{jsutils → polyfills}/isFinite.mjs +1 -1
  104. package/{jsutils → polyfills}/isInteger.js +1 -1
  105. package/{jsutils → polyfills}/isInteger.js.flow +0 -0
  106. package/{jsutils → polyfills}/isInteger.mjs +1 -1
  107. package/polyfills/objectEntries.js +26 -0
  108. package/polyfills/objectEntries.js.flow +19 -0
  109. package/polyfills/objectEntries.mjs +18 -0
  110. package/{jsutils → polyfills}/objectValues.js +1 -1
  111. package/{jsutils → polyfills}/objectValues.js.flow +1 -1
  112. package/{jsutils → polyfills}/objectValues.mjs +1 -1
  113. package/subscription/asyncIteratorReject.mjs +1 -1
  114. package/subscription/index.mjs +1 -1
  115. package/subscription/mapAsyncIterator.mjs +1 -1
  116. package/subscription/subscribe.js +1 -1
  117. package/subscription/subscribe.js.flow +1 -1
  118. package/subscription/subscribe.mjs +2 -2
  119. package/type/definition.js +31 -130
  120. package/type/definition.js.flow +35 -47
  121. package/type/definition.mjs +30 -131
  122. package/type/directives.js +25 -29
  123. package/type/directives.js.flow +24 -20
  124. package/type/directives.mjs +22 -30
  125. package/type/index.js +12 -0
  126. package/type/index.js.flow +4 -0
  127. package/type/index.mjs +5 -3
  128. package/type/introspection.js +3 -3
  129. package/type/introspection.js.flow +1 -1
  130. package/type/introspection.mjs +2 -2
  131. package/type/scalars.js +45 -34
  132. package/type/scalars.js.flow +40 -26
  133. package/type/scalars.mjs +44 -26
  134. package/type/schema.js +82 -87
  135. package/type/schema.js.flow +17 -9
  136. package/type/schema.mjs +79 -86
  137. package/type/validate.js +168 -175
  138. package/type/validate.js.flow +8 -49
  139. package/type/validate.mjs +159 -175
  140. package/utilities/TypeInfo.js +10 -23
  141. package/utilities/TypeInfo.js.flow +1 -1
  142. package/utilities/TypeInfo.mjs +2 -24
  143. package/utilities/assertValidName.js +1 -1
  144. package/utilities/assertValidName.mjs +1 -1
  145. package/utilities/astFromValue.js +2 -2
  146. package/utilities/astFromValue.js.flow +1 -1
  147. package/utilities/astFromValue.mjs +2 -2
  148. package/utilities/buildASTSchema.js +169 -152
  149. package/utilities/buildASTSchema.js.flow +117 -113
  150. package/utilities/buildASTSchema.mjs +160 -152
  151. package/utilities/buildClientSchema.js +24 -14
  152. package/utilities/buildClientSchema.js.flow +24 -14
  153. package/utilities/buildClientSchema.mjs +23 -14
  154. package/utilities/coerceValue.js +38 -19
  155. package/utilities/coerceValue.js.flow +41 -47
  156. package/utilities/coerceValue.mjs +38 -20
  157. package/utilities/concatAST.js +1 -1
  158. package/utilities/concatAST.mjs +1 -1
  159. package/utilities/extendSchema.js +228 -312
  160. package/utilities/extendSchema.js.flow +27 -152
  161. package/utilities/extendSchema.mjs +229 -312
  162. package/utilities/findBreakingChanges.js +7 -5
  163. package/utilities/findBreakingChanges.js.flow +3 -2
  164. package/utilities/findBreakingChanges.mjs +6 -5
  165. package/utilities/findDeprecatedUsages.js +1 -1
  166. package/utilities/findDeprecatedUsages.mjs +1 -1
  167. package/utilities/getOperationAST.js +1 -1
  168. package/utilities/getOperationAST.mjs +1 -1
  169. package/utilities/getOperationRootType.js +1 -1
  170. package/utilities/getOperationRootType.mjs +1 -1
  171. package/utilities/index.mjs +1 -1
  172. package/utilities/introspectionFromSchema.js +1 -1
  173. package/utilities/introspectionFromSchema.mjs +1 -1
  174. package/utilities/introspectionQuery.js +1 -1
  175. package/utilities/introspectionQuery.mjs +1 -1
  176. package/utilities/isValidJSValue.js +1 -1
  177. package/utilities/isValidJSValue.mjs +1 -1
  178. package/utilities/isValidLiteralValue.js +1 -1
  179. package/utilities/isValidLiteralValue.mjs +1 -1
  180. package/utilities/lexicographicSortSchema.js +2 -2
  181. package/utilities/lexicographicSortSchema.js.flow +1 -1
  182. package/utilities/lexicographicSortSchema.mjs +2 -2
  183. package/utilities/schemaPrinter.js +3 -3
  184. package/utilities/schemaPrinter.js.flow +1 -1
  185. package/utilities/schemaPrinter.mjs +2 -2
  186. package/utilities/separateOperations.js +1 -1
  187. package/utilities/separateOperations.mjs +1 -1
  188. package/utilities/typeComparators.js +1 -1
  189. package/utilities/typeComparators.mjs +1 -1
  190. package/utilities/typeFromAST.js +1 -1
  191. package/utilities/typeFromAST.mjs +1 -1
  192. package/utilities/valueFromAST.js +3 -3
  193. package/utilities/valueFromAST.js.flow +1 -1
  194. package/utilities/valueFromAST.mjs +2 -2
  195. package/utilities/valueFromASTUntyped.js +1 -1
  196. package/utilities/valueFromASTUntyped.mjs +1 -1
  197. package/validation/ValidationContext.js +57 -82
  198. package/validation/ValidationContext.js.flow +52 -49
  199. package/validation/ValidationContext.mjs +52 -77
  200. package/validation/index.js.flow +1 -0
  201. package/validation/index.mjs +1 -1
  202. package/validation/rules/ExecutableDefinitions.js +1 -1
  203. package/validation/rules/ExecutableDefinitions.js.flow +1 -1
  204. package/validation/rules/ExecutableDefinitions.mjs +1 -1
  205. package/validation/rules/FieldsOnCorrectType.js +1 -1
  206. package/validation/rules/FieldsOnCorrectType.mjs +1 -1
  207. package/validation/rules/FragmentsOnCompositeTypes.js +1 -1
  208. package/validation/rules/FragmentsOnCompositeTypes.mjs +1 -1
  209. package/validation/rules/KnownArgumentNames.mjs +1 -1
  210. package/validation/rules/KnownDirectives.js +1 -1
  211. package/validation/rules/KnownDirectives.mjs +1 -1
  212. package/validation/rules/KnownFragmentNames.js +1 -1
  213. package/validation/rules/KnownFragmentNames.mjs +1 -1
  214. package/validation/rules/KnownTypeNames.js +59 -21
  215. package/validation/rules/KnownTypeNames.js.flow +54 -20
  216. package/validation/rules/KnownTypeNames.mjs +56 -21
  217. package/validation/rules/LoneAnonymousOperation.js +1 -1
  218. package/validation/rules/LoneAnonymousOperation.mjs +1 -1
  219. package/validation/rules/LoneSchemaDefinition.js +1 -1
  220. package/validation/rules/LoneSchemaDefinition.mjs +1 -1
  221. package/validation/rules/NoFragmentCycles.js +1 -1
  222. package/validation/rules/NoFragmentCycles.js.flow +2 -2
  223. package/validation/rules/NoFragmentCycles.mjs +1 -1
  224. package/validation/rules/NoUndefinedVariables.js +1 -1
  225. package/validation/rules/NoUndefinedVariables.mjs +1 -1
  226. package/validation/rules/NoUnusedFragments.js +1 -1
  227. package/validation/rules/NoUnusedFragments.js.flow +2 -2
  228. package/validation/rules/NoUnusedFragments.mjs +1 -1
  229. package/validation/rules/NoUnusedVariables.js +1 -1
  230. package/validation/rules/NoUnusedVariables.mjs +1 -1
  231. package/validation/rules/OverlappingFieldsCanBeMerged.js +57 -33
  232. package/validation/rules/OverlappingFieldsCanBeMerged.js.flow +5 -6
  233. package/validation/rules/OverlappingFieldsCanBeMerged.mjs +48 -33
  234. package/validation/rules/PossibleFragmentSpreads.js +1 -1
  235. package/validation/rules/PossibleFragmentSpreads.mjs +1 -1
  236. package/validation/rules/PossibleTypeExtensions.js +158 -0
  237. package/validation/rules/PossibleTypeExtensions.js.flow +160 -0
  238. package/validation/rules/PossibleTypeExtensions.mjs +146 -0
  239. package/validation/rules/ProvidedRequiredArguments.mjs +1 -1
  240. package/validation/rules/ScalarLeafs.js +1 -1
  241. package/validation/rules/ScalarLeafs.mjs +1 -1
  242. package/validation/rules/SingleFieldSubscriptions.js +1 -1
  243. package/validation/rules/SingleFieldSubscriptions.mjs +1 -1
  244. package/validation/rules/UniqueArgumentNames.js +1 -1
  245. package/validation/rules/UniqueArgumentNames.mjs +1 -1
  246. package/validation/rules/UniqueDirectiveNames.js +55 -0
  247. package/validation/rules/UniqueDirectiveNames.js.flow +64 -0
  248. package/validation/rules/UniqueDirectiveNames.mjs +43 -0
  249. package/validation/rules/UniqueDirectivesPerLocation.js +1 -1
  250. package/validation/rules/UniqueDirectivesPerLocation.mjs +1 -1
  251. package/validation/rules/UniqueEnumValueNames.js +94 -0
  252. package/validation/rules/UniqueEnumValueNames.js.flow +87 -0
  253. package/validation/rules/UniqueEnumValueNames.mjs +81 -0
  254. package/validation/rules/UniqueFieldDefinitionNames.js +105 -0
  255. package/validation/rules/UniqueFieldDefinitionNames.js.flow +101 -0
  256. package/validation/rules/UniqueFieldDefinitionNames.mjs +92 -0
  257. package/validation/rules/UniqueFragmentNames.js +1 -1
  258. package/validation/rules/UniqueFragmentNames.mjs +1 -1
  259. package/validation/rules/UniqueInputFieldNames.js +1 -1
  260. package/validation/rules/UniqueInputFieldNames.mjs +1 -1
  261. package/validation/rules/UniqueOperationNames.js +1 -1
  262. package/validation/rules/UniqueOperationNames.mjs +1 -1
  263. package/validation/rules/UniqueOperationTypes.js +85 -0
  264. package/validation/rules/UniqueOperationTypes.js.flow +76 -0
  265. package/validation/rules/UniqueOperationTypes.mjs +73 -0
  266. package/validation/rules/UniqueTypeNames.js +62 -0
  267. package/validation/rules/UniqueTypeNames.js.flow +67 -0
  268. package/validation/rules/UniqueTypeNames.mjs +50 -0
  269. package/validation/rules/UniqueVariableNames.js +1 -1
  270. package/validation/rules/UniqueVariableNames.mjs +1 -1
  271. package/validation/rules/ValuesOfCorrectType.js +29 -13
  272. package/validation/rules/ValuesOfCorrectType.js.flow +4 -5
  273. package/validation/rules/ValuesOfCorrectType.mjs +28 -13
  274. package/validation/rules/VariablesAreInputTypes.js +1 -1
  275. package/validation/rules/VariablesAreInputTypes.mjs +1 -1
  276. package/validation/rules/VariablesInAllowedPosition.js +4 -4
  277. package/validation/rules/VariablesInAllowedPosition.mjs +4 -4
  278. package/validation/specifiedRules.js +14 -2
  279. package/validation/specifiedRules.js.flow +13 -0
  280. package/validation/specifiedRules.mjs +8 -2
  281. package/validation/validate.js +1 -1
  282. package/validation/validate.mjs +1 -1
  283. package/jsutils/find.js +0 -22
  284. package/jsutils/find.js.flow +0 -19
  285. package/jsutils/find.mjs +0 -15
@@ -7,6 +7,7 @@
7
7
  * @flow strict
8
8
  */
9
9
 
10
+ import inspect from '../jsutils/inspect';
10
11
  import invariant from '../jsutils/invariant';
11
12
  import keyMap from '../jsutils/keyMap';
12
13
  import keyValMap from '../jsutils/keyValMap';
@@ -116,7 +117,7 @@ export function buildClientSchema(
116
117
  return GraphQLNonNull(assertNullableType(nullableType));
117
118
  }
118
119
  if (!typeRef.name) {
119
- throw new Error('Unknown type reference: ' + JSON.stringify(typeRef));
120
+ throw new Error('Unknown type reference: ' + inspect(typeRef));
120
121
  }
121
122
  return getNamedType(typeRef.name);
122
123
  }
@@ -142,7 +143,9 @@ export function buildClientSchema(
142
143
  const type = getType(typeRef);
143
144
  invariant(
144
145
  isInputType(type),
145
- 'Introspection must provide input type for arguments.',
146
+ 'Introspection must provide input type for arguments, but received: ' +
147
+ inspect(type) +
148
+ '.',
146
149
  );
147
150
  return type;
148
151
  }
@@ -153,7 +156,9 @@ export function buildClientSchema(
153
156
  const type = getType(typeRef);
154
157
  invariant(
155
158
  isOutputType(type),
156
- 'Introspection must provide output type for fields.',
159
+ 'Introspection must provide output type for fields, but received: ' +
160
+ inspect(type) +
161
+ '.',
157
162
  );
158
163
  return type;
159
164
  }
@@ -194,7 +199,7 @@ export function buildClientSchema(
194
199
  throw new Error(
195
200
  'Invalid or incomplete introspection result. Ensure that a full ' +
196
201
  'introspection query is used in order to build a client schema:' +
197
- JSON.stringify(type),
202
+ inspect(type),
198
203
  );
199
204
  }
200
205
 
@@ -214,13 +219,13 @@ export function buildClientSchema(
214
219
  if (!objectIntrospection.interfaces) {
215
220
  throw new Error(
216
221
  'Introspection result missing interfaces: ' +
217
- JSON.stringify(objectIntrospection),
222
+ inspect(objectIntrospection),
218
223
  );
219
224
  }
220
225
  return new GraphQLObjectType({
221
226
  name: objectIntrospection.name,
222
227
  description: objectIntrospection.description,
223
- interfaces: objectIntrospection.interfaces.map(getInterfaceType),
228
+ interfaces: () => objectIntrospection.interfaces.map(getInterfaceType),
224
229
  fields: () => buildFieldDefMap(objectIntrospection),
225
230
  });
226
231
  }
@@ -241,13 +246,13 @@ export function buildClientSchema(
241
246
  if (!unionIntrospection.possibleTypes) {
242
247
  throw new Error(
243
248
  'Introspection result missing possibleTypes: ' +
244
- JSON.stringify(unionIntrospection),
249
+ inspect(unionIntrospection),
245
250
  );
246
251
  }
247
252
  return new GraphQLUnionType({
248
253
  name: unionIntrospection.name,
249
254
  description: unionIntrospection.description,
250
- types: unionIntrospection.possibleTypes.map(getObjectType),
255
+ types: () => unionIntrospection.possibleTypes.map(getObjectType),
251
256
  });
252
257
  }
253
258
 
@@ -257,7 +262,7 @@ export function buildClientSchema(
257
262
  if (!enumIntrospection.enumValues) {
258
263
  throw new Error(
259
264
  'Introspection result missing enumValues: ' +
260
- JSON.stringify(enumIntrospection),
265
+ inspect(enumIntrospection),
261
266
  );
262
267
  }
263
268
  return new GraphQLEnumType({
@@ -280,7 +285,7 @@ export function buildClientSchema(
280
285
  if (!inputObjectIntrospection.inputFields) {
281
286
  throw new Error(
282
287
  'Introspection result missing inputFields: ' +
283
- JSON.stringify(inputObjectIntrospection),
288
+ inspect(inputObjectIntrospection),
284
289
  );
285
290
  }
286
291
  return new GraphQLInputObjectType({
@@ -293,8 +298,7 @@ export function buildClientSchema(
293
298
  function buildFieldDefMap(typeIntrospection) {
294
299
  if (!typeIntrospection.fields) {
295
300
  throw new Error(
296
- 'Introspection result missing fields: ' +
297
- JSON.stringify(typeIntrospection),
301
+ 'Introspection result missing fields: ' + inspect(typeIntrospection),
298
302
  );
299
303
  }
300
304
  return keyValMap(
@@ -304,7 +308,7 @@ export function buildClientSchema(
304
308
  if (!fieldIntrospection.args) {
305
309
  throw new Error(
306
310
  'Introspection result missing field args: ' +
307
- JSON.stringify(fieldIntrospection),
311
+ inspect(fieldIntrospection),
308
312
  );
309
313
  }
310
314
  return {
@@ -341,7 +345,13 @@ export function buildClientSchema(
341
345
  if (!directiveIntrospection.args) {
342
346
  throw new Error(
343
347
  'Introspection result missing directive args: ' +
344
- JSON.stringify(directiveIntrospection),
348
+ inspect(directiveIntrospection),
349
+ );
350
+ }
351
+ if (!directiveIntrospection.locations) {
352
+ throw new Error(
353
+ 'Introspection result missing directive locations: ' +
354
+ inspect(directiveIntrospection),
345
355
  );
346
356
  }
347
357
  return new GraphQLDirective({
@@ -4,8 +4,9 @@
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
+ import inspect from '../jsutils/inspect';
9
10
  import invariant from '../jsutils/invariant';
10
11
  import keyMap from '../jsutils/keyMap';
11
12
  import keyValMap from '../jsutils/keyValMap';
@@ -67,7 +68,7 @@ export function buildClientSchema(introspection, options) {
67
68
  }
68
69
 
69
70
  if (!typeRef.name) {
70
- throw new Error('Unknown type reference: ' + JSON.stringify(typeRef));
71
+ throw new Error('Unknown type reference: ' + inspect(typeRef));
71
72
  }
72
73
 
73
74
  return getNamedType(typeRef.name);
@@ -91,13 +92,13 @@ export function buildClientSchema(introspection, options) {
91
92
 
92
93
  function getInputType(typeRef) {
93
94
  var type = getType(typeRef);
94
- !isInputType(type) ? invariant(0, 'Introspection must provide input type for arguments.') : void 0;
95
+ !isInputType(type) ? invariant(0, 'Introspection must provide input type for arguments, but received: ' + inspect(type) + '.') : void 0;
95
96
  return type;
96
97
  }
97
98
 
98
99
  function getOutputType(typeRef) {
99
100
  var type = getType(typeRef);
100
- !isOutputType(type) ? invariant(0, 'Introspection must provide output type for fields.') : void 0;
101
+ !isOutputType(type) ? invariant(0, 'Introspection must provide output type for fields, but received: ' + inspect(type) + '.') : void 0;
101
102
  return type;
102
103
  }
103
104
 
@@ -136,7 +137,7 @@ export function buildClientSchema(introspection, options) {
136
137
  }
137
138
  }
138
139
 
139
- throw new Error('Invalid or incomplete introspection result. Ensure that a full ' + 'introspection query is used in order to build a client schema:' + JSON.stringify(type));
140
+ throw new Error('Invalid or incomplete introspection result. Ensure that a full ' + 'introspection query is used in order to build a client schema:' + inspect(type));
140
141
  }
141
142
 
142
143
  function buildScalarDef(scalarIntrospection) {
@@ -151,13 +152,15 @@ export function buildClientSchema(introspection, options) {
151
152
 
152
153
  function buildObjectDef(objectIntrospection) {
153
154
  if (!objectIntrospection.interfaces) {
154
- throw new Error('Introspection result missing interfaces: ' + JSON.stringify(objectIntrospection));
155
+ throw new Error('Introspection result missing interfaces: ' + inspect(objectIntrospection));
155
156
  }
156
157
 
157
158
  return new GraphQLObjectType({
158
159
  name: objectIntrospection.name,
159
160
  description: objectIntrospection.description,
160
- interfaces: objectIntrospection.interfaces.map(getInterfaceType),
161
+ interfaces: function interfaces() {
162
+ return objectIntrospection.interfaces.map(getInterfaceType);
163
+ },
161
164
  fields: function fields() {
162
165
  return buildFieldDefMap(objectIntrospection);
163
166
  }
@@ -176,19 +179,21 @@ export function buildClientSchema(introspection, options) {
176
179
 
177
180
  function buildUnionDef(unionIntrospection) {
178
181
  if (!unionIntrospection.possibleTypes) {
179
- throw new Error('Introspection result missing possibleTypes: ' + JSON.stringify(unionIntrospection));
182
+ throw new Error('Introspection result missing possibleTypes: ' + inspect(unionIntrospection));
180
183
  }
181
184
 
182
185
  return new GraphQLUnionType({
183
186
  name: unionIntrospection.name,
184
187
  description: unionIntrospection.description,
185
- types: unionIntrospection.possibleTypes.map(getObjectType)
188
+ types: function types() {
189
+ return unionIntrospection.possibleTypes.map(getObjectType);
190
+ }
186
191
  });
187
192
  }
188
193
 
189
194
  function buildEnumDef(enumIntrospection) {
190
195
  if (!enumIntrospection.enumValues) {
191
- throw new Error('Introspection result missing enumValues: ' + JSON.stringify(enumIntrospection));
196
+ throw new Error('Introspection result missing enumValues: ' + inspect(enumIntrospection));
192
197
  }
193
198
 
194
199
  return new GraphQLEnumType({
@@ -207,7 +212,7 @@ export function buildClientSchema(introspection, options) {
207
212
 
208
213
  function buildInputObjectDef(inputObjectIntrospection) {
209
214
  if (!inputObjectIntrospection.inputFields) {
210
- throw new Error('Introspection result missing inputFields: ' + JSON.stringify(inputObjectIntrospection));
215
+ throw new Error('Introspection result missing inputFields: ' + inspect(inputObjectIntrospection));
211
216
  }
212
217
 
213
218
  return new GraphQLInputObjectType({
@@ -221,14 +226,14 @@ export function buildClientSchema(introspection, options) {
221
226
 
222
227
  function buildFieldDefMap(typeIntrospection) {
223
228
  if (!typeIntrospection.fields) {
224
- throw new Error('Introspection result missing fields: ' + JSON.stringify(typeIntrospection));
229
+ throw new Error('Introspection result missing fields: ' + inspect(typeIntrospection));
225
230
  }
226
231
 
227
232
  return keyValMap(typeIntrospection.fields, function (fieldIntrospection) {
228
233
  return fieldIntrospection.name;
229
234
  }, function (fieldIntrospection) {
230
235
  if (!fieldIntrospection.args) {
231
- throw new Error('Introspection result missing field args: ' + JSON.stringify(fieldIntrospection));
236
+ throw new Error('Introspection result missing field args: ' + inspect(fieldIntrospection));
232
237
  }
233
238
 
234
239
  return {
@@ -258,7 +263,11 @@ export function buildClientSchema(introspection, options) {
258
263
 
259
264
  function buildDirective(directiveIntrospection) {
260
265
  if (!directiveIntrospection.args) {
261
- throw new Error('Introspection result missing directive args: ' + JSON.stringify(directiveIntrospection));
266
+ throw new Error('Introspection result missing directive args: ' + inspect(directiveIntrospection));
267
+ }
268
+
269
+ if (!directiveIntrospection.locations) {
270
+ throw new Error('Introspection result missing directive locations: ' + inspect(directiveIntrospection));
262
271
  }
263
272
 
264
273
  return new GraphQLDirective({
@@ -7,6 +7,8 @@ exports.coerceValue = coerceValue;
7
7
 
8
8
  var _iterall = require("iterall");
9
9
 
10
+ var _objectValues = _interopRequireDefault(require("../polyfills/objectValues"));
11
+
10
12
  var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
11
13
 
12
14
  var _isInvalid = _interopRequireDefault(require("../jsutils/isInvalid"));
@@ -111,39 +113,58 @@ function coerceValue(value, type, blameNode, path) {
111
113
  var _coercedValue = {};
112
114
  var fields = type.getFields(); // Ensure every defined field is valid.
113
115
 
114
- for (var fieldName in fields) {
115
- if (hasOwnProperty.call(fields, fieldName)) {
116
- var field = fields[fieldName];
117
- var fieldValue = value[fieldName];
116
+ var _iteratorNormalCompletion = true;
117
+ var _didIteratorError = false;
118
+ var _iteratorError = undefined;
119
+
120
+ try {
121
+ for (var _iterator = (0, _objectValues.default)(fields)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
122
+ var field = _step.value;
123
+ var fieldValue = value[field.name];
118
124
 
119
125
  if ((0, _isInvalid.default)(fieldValue)) {
120
126
  if (!(0, _isInvalid.default)(field.defaultValue)) {
121
- _coercedValue[fieldName] = field.defaultValue;
127
+ _coercedValue[field.name] = field.defaultValue;
122
128
  } else if ((0, _definition.isNonNullType)(field.type)) {
123
- _errors = add(_errors, coercionError("Field ".concat(printPath(atPath(path, fieldName)), " of required ") + "type ".concat((0, _inspect.default)(field.type), " was not provided"), blameNode));
129
+ _errors = add(_errors, coercionError("Field ".concat(printPath(atPath(path, field.name)), " of required ") + "type ".concat((0, _inspect.default)(field.type), " was not provided"), blameNode));
124
130
  }
125
131
  } else {
126
- var coercedField = coerceValue(fieldValue, field.type, blameNode, atPath(path, fieldName));
132
+ var coercedField = coerceValue(fieldValue, field.type, blameNode, atPath(path, field.name));
127
133
 
128
134
  if (coercedField.errors) {
129
135
  _errors = add(_errors, coercedField.errors);
130
136
  } else if (!_errors) {
131
- _coercedValue[fieldName] = coercedField.value;
137
+ _coercedValue[field.name] = coercedField.value;
132
138
  }
133
139
  }
140
+ } // Ensure every provided field is defined.
141
+
142
+ } catch (err) {
143
+ _didIteratorError = true;
144
+ _iteratorError = err;
145
+ } finally {
146
+ try {
147
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
148
+ _iterator.return();
149
+ }
150
+ } finally {
151
+ if (_didIteratorError) {
152
+ throw _iteratorError;
153
+ }
134
154
  }
135
- } // Ensure every provided field is defined.
155
+ }
136
156
 
157
+ var _arr = Object.keys(value);
137
158
 
138
- for (var _fieldName in value) {
139
- if (hasOwnProperty.call(value, _fieldName)) {
140
- if (!fields[_fieldName]) {
141
- var _suggestions = (0, _suggestionList.default)(_fieldName, Object.keys(fields));
159
+ for (var _i = 0; _i < _arr.length; _i++) {
160
+ var fieldName = _arr[_i];
142
161
 
143
- var _didYouMean = _suggestions.length !== 0 ? "did you mean ".concat((0, _orList.default)(_suggestions), "?") : undefined;
162
+ if (!fields[fieldName]) {
163
+ var _suggestions = (0, _suggestionList.default)(fieldName, Object.keys(fields));
144
164
 
145
- _errors = add(_errors, coercionError("Field \"".concat(_fieldName, "\" is not defined by type ").concat(type.name), blameNode, path, _didYouMean));
146
- }
165
+ var _didYouMean = _suggestions.length !== 0 ? "did you mean ".concat((0, _orList.default)(_suggestions), "?") : undefined;
166
+
167
+ _errors = add(_errors, coercionError("Field \"".concat(fieldName, "\" is not defined by type ").concat(type.name), blameNode, path, _didYouMean));
147
168
  }
148
169
  }
149
170
 
@@ -197,6 +218,4 @@ function printPath(path) {
197
218
  }
198
219
 
199
220
  return pathStr ? 'value' + pathStr : '';
200
- }
201
-
202
- var hasOwnProperty = Object.prototype.hasOwnProperty;
221
+ }
@@ -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
  /**