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
package/type/validate.mjs CHANGED
@@ -1,21 +1,19 @@
1
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
-
3
1
  /**
4
2
  * Copyright (c) 2015-present, Facebook, Inc.
5
3
  *
6
4
  * This source code is licensed under the MIT license found in the
7
5
  * LICENSE file in the root directory of this source tree.
8
6
  *
9
- * strict
7
+ *
10
8
  */
9
+ import find from '../polyfills/find';
10
+ import objectValues from '../polyfills/objectValues';
11
+ import objectEntries from '../polyfills/objectEntries';
11
12
  import { isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isNamedType, isInputType, isOutputType, isRequiredArgument } from './definition';
12
13
  import { isDirective } from './directives';
13
14
  import { isIntrospectionType } from './introspection';
14
- import { isSchema } from './schema';
15
+ import { assertSchema } from './schema';
15
16
  import inspect from '../jsutils/inspect';
16
- import find from '../jsutils/find';
17
- import invariant from '../jsutils/invariant';
18
- import objectValues from '../jsutils/objectValues';
19
17
  import { GraphQLError } from '../error/GraphQLError';
20
18
  import { isValidNameError } from '../utilities/assertValidName';
21
19
  import { isEqualType, isTypeSubTypeOf } from '../utilities/typeComparators';
@@ -29,7 +27,7 @@ import { isEqualType, isTypeSubTypeOf } from '../utilities/typeComparators';
29
27
 
30
28
  export function validateSchema(schema) {
31
29
  // First check to ensure the provided value is in fact a GraphQLSchema.
32
- !isSchema(schema) ? invariant(0, "Expected ".concat(inspect(schema), " to be a GraphQL schema.")) : void 0; // If this Schema has already been validated, return the previous results.
30
+ assertSchema(schema); // If this Schema has already been validated, return the previous results.
33
31
 
34
32
  if (schema.__validationErrors) {
35
33
  return schema.__validationErrors;
@@ -65,10 +63,6 @@ var SchemaValidationContext =
65
63
  /*#__PURE__*/
66
64
  function () {
67
65
  function SchemaValidationContext(schema) {
68
- _defineProperty(this, "_errors", void 0);
69
-
70
- _defineProperty(this, "schema", void 0);
71
-
72
66
  this._errors = [];
73
67
  this.schema = schema;
74
68
  }
@@ -308,15 +302,7 @@ function validateFields(context, type) {
308
302
  for (var _iterator5 = fields[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
309
303
  var field = _step5.value;
310
304
  // Ensure they are named correctly.
311
- validateName(context, field); // Ensure they were defined at most once.
312
-
313
- var fieldNodes = getAllFieldNodes(type, field.name);
314
-
315
- if (fieldNodes.length > 1) {
316
- context.reportError("Field ".concat(type.name, ".").concat(field.name, " can only be defined once."), fieldNodes);
317
- continue;
318
- } // Ensure the type is an output type
319
-
305
+ validateName(context, field); // Ensure the type is an output type
320
306
 
321
307
  if (!isOutputType(field.type)) {
322
308
  context.reportError("The type of ".concat(type.name, ".").concat(field.name, " must be Output Type ") + "but got: ".concat(inspect(field.type), "."), getFieldTypeNode(type, field.name));
@@ -419,104 +405,122 @@ function validateObjectImplementsInterface(context, object, iface) {
419
405
  var objectFieldMap = object.getFields();
420
406
  var ifaceFieldMap = iface.getFields(); // Assert each interface field is implemented.
421
407
 
422
- var _arr = Object.keys(ifaceFieldMap);
408
+ var _iteratorNormalCompletion8 = true;
409
+ var _didIteratorError8 = false;
410
+ var _iteratorError8 = undefined;
411
+
412
+ try {
413
+ for (var _iterator8 = objectEntries(ifaceFieldMap)[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {
414
+ var _ref2 = _step8.value;
415
+ var fieldName = _ref2[0];
416
+ var ifaceField = _ref2[1];
417
+ var objectField = objectFieldMap[fieldName]; // Assert interface field exists on object.
418
+
419
+ if (!objectField) {
420
+ context.reportError("Interface field ".concat(iface.name, ".").concat(fieldName, " expected but ") + "".concat(object.name, " does not provide it."), [getFieldNode(iface, fieldName)].concat(getAllNodes(object)));
421
+ continue;
422
+ } // Assert interface field type is satisfied by object field type, by being
423
+ // a valid subtype. (covariant)
423
424
 
424
- for (var _i = 0; _i < _arr.length; _i++) {
425
- var fieldName = _arr[_i];
426
- var objectField = objectFieldMap[fieldName];
427
- var ifaceField = ifaceFieldMap[fieldName]; // Assert interface field exists on object.
428
425
 
429
- if (!objectField) {
430
- context.reportError("Interface field ".concat(iface.name, ".").concat(fieldName, " expected but ") + "".concat(object.name, " does not provide it."), [getFieldNode(iface, fieldName)].concat(getAllNodes(object)));
431
- continue;
432
- } // Assert interface field type is satisfied by object field type, by being
433
- // a valid subtype. (covariant)
426
+ if (!isTypeSubTypeOf(context.schema, objectField.type, ifaceField.type)) {
427
+ context.reportError("Interface field ".concat(iface.name, ".").concat(fieldName, " expects type ") + "".concat(inspect(ifaceField.type), " but ").concat(object.name, ".").concat(fieldName, " ") + "is type ".concat(inspect(objectField.type), "."), [getFieldTypeNode(iface, fieldName), getFieldTypeNode(object, fieldName)]);
428
+ } // Assert each interface field arg is implemented.
434
429
 
435
430
 
436
- if (!isTypeSubTypeOf(context.schema, objectField.type, ifaceField.type)) {
437
- context.reportError("Interface field ".concat(iface.name, ".").concat(fieldName, " expects type ") + "".concat(inspect(ifaceField.type), " but ").concat(object.name, ".").concat(fieldName, " ") + "is type ".concat(inspect(objectField.type), "."), [getFieldTypeNode(iface, fieldName), getFieldTypeNode(object, fieldName)]);
438
- } // Assert each interface field arg is implemented.
431
+ var _iteratorNormalCompletion9 = true;
432
+ var _didIteratorError9 = false;
433
+ var _iteratorError9 = undefined;
439
434
 
435
+ try {
436
+ var _loop = function _loop() {
437
+ var ifaceArg = _step9.value;
438
+ var argName = ifaceArg.name;
439
+ var objectArg = find(objectField.args, function (arg) {
440
+ return arg.name === argName;
441
+ }); // Assert interface field arg exists on object field.
440
442
 
441
- var _iteratorNormalCompletion8 = true;
442
- var _didIteratorError8 = false;
443
- var _iteratorError8 = undefined;
443
+ if (!objectArg) {
444
+ context.reportError("Interface field argument ".concat(iface.name, ".").concat(fieldName, "(").concat(argName, ":) ") + "expected but ".concat(object.name, ".").concat(fieldName, " does not provide it."), [getFieldArgNode(iface, fieldName, argName), getFieldNode(object, fieldName)]);
445
+ return "continue";
446
+ } // Assert interface field arg type matches object field arg type.
447
+ // (invariant)
448
+ // TODO: change to contravariant?
444
449
 
445
- try {
446
- var _loop = function _loop() {
447
- var ifaceArg = _step8.value;
448
- var argName = ifaceArg.name;
449
- var objectArg = find(objectField.args, function (arg) {
450
- return arg.name === argName;
451
- }); // Assert interface field arg exists on object field.
452
450
 
453
- if (!objectArg) {
454
- context.reportError("Interface field argument ".concat(iface.name, ".").concat(fieldName, "(").concat(argName, ":) ") + "expected but ".concat(object.name, ".").concat(fieldName, " does not provide it."), [getFieldArgNode(iface, fieldName, argName), getFieldNode(object, fieldName)]);
455
- return "continue";
456
- } // Assert interface field arg type matches object field arg type.
457
- // (invariant)
458
- // TODO: change to contravariant?
451
+ if (!isEqualType(ifaceArg.type, objectArg.type)) {
452
+ context.reportError("Interface field argument ".concat(iface.name, ".").concat(fieldName, "(").concat(argName, ":) ") + "expects type ".concat(inspect(ifaceArg.type), " but ") + "".concat(object.name, ".").concat(fieldName, "(").concat(argName, ":) is type ") + "".concat(inspect(objectArg.type), "."), [getFieldArgTypeNode(iface, fieldName, argName), getFieldArgTypeNode(object, fieldName, argName)]);
453
+ } // TODO: validate default values?
459
454
 
455
+ };
460
456
 
461
- if (!isEqualType(ifaceArg.type, objectArg.type)) {
462
- context.reportError("Interface field argument ".concat(iface.name, ".").concat(fieldName, "(").concat(argName, ":) ") + "expects type ".concat(inspect(ifaceArg.type), " but ") + "".concat(object.name, ".").concat(fieldName, "(").concat(argName, ":) is type ") + "".concat(inspect(objectArg.type), "."), [getFieldArgTypeNode(iface, fieldName, argName), getFieldArgTypeNode(object, fieldName, argName)]);
463
- } // TODO: validate default values?
457
+ for (var _iterator9 = ifaceField.args[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {
458
+ var _ret = _loop();
464
459
 
465
- };
460
+ if (_ret === "continue") continue;
461
+ } // Assert additional arguments must not be required.
466
462
 
467
- for (var _iterator8 = ifaceField.args[Symbol.iterator](), _step8; !(_iteratorNormalCompletion8 = (_step8 = _iterator8.next()).done); _iteratorNormalCompletion8 = true) {
468
- var _ret = _loop();
463
+ } catch (err) {
464
+ _didIteratorError9 = true;
465
+ _iteratorError9 = err;
466
+ } finally {
467
+ try {
468
+ if (!_iteratorNormalCompletion9 && _iterator9.return != null) {
469
+ _iterator9.return();
470
+ }
471
+ } finally {
472
+ if (_didIteratorError9) {
473
+ throw _iteratorError9;
474
+ }
475
+ }
476
+ }
469
477
 
470
- if (_ret === "continue") continue;
471
- } // Assert additional arguments must not be required.
478
+ var _iteratorNormalCompletion10 = true;
479
+ var _didIteratorError10 = false;
480
+ var _iteratorError10 = undefined;
472
481
 
473
- } catch (err) {
474
- _didIteratorError8 = true;
475
- _iteratorError8 = err;
476
- } finally {
477
482
  try {
478
- if (!_iteratorNormalCompletion8 && _iterator8.return != null) {
479
- _iterator8.return();
483
+ var _loop2 = function _loop2() {
484
+ var objectArg = _step10.value;
485
+ var argName = objectArg.name;
486
+ var ifaceArg = find(ifaceField.args, function (arg) {
487
+ return arg.name === argName;
488
+ });
489
+
490
+ if (!ifaceArg && isRequiredArgument(objectArg)) {
491
+ context.reportError("Object field ".concat(object.name, ".").concat(fieldName, " includes required ") + "argument ".concat(argName, " that is missing from the Interface field ") + "".concat(iface.name, ".").concat(fieldName, "."), [getFieldArgNode(object, fieldName, argName), getFieldNode(iface, fieldName)]);
492
+ }
493
+ };
494
+
495
+ for (var _iterator10 = objectField.args[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {
496
+ _loop2();
480
497
  }
498
+ } catch (err) {
499
+ _didIteratorError10 = true;
500
+ _iteratorError10 = err;
481
501
  } finally {
482
- if (_didIteratorError8) {
483
- throw _iteratorError8;
502
+ try {
503
+ if (!_iteratorNormalCompletion10 && _iterator10.return != null) {
504
+ _iterator10.return();
505
+ }
506
+ } finally {
507
+ if (_didIteratorError10) {
508
+ throw _iteratorError10;
509
+ }
484
510
  }
485
511
  }
486
512
  }
487
-
488
- var _iteratorNormalCompletion9 = true;
489
- var _didIteratorError9 = false;
490
- var _iteratorError9 = undefined;
491
-
513
+ } catch (err) {
514
+ _didIteratorError8 = true;
515
+ _iteratorError8 = err;
516
+ } finally {
492
517
  try {
493
- var _loop2 = function _loop2() {
494
- var objectArg = _step9.value;
495
- var argName = objectArg.name;
496
- var ifaceArg = find(ifaceField.args, function (arg) {
497
- return arg.name === argName;
498
- });
499
-
500
- if (!ifaceArg && isRequiredArgument(objectArg)) {
501
- context.reportError("Object field ".concat(object.name, ".").concat(fieldName, " includes required ") + "argument ".concat(argName, " that is missing from the Interface field ") + "".concat(iface.name, ".").concat(fieldName, "."), [getFieldArgNode(object, fieldName, argName), getFieldNode(iface, fieldName)]);
502
- }
503
- };
504
-
505
- for (var _iterator9 = objectField.args[Symbol.iterator](), _step9; !(_iteratorNormalCompletion9 = (_step9 = _iterator9.next()).done); _iteratorNormalCompletion9 = true) {
506
- _loop2();
518
+ if (!_iteratorNormalCompletion8 && _iterator8.return != null) {
519
+ _iterator8.return();
507
520
  }
508
- } catch (err) {
509
- _didIteratorError9 = true;
510
- _iteratorError9 = err;
511
521
  } finally {
512
- try {
513
- if (!_iteratorNormalCompletion9 && _iterator9.return != null) {
514
- _iterator9.return();
515
- }
516
- } finally {
517
- if (_didIteratorError9) {
518
- throw _iteratorError9;
519
- }
522
+ if (_didIteratorError8) {
523
+ throw _iteratorError8;
520
524
  }
521
525
  }
522
526
  }
@@ -530,13 +534,13 @@ function validateUnionMembers(context, union) {
530
534
  }
531
535
 
532
536
  var includedTypeNames = Object.create(null);
533
- var _iteratorNormalCompletion10 = true;
534
- var _didIteratorError10 = false;
535
- var _iteratorError10 = undefined;
537
+ var _iteratorNormalCompletion11 = true;
538
+ var _didIteratorError11 = false;
539
+ var _iteratorError11 = undefined;
536
540
 
537
541
  try {
538
- for (var _iterator10 = memberTypes[Symbol.iterator](), _step10; !(_iteratorNormalCompletion10 = (_step10 = _iterator10.next()).done); _iteratorNormalCompletion10 = true) {
539
- var memberType = _step10.value;
542
+ for (var _iterator11 = memberTypes[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) {
543
+ var memberType = _step11.value;
540
544
 
541
545
  if (includedTypeNames[memberType.name]) {
542
546
  context.reportError("Union type ".concat(union.name, " can only include type ") + "".concat(memberType.name, " once."), getUnionMemberTypeNodes(union, memberType.name));
@@ -550,16 +554,16 @@ function validateUnionMembers(context, union) {
550
554
  }
551
555
  }
552
556
  } catch (err) {
553
- _didIteratorError10 = true;
554
- _iteratorError10 = err;
557
+ _didIteratorError11 = true;
558
+ _iteratorError11 = err;
555
559
  } finally {
556
560
  try {
557
- if (!_iteratorNormalCompletion10 && _iterator10.return != null) {
558
- _iterator10.return();
561
+ if (!_iteratorNormalCompletion11 && _iterator11.return != null) {
562
+ _iterator11.return();
559
563
  }
560
564
  } finally {
561
- if (_didIteratorError10) {
562
- throw _iteratorError10;
565
+ if (_didIteratorError11) {
566
+ throw _iteratorError11;
563
567
  }
564
568
  }
565
569
  }
@@ -572,21 +576,14 @@ function validateEnumValues(context, enumType) {
572
576
  context.reportError("Enum type ".concat(enumType.name, " must define one or more values."), getAllNodes(enumType));
573
577
  }
574
578
 
575
- var _iteratorNormalCompletion11 = true;
576
- var _didIteratorError11 = false;
577
- var _iteratorError11 = undefined;
579
+ var _iteratorNormalCompletion12 = true;
580
+ var _didIteratorError12 = false;
581
+ var _iteratorError12 = undefined;
578
582
 
579
583
  try {
580
- for (var _iterator11 = enumValues[Symbol.iterator](), _step11; !(_iteratorNormalCompletion11 = (_step11 = _iterator11.next()).done); _iteratorNormalCompletion11 = true) {
581
- var enumValue = _step11.value;
582
- var valueName = enumValue.name; // Ensure no duplicates.
583
-
584
- var allNodes = getEnumValueNodes(enumType, valueName);
585
-
586
- if (allNodes && allNodes.length > 1) {
587
- context.reportError("Enum type ".concat(enumType.name, " can include value ").concat(valueName, " only once."), allNodes);
588
- } // Ensure valid name.
589
-
584
+ for (var _iterator12 = enumValues[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) {
585
+ var enumValue = _step12.value;
586
+ var valueName = enumValue.name; // Ensure valid name.
590
587
 
591
588
  validateName(context, enumValue);
592
589
 
@@ -595,16 +592,16 @@ function validateEnumValues(context, enumType) {
595
592
  }
596
593
  }
597
594
  } catch (err) {
598
- _didIteratorError11 = true;
599
- _iteratorError11 = err;
595
+ _didIteratorError12 = true;
596
+ _iteratorError12 = err;
600
597
  } finally {
601
598
  try {
602
- if (!_iteratorNormalCompletion11 && _iterator11.return != null) {
603
- _iterator11.return();
599
+ if (!_iteratorNormalCompletion12 && _iterator12.return != null) {
600
+ _iterator12.return();
604
601
  }
605
602
  } finally {
606
- if (_didIteratorError11) {
607
- throw _iteratorError11;
603
+ if (_didIteratorError12) {
604
+ throw _iteratorError12;
608
605
  }
609
606
  }
610
607
  }
@@ -618,32 +615,31 @@ function validateInputFields(context, inputObj) {
618
615
  } // Ensure the arguments are valid
619
616
 
620
617
 
621
- var _iteratorNormalCompletion12 = true;
622
- var _didIteratorError12 = false;
623
- var _iteratorError12 = undefined;
618
+ var _iteratorNormalCompletion13 = true;
619
+ var _didIteratorError13 = false;
620
+ var _iteratorError13 = undefined;
624
621
 
625
622
  try {
626
- for (var _iterator12 = fields[Symbol.iterator](), _step12; !(_iteratorNormalCompletion12 = (_step12 = _iterator12.next()).done); _iteratorNormalCompletion12 = true) {
627
- var field = _step12.value;
623
+ for (var _iterator13 = fields[Symbol.iterator](), _step13; !(_iteratorNormalCompletion13 = (_step13 = _iterator13.next()).done); _iteratorNormalCompletion13 = true) {
624
+ var field = _step13.value;
628
625
  // Ensure they are named correctly.
629
- validateName(context, field); // TODO: Ensure they are unique per field.
630
- // Ensure the type is an input type
626
+ validateName(context, field); // Ensure the type is an input type
631
627
 
632
628
  if (!isInputType(field.type)) {
633
629
  context.reportError("The type of ".concat(inputObj.name, ".").concat(field.name, " must be Input Type ") + "but got: ".concat(inspect(field.type), "."), field.astNode && field.astNode.type);
634
630
  }
635
631
  }
636
632
  } catch (err) {
637
- _didIteratorError12 = true;
638
- _iteratorError12 = err;
633
+ _didIteratorError13 = true;
634
+ _iteratorError13 = err;
639
635
  } finally {
640
636
  try {
641
- if (!_iteratorNormalCompletion12 && _iterator12.return != null) {
642
- _iterator12.return();
637
+ if (!_iteratorNormalCompletion13 && _iterator13.return != null) {
638
+ _iterator13.return();
643
639
  }
644
640
  } finally {
645
- if (_didIteratorError12) {
646
- throw _iteratorError12;
641
+ if (_didIteratorError13) {
642
+ throw _iteratorError13;
647
643
  }
648
644
  }
649
645
  }
@@ -657,13 +653,13 @@ function getAllNodes(object) {
657
653
 
658
654
  function getAllSubNodes(object, getter) {
659
655
  var result = [];
660
- var _iteratorNormalCompletion13 = true;
661
- var _didIteratorError13 = false;
662
- var _iteratorError13 = undefined;
656
+ var _iteratorNormalCompletion14 = true;
657
+ var _didIteratorError14 = false;
658
+ var _iteratorError14 = undefined;
663
659
 
664
660
  try {
665
- for (var _iterator13 = getAllNodes(object)[Symbol.iterator](), _step13; !(_iteratorNormalCompletion13 = (_step13 = _iterator13.next()).done); _iteratorNormalCompletion13 = true) {
666
- var astNode = _step13.value;
661
+ for (var _iterator14 = getAllNodes(object)[Symbol.iterator](), _step14; !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) {
662
+ var astNode = _step14.value;
667
663
 
668
664
  if (astNode) {
669
665
  var subNodes = getter(astNode);
@@ -674,16 +670,16 @@ function getAllSubNodes(object, getter) {
674
670
  }
675
671
  }
676
672
  } catch (err) {
677
- _didIteratorError13 = true;
678
- _iteratorError13 = err;
673
+ _didIteratorError14 = true;
674
+ _iteratorError14 = err;
679
675
  } finally {
680
676
  try {
681
- if (!_iteratorNormalCompletion13 && _iterator13.return != null) {
682
- _iterator13.return();
677
+ if (!_iteratorNormalCompletion14 && _iterator14.return != null) {
678
+ _iterator14.return();
683
679
  }
684
680
  } finally {
685
- if (_didIteratorError13) {
686
- throw _iteratorError13;
681
+ if (_didIteratorError14) {
682
+ throw _iteratorError14;
687
683
  }
688
684
  }
689
685
  }
@@ -704,13 +700,9 @@ function getAllImplementsInterfaceNodes(type, iface) {
704
700
  }
705
701
 
706
702
  function getFieldNode(type, fieldName) {
707
- return getAllFieldNodes(type, fieldName)[0];
708
- }
709
-
710
- function getAllFieldNodes(type, fieldName) {
711
- return getAllSubNodes(type, function (typeNode) {
703
+ return find(getAllSubNodes(type, function (typeNode) {
712
704
  return typeNode.fields;
713
- }).filter(function (fieldNode) {
705
+ }), function (fieldNode) {
714
706
  return fieldNode.name.value === fieldName;
715
707
  });
716
708
  }
@@ -729,29 +721,29 @@ function getAllFieldArgNodes(type, fieldName, argName) {
729
721
  var fieldNode = getFieldNode(type, fieldName);
730
722
 
731
723
  if (fieldNode && fieldNode.arguments) {
732
- var _iteratorNormalCompletion14 = true;
733
- var _didIteratorError14 = false;
734
- var _iteratorError14 = undefined;
724
+ var _iteratorNormalCompletion15 = true;
725
+ var _didIteratorError15 = false;
726
+ var _iteratorError15 = undefined;
735
727
 
736
728
  try {
737
- for (var _iterator14 = fieldNode.arguments[Symbol.iterator](), _step14; !(_iteratorNormalCompletion14 = (_step14 = _iterator14.next()).done); _iteratorNormalCompletion14 = true) {
738
- var node = _step14.value;
729
+ for (var _iterator15 = fieldNode.arguments[Symbol.iterator](), _step15; !(_iteratorNormalCompletion15 = (_step15 = _iterator15.next()).done); _iteratorNormalCompletion15 = true) {
730
+ var node = _step15.value;
739
731
 
740
732
  if (node.name.value === argName) {
741
733
  argNodes.push(node);
742
734
  }
743
735
  }
744
736
  } catch (err) {
745
- _didIteratorError14 = true;
746
- _iteratorError14 = err;
737
+ _didIteratorError15 = true;
738
+ _iteratorError15 = err;
747
739
  } finally {
748
740
  try {
749
- if (!_iteratorNormalCompletion14 && _iterator14.return != null) {
750
- _iterator14.return();
741
+ if (!_iteratorNormalCompletion15 && _iterator15.return != null) {
742
+ _iterator15.return();
751
743
  }
752
744
  } finally {
753
- if (_didIteratorError14) {
754
- throw _iteratorError14;
745
+ if (_didIteratorError15) {
746
+ throw _iteratorError15;
755
747
  }
756
748
  }
757
749
  }
@@ -784,12 +776,4 @@ function getUnionMemberTypeNodes(union, typeName) {
784
776
  }).filter(function (typeNode) {
785
777
  return typeNode.name.value === typeName;
786
778
  });
787
- }
788
-
789
- function getEnumValueNodes(enumType, valueName) {
790
- return getAllSubNodes(enumType, function (enumNode) {
791
- return enumNode.values;
792
- }).filter(function (valueNode) {
793
- return valueNode.name.value === valueName;
794
- });
795
779
  }
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.TypeInfo = void 0;
7
7
 
8
+ var _find = _interopRequireDefault(require("../polyfills/find"));
9
+
8
10
  var _kinds = require("../language/kinds");
9
11
 
10
12
  var _definition = require("../type/definition");
@@ -13,11 +15,16 @@ var _introspection = require("../type/introspection");
13
15
 
14
16
  var _typeFromAST = require("./typeFromAST");
15
17
 
16
- var _find = _interopRequireDefault(require("../jsutils/find"));
17
-
18
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
19
 
20
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
20
+ /**
21
+ * Copyright (c) 2015-present, Facebook, Inc.
22
+ *
23
+ * This source code is licensed under the MIT license found in the
24
+ * LICENSE file in the root directory of this source tree.
25
+ *
26
+ *
27
+ */
21
28
 
22
29
  /**
23
30
  * TypeInfo is a utility class which, given a GraphQL schema, can keep track
@@ -31,26 +38,6 @@ function () {
31
38
  // to support non-spec-compliant codebases. You should never need to use it.
32
39
  getFieldDefFn, // Initial type may be provided in rare cases to facilitate traversals
33
40
  initialType) {
34
- _defineProperty(this, "_schema", void 0);
35
-
36
- _defineProperty(this, "_typeStack", void 0);
37
-
38
- _defineProperty(this, "_parentTypeStack", void 0);
39
-
40
- _defineProperty(this, "_inputTypeStack", void 0);
41
-
42
- _defineProperty(this, "_fieldDefStack", void 0);
43
-
44
- _defineProperty(this, "_defaultValueStack", void 0);
45
-
46
- _defineProperty(this, "_directive", void 0);
47
-
48
- _defineProperty(this, "_argument", void 0);
49
-
50
- _defineProperty(this, "_enumValue", void 0);
51
-
52
- _defineProperty(this, "_getFieldDef", void 0);
53
-
54
41
  this._schema = schema;
55
42
  this._typeStack = [];
56
43
  this._parentTypeStack = [];
@@ -7,6 +7,7 @@
7
7
  * @flow strict
8
8
  */
9
9
 
10
+ import find from '../polyfills/find';
10
11
  import { Kind } from '../language/kinds';
11
12
  import {
12
13
  isObjectType,
@@ -39,7 +40,6 @@ import {
39
40
  import type { GraphQLSchema } from '../type/schema';
40
41
  import type { ASTNode, FieldNode } from '../language/ast';
41
42
  import { typeFromAST } from './typeFromAST';
42
- import find from '../jsutils/find';
43
43
 
44
44
  /**
45
45
  * TypeInfo is a utility class which, given a GraphQL schema, can keep track
@@ -1,18 +1,16 @@
1
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
-
3
1
  /**
4
2
  * Copyright (c) 2015-present, Facebook, Inc.
5
3
  *
6
4
  * This source code is licensed under the MIT license found in the
7
5
  * LICENSE file in the root directory of this source tree.
8
6
  *
9
- * strict
7
+ *
10
8
  */
9
+ import find from '../polyfills/find';
11
10
  import { Kind } from '../language/kinds';
12
11
  import { isObjectType, isInterfaceType, isEnumType, isInputObjectType, isListType, isCompositeType, isInputType, isOutputType, getNullableType, getNamedType } from '../type/definition';
13
12
  import { SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef } from '../type/introspection';
14
13
  import { typeFromAST } from './typeFromAST';
15
- import find from '../jsutils/find';
16
14
  /**
17
15
  * TypeInfo is a utility class which, given a GraphQL schema, can keep track
18
16
  * of the current field and type definitions at any point in a GraphQL document
@@ -26,26 +24,6 @@ function () {
26
24
  // to support non-spec-compliant codebases. You should never need to use it.
27
25
  getFieldDefFn, // Initial type may be provided in rare cases to facilitate traversals
28
26
  initialType) {
29
- _defineProperty(this, "_schema", void 0);
30
-
31
- _defineProperty(this, "_typeStack", void 0);
32
-
33
- _defineProperty(this, "_parentTypeStack", void 0);
34
-
35
- _defineProperty(this, "_inputTypeStack", void 0);
36
-
37
- _defineProperty(this, "_fieldDefStack", void 0);
38
-
39
- _defineProperty(this, "_defaultValueStack", void 0);
40
-
41
- _defineProperty(this, "_directive", void 0);
42
-
43
- _defineProperty(this, "_argument", void 0);
44
-
45
- _defineProperty(this, "_enumValue", void 0);
46
-
47
- _defineProperty(this, "_getFieldDef", void 0);
48
-
49
27
  this._schema = schema;
50
28
  this._typeStack = [];
51
29
  this._parentTypeStack = [];
@@ -18,7 +18,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
18
18
  * This source code is licensed under the MIT license found in the
19
19
  * LICENSE file in the root directory of this source tree.
20
20
  *
21
- * strict
21
+ *
22
22
  */
23
23
  var NAME_RX = /^[_a-zA-Z][_a-zA-Z0-9]*$/;
24
24
  /**
@@ -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
  import { GraphQLError } from '../error/GraphQLError';
10
10
  import invariant from '../jsutils/invariant';