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
@@ -1,22 +1,21 @@
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 objectEntries from '../../polyfills/objectEntries';
11
11
  import { GraphQLError } from '../../error/GraphQLError';
12
12
  import inspect from '../../jsutils/inspect';
13
- import find from '../../jsutils/find';
14
13
  import { Kind } from '../../language/kinds';
15
14
  import { print } from '../../language/printer';
16
15
  import { getNamedType, isNonNullType, isLeafType, isObjectType, isListType, isInterfaceType } from '../../type/definition';
17
16
  import { typeFromAST } from '../../utilities/typeFromAST';
18
17
  export function fieldsConflictMessage(responseName, reason) {
19
- return "Fields \"".concat(responseName, "\" conflict because ").concat(reasonMessage(reason)) + '. Use different aliases on the fields to fetch both if this was ' + 'intentional.';
18
+ return "Fields \"".concat(responseName, "\" conflict because ").concat(reasonMessage(reason), ". ") + 'Use different aliases on the fields to fetch both if this was intentional.';
20
19
  }
21
20
 
22
21
  function reasonMessage(reason) {
@@ -285,27 +284,45 @@ function collectConflictsWithin(context, conflicts, cachedFieldsAndFragmentNames
285
284
  // A field map is a keyed collection, where each key represents a response
286
285
  // name and the value at that key is a list of all fields which provide that
287
286
  // response name. For every response name, if there are multiple fields, they
288
- // must be compared to find a potential conflict.
289
- var _arr = Object.keys(fieldMap);
290
-
291
- for (var _i3 = 0; _i3 < _arr.length; _i3++) {
292
- var responseName = _arr[_i3];
293
- var fields = fieldMap[responseName]; // This compares every field in the list to every other field in this list
294
- // (except to itself). If the list only has one item, nothing needs to
295
- // be compared.
296
-
297
- if (fields.length > 1) {
298
- for (var i = 0; i < fields.length; i++) {
299
- for (var j = i + 1; j < fields.length; j++) {
300
- var conflict = findConflict(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, false, // within one collection is never mutually exclusive
301
- responseName, fields[i], fields[j]);
302
-
303
- if (conflict) {
304
- conflicts.push(conflict);
287
+ var _iteratorNormalCompletion = true;
288
+ var _didIteratorError = false;
289
+ var _iteratorError = undefined;
290
+
291
+ try {
292
+ for (var _iterator = objectEntries(fieldMap)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
293
+ var _ref5 = _step.value;
294
+ var responseName = _ref5[0];
295
+ var fields = _ref5[1];
296
+
297
+ // This compares every field in the list to every other field in this list
298
+ // (except to itself). If the list only has one item, nothing needs to
299
+ // be compared.
300
+ if (fields.length > 1) {
301
+ for (var i = 0; i < fields.length; i++) {
302
+ for (var j = i + 1; j < fields.length; j++) {
303
+ var conflict = findConflict(context, cachedFieldsAndFragmentNames, comparedFragmentPairs, false, // within one collection is never mutually exclusive
304
+ responseName, fields[i], fields[j]);
305
+
306
+ if (conflict) {
307
+ conflicts.push(conflict);
308
+ }
305
309
  }
306
310
  }
307
311
  }
308
312
  }
313
+ } catch (err) {
314
+ _didIteratorError = true;
315
+ _iteratorError = err;
316
+ } finally {
317
+ try {
318
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
319
+ _iterator.return();
320
+ }
321
+ } finally {
322
+ if (_didIteratorError) {
323
+ throw _iteratorError;
324
+ }
325
+ }
309
326
  }
310
327
  } // Collect all Conflicts between two collections of fields. This is similar to,
311
328
  // but different from the `collectConflictsWithin` function above. This check
@@ -320,10 +337,10 @@ function collectConflictsBetween(context, conflicts, cachedFieldsAndFragmentName
320
337
  // response name. For any response name which appears in both provided field
321
338
  // maps, each field from the first field map must be compared to every field
322
339
  // in the second field map to find potential conflicts.
323
- var _arr2 = Object.keys(fieldMap1);
340
+ var _arr = Object.keys(fieldMap1);
324
341
 
325
- for (var _i4 = 0; _i4 < _arr2.length; _i4++) {
326
- var responseName = _arr2[_i4];
342
+ for (var _i3 = 0; _i3 < _arr.length; _i3++) {
343
+ var responseName = _arr[_i3];
327
344
  var fields2 = fieldMap2[responseName];
328
345
 
329
346
  if (fields2) {
@@ -518,14 +535,14 @@ function _collectFieldsAndFragmentNames(context, parentType, selectionSet, nodeA
518
535
 
519
536
  function subfieldConflicts(conflicts, responseName, node1, node2) {
520
537
  if (conflicts.length > 0) {
521
- return [[responseName, conflicts.map(function (_ref4) {
522
- var reason = _ref4[0];
538
+ return [[responseName, conflicts.map(function (_ref6) {
539
+ var reason = _ref6[0];
523
540
  return reason;
524
- })], conflicts.reduce(function (allFields, _ref5) {
525
- var fields1 = _ref5[1];
541
+ })], conflicts.reduce(function (allFields, _ref7) {
542
+ var fields1 = _ref7[1];
526
543
  return allFields.concat(fields1);
527
- }, [node1]), conflicts.reduce(function (allFields, _ref6) {
528
- var fields2 = _ref6[2];
544
+ }, [node1]), conflicts.reduce(function (allFields, _ref8) {
545
+ var fields2 = _ref8[2];
529
546
  return allFields.concat(fields2);
530
547
  }, [node2])];
531
548
  }
@@ -540,8 +557,6 @@ var PairSet =
540
557
  /*#__PURE__*/
541
558
  function () {
542
559
  function PairSet() {
543
- _defineProperty(this, "_data", void 0);
544
-
545
560
  this._data = Object.create(null);
546
561
  }
547
562
 
@@ -25,7 +25,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
25
25
  * This source code is licensed under the MIT license found in the
26
26
  * LICENSE file in the root directory of this source tree.
27
27
  *
28
- * strict
28
+ *
29
29
  */
30
30
  function typeIncompatibleSpreadMessage(fragName, parentType, fragType) {
31
31
  return "Fragment \"".concat(fragName, "\" cannot be spread here as objects of ") + "type \"".concat(parentType, "\" can never be of type \"").concat(fragType, "\".");
@@ -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 inspect from '../../jsutils/inspect';
10
10
  import { GraphQLError } from '../../error/GraphQLError';
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.extendingUnknownTypeMessage = extendingUnknownTypeMessage;
7
+ exports.extendingDifferentTypeKindMessage = extendingDifferentTypeKindMessage;
8
+ exports.PossibleTypeExtensions = PossibleTypeExtensions;
9
+
10
+ var _quotedOrList = _interopRequireDefault(require("../../jsutils/quotedOrList"));
11
+
12
+ var _suggestionList = _interopRequireDefault(require("../../jsutils/suggestionList"));
13
+
14
+ var _GraphQLError = require("../../error/GraphQLError");
15
+
16
+ var _kinds = require("../../language/kinds");
17
+
18
+ var _predicates = require("../../language/predicates");
19
+
20
+ var _definition = require("../../type/definition");
21
+
22
+ var _defKindToExtKind;
23
+
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
+
26
+ 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; }
27
+
28
+ function extendingUnknownTypeMessage(typeName, suggestedTypes) {
29
+ var message = "Cannot extend type \"".concat(typeName, "\" because it does not defined.");
30
+
31
+ if (suggestedTypes.length) {
32
+ message += " Did you mean ".concat((0, _quotedOrList.default)(suggestedTypes), "?");
33
+ }
34
+
35
+ return message;
36
+ }
37
+
38
+ function extendingDifferentTypeKindMessage(typeName, kind) {
39
+ return "Cannot extend non-".concat(kind, " type \"").concat(typeName, "\".");
40
+ }
41
+ /**
42
+ * Possible type extension
43
+ *
44
+ * A type extension is only valid if the type defined and have the same kind.
45
+ */
46
+
47
+
48
+ function PossibleTypeExtensions(context) {
49
+ var schema = context.getSchema();
50
+ var definedTypes = Object.create(null);
51
+ var _iteratorNormalCompletion = true;
52
+ var _didIteratorError = false;
53
+ var _iteratorError = undefined;
54
+
55
+ try {
56
+ for (var _iterator = context.getDocument().definitions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
57
+ var def = _step.value;
58
+
59
+ if ((0, _predicates.isTypeDefinitionNode)(def)) {
60
+ definedTypes[def.name.value] = def;
61
+ }
62
+ }
63
+ } catch (err) {
64
+ _didIteratorError = true;
65
+ _iteratorError = err;
66
+ } finally {
67
+ try {
68
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
69
+ _iterator.return();
70
+ }
71
+ } finally {
72
+ if (_didIteratorError) {
73
+ throw _iteratorError;
74
+ }
75
+ }
76
+ }
77
+
78
+ return {
79
+ ScalarTypeExtension: checkExtension,
80
+ ObjectTypeExtension: checkExtension,
81
+ InterfaceTypeExtension: checkExtension,
82
+ UnionTypeExtension: checkExtension,
83
+ EnumTypeExtension: checkExtension,
84
+ InputObjectTypeExtension: checkExtension
85
+ };
86
+
87
+ function checkExtension(node) {
88
+ var typeName = node.name.value;
89
+ var defNode = definedTypes[typeName];
90
+ var existingType = schema && schema.getType(typeName);
91
+
92
+ if (defNode) {
93
+ var expectedKind = defKindToExtKind[defNode.kind];
94
+
95
+ if (expectedKind !== node.kind) {
96
+ context.reportError(new _GraphQLError.GraphQLError(extendingDifferentTypeKindMessage(typeName, extensionKindToTypeName(expectedKind)), [defNode, node]));
97
+ }
98
+ } else if (existingType) {
99
+ var _expectedKind = typeToExtKind(existingType);
100
+
101
+ if (_expectedKind !== node.kind) {
102
+ context.reportError(new _GraphQLError.GraphQLError(extendingDifferentTypeKindMessage(typeName, extensionKindToTypeName(_expectedKind)), node));
103
+ }
104
+ } else {
105
+ var allTypeNames = Object.keys(definedTypes);
106
+
107
+ if (schema) {
108
+ allTypeNames = allTypeNames.concat(Object.keys(schema.getTypeMap()));
109
+ }
110
+
111
+ var suggestedTypes = (0, _suggestionList.default)(typeName, allTypeNames);
112
+ context.reportError(new _GraphQLError.GraphQLError(extendingUnknownTypeMessage(typeName, suggestedTypes), node.name));
113
+ }
114
+ }
115
+ }
116
+
117
+ var defKindToExtKind = (_defKindToExtKind = {}, _defineProperty(_defKindToExtKind, _kinds.Kind.SCALAR_TYPE_DEFINITION, _kinds.Kind.SCALAR_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, _kinds.Kind.OBJECT_TYPE_DEFINITION, _kinds.Kind.OBJECT_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, _kinds.Kind.INTERFACE_TYPE_DEFINITION, _kinds.Kind.INTERFACE_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, _kinds.Kind.UNION_TYPE_DEFINITION, _kinds.Kind.UNION_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, _kinds.Kind.ENUM_TYPE_DEFINITION, _kinds.Kind.ENUM_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION, _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION), _defKindToExtKind);
118
+
119
+ function typeToExtKind(type) {
120
+ if ((0, _definition.isScalarType)(type)) {
121
+ return _kinds.Kind.SCALAR_TYPE_EXTENSION;
122
+ } else if ((0, _definition.isObjectType)(type)) {
123
+ return _kinds.Kind.OBJECT_TYPE_EXTENSION;
124
+ } else if ((0, _definition.isInterfaceType)(type)) {
125
+ return _kinds.Kind.INTERFACE_TYPE_EXTENSION;
126
+ } else if ((0, _definition.isUnionType)(type)) {
127
+ return _kinds.Kind.UNION_TYPE_EXTENSION;
128
+ } else if ((0, _definition.isEnumType)(type)) {
129
+ return _kinds.Kind.ENUM_TYPE_EXTENSION;
130
+ } else if ((0, _definition.isInputObjectType)(type)) {
131
+ return _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION;
132
+ }
133
+ }
134
+
135
+ function extensionKindToTypeName(kind) {
136
+ switch (kind) {
137
+ case _kinds.Kind.SCALAR_TYPE_EXTENSION:
138
+ return 'scalar';
139
+
140
+ case _kinds.Kind.OBJECT_TYPE_EXTENSION:
141
+ return 'object';
142
+
143
+ case _kinds.Kind.INTERFACE_TYPE_EXTENSION:
144
+ return 'interface';
145
+
146
+ case _kinds.Kind.UNION_TYPE_EXTENSION:
147
+ return 'union';
148
+
149
+ case _kinds.Kind.ENUM_TYPE_EXTENSION:
150
+ return 'enum';
151
+
152
+ case _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION:
153
+ return 'input object';
154
+
155
+ default:
156
+ return 'unknown type';
157
+ }
158
+ }
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Copyright (c) 2018-present, Facebook, Inc.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict
8
+ */
9
+
10
+ import quotedOrList from '../../jsutils/quotedOrList';
11
+ import suggestionList from '../../jsutils/suggestionList';
12
+ import type { SDLValidationContext } from '../ValidationContext';
13
+ import { GraphQLError } from '../../error/GraphQLError';
14
+ import { Kind } from '../../language/kinds';
15
+ import { isTypeDefinitionNode } from '../../language/predicates';
16
+ import type { ASTVisitor } from '../../language/visitor';
17
+ import {
18
+ isScalarType,
19
+ isObjectType,
20
+ isInterfaceType,
21
+ isUnionType,
22
+ isEnumType,
23
+ isInputObjectType,
24
+ } from '../../type/definition';
25
+
26
+ export function extendingUnknownTypeMessage(
27
+ typeName: string,
28
+ suggestedTypes: Array<string>,
29
+ ): string {
30
+ let message = `Cannot extend type "${typeName}" because it does not defined.`;
31
+ if (suggestedTypes.length) {
32
+ message += ` Did you mean ${quotedOrList(suggestedTypes)}?`;
33
+ }
34
+ return message;
35
+ }
36
+
37
+ export function extendingDifferentTypeKindMessage(
38
+ typeName: string,
39
+ kind: string,
40
+ ): string {
41
+ return `Cannot extend non-${kind} type "${typeName}".`;
42
+ }
43
+
44
+ /**
45
+ * Possible type extension
46
+ *
47
+ * A type extension is only valid if the type defined and have the same kind.
48
+ */
49
+ export function PossibleTypeExtensions(
50
+ context: SDLValidationContext,
51
+ ): ASTVisitor {
52
+ const schema = context.getSchema();
53
+ const definedTypes = Object.create(null);
54
+
55
+ for (const def of context.getDocument().definitions) {
56
+ if (isTypeDefinitionNode(def)) {
57
+ definedTypes[def.name.value] = def;
58
+ }
59
+ }
60
+
61
+ return {
62
+ ScalarTypeExtension: checkExtension,
63
+ ObjectTypeExtension: checkExtension,
64
+ InterfaceTypeExtension: checkExtension,
65
+ UnionTypeExtension: checkExtension,
66
+ EnumTypeExtension: checkExtension,
67
+ InputObjectTypeExtension: checkExtension,
68
+ };
69
+
70
+ function checkExtension(node) {
71
+ const typeName = node.name.value;
72
+ const defNode = definedTypes[typeName];
73
+ const existingType = schema && schema.getType(typeName);
74
+
75
+ if (defNode) {
76
+ const expectedKind = defKindToExtKind[defNode.kind];
77
+ if (expectedKind !== node.kind) {
78
+ context.reportError(
79
+ new GraphQLError(
80
+ extendingDifferentTypeKindMessage(
81
+ typeName,
82
+ extensionKindToTypeName(expectedKind),
83
+ ),
84
+ [defNode, node],
85
+ ),
86
+ );
87
+ }
88
+ } else if (existingType) {
89
+ const expectedKind = typeToExtKind(existingType);
90
+ if (expectedKind !== node.kind) {
91
+ context.reportError(
92
+ new GraphQLError(
93
+ extendingDifferentTypeKindMessage(
94
+ typeName,
95
+ extensionKindToTypeName(expectedKind),
96
+ ),
97
+ node,
98
+ ),
99
+ );
100
+ }
101
+ } else {
102
+ let allTypeNames = Object.keys(definedTypes);
103
+ if (schema) {
104
+ allTypeNames = allTypeNames.concat(Object.keys(schema.getTypeMap()));
105
+ }
106
+
107
+ const suggestedTypes = suggestionList(typeName, allTypeNames);
108
+ context.reportError(
109
+ new GraphQLError(
110
+ extendingUnknownTypeMessage(typeName, suggestedTypes),
111
+ node.name,
112
+ ),
113
+ );
114
+ }
115
+ }
116
+ }
117
+
118
+ const defKindToExtKind = {
119
+ [Kind.SCALAR_TYPE_DEFINITION]: Kind.SCALAR_TYPE_EXTENSION,
120
+ [Kind.OBJECT_TYPE_DEFINITION]: Kind.OBJECT_TYPE_EXTENSION,
121
+ [Kind.INTERFACE_TYPE_DEFINITION]: Kind.INTERFACE_TYPE_EXTENSION,
122
+ [Kind.UNION_TYPE_DEFINITION]: Kind.UNION_TYPE_EXTENSION,
123
+ [Kind.ENUM_TYPE_DEFINITION]: Kind.ENUM_TYPE_EXTENSION,
124
+ [Kind.INPUT_OBJECT_TYPE_DEFINITION]: Kind.INPUT_OBJECT_TYPE_EXTENSION,
125
+ };
126
+
127
+ function typeToExtKind(type) {
128
+ if (isScalarType(type)) {
129
+ return Kind.SCALAR_TYPE_EXTENSION;
130
+ } else if (isObjectType(type)) {
131
+ return Kind.OBJECT_TYPE_EXTENSION;
132
+ } else if (isInterfaceType(type)) {
133
+ return Kind.INTERFACE_TYPE_EXTENSION;
134
+ } else if (isUnionType(type)) {
135
+ return Kind.UNION_TYPE_EXTENSION;
136
+ } else if (isEnumType(type)) {
137
+ return Kind.ENUM_TYPE_EXTENSION;
138
+ } else if (isInputObjectType(type)) {
139
+ return Kind.INPUT_OBJECT_TYPE_EXTENSION;
140
+ }
141
+ }
142
+
143
+ function extensionKindToTypeName(kind) {
144
+ switch (kind) {
145
+ case Kind.SCALAR_TYPE_EXTENSION:
146
+ return 'scalar';
147
+ case Kind.OBJECT_TYPE_EXTENSION:
148
+ return 'object';
149
+ case Kind.INTERFACE_TYPE_EXTENSION:
150
+ return 'interface';
151
+ case Kind.UNION_TYPE_EXTENSION:
152
+ return 'union';
153
+ case Kind.ENUM_TYPE_EXTENSION:
154
+ return 'enum';
155
+ case Kind.INPUT_OBJECT_TYPE_EXTENSION:
156
+ return 'input object';
157
+ default:
158
+ return 'unknown type';
159
+ }
160
+ }
@@ -0,0 +1,146 @@
1
+ var _defKindToExtKind;
2
+
3
+ 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; }
4
+
5
+ /**
6
+ * Copyright (c) 2018-present, Facebook, Inc.
7
+ *
8
+ * This source code is licensed under the MIT license found in the
9
+ * LICENSE file in the root directory of this source tree.
10
+ *
11
+ *
12
+ */
13
+ import quotedOrList from '../../jsutils/quotedOrList';
14
+ import suggestionList from '../../jsutils/suggestionList';
15
+ import { GraphQLError } from '../../error/GraphQLError';
16
+ import { Kind } from '../../language/kinds';
17
+ import { isTypeDefinitionNode } from '../../language/predicates';
18
+ import { isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType } from '../../type/definition';
19
+ export function extendingUnknownTypeMessage(typeName, suggestedTypes) {
20
+ var message = "Cannot extend type \"".concat(typeName, "\" because it does not defined.");
21
+
22
+ if (suggestedTypes.length) {
23
+ message += " Did you mean ".concat(quotedOrList(suggestedTypes), "?");
24
+ }
25
+
26
+ return message;
27
+ }
28
+ export function extendingDifferentTypeKindMessage(typeName, kind) {
29
+ return "Cannot extend non-".concat(kind, " type \"").concat(typeName, "\".");
30
+ }
31
+ /**
32
+ * Possible type extension
33
+ *
34
+ * A type extension is only valid if the type defined and have the same kind.
35
+ */
36
+
37
+ export function PossibleTypeExtensions(context) {
38
+ var schema = context.getSchema();
39
+ var definedTypes = Object.create(null);
40
+ var _iteratorNormalCompletion = true;
41
+ var _didIteratorError = false;
42
+ var _iteratorError = undefined;
43
+
44
+ try {
45
+ for (var _iterator = context.getDocument().definitions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
46
+ var def = _step.value;
47
+
48
+ if (isTypeDefinitionNode(def)) {
49
+ definedTypes[def.name.value] = def;
50
+ }
51
+ }
52
+ } catch (err) {
53
+ _didIteratorError = true;
54
+ _iteratorError = err;
55
+ } finally {
56
+ try {
57
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
58
+ _iterator.return();
59
+ }
60
+ } finally {
61
+ if (_didIteratorError) {
62
+ throw _iteratorError;
63
+ }
64
+ }
65
+ }
66
+
67
+ return {
68
+ ScalarTypeExtension: checkExtension,
69
+ ObjectTypeExtension: checkExtension,
70
+ InterfaceTypeExtension: checkExtension,
71
+ UnionTypeExtension: checkExtension,
72
+ EnumTypeExtension: checkExtension,
73
+ InputObjectTypeExtension: checkExtension
74
+ };
75
+
76
+ function checkExtension(node) {
77
+ var typeName = node.name.value;
78
+ var defNode = definedTypes[typeName];
79
+ var existingType = schema && schema.getType(typeName);
80
+
81
+ if (defNode) {
82
+ var expectedKind = defKindToExtKind[defNode.kind];
83
+
84
+ if (expectedKind !== node.kind) {
85
+ context.reportError(new GraphQLError(extendingDifferentTypeKindMessage(typeName, extensionKindToTypeName(expectedKind)), [defNode, node]));
86
+ }
87
+ } else if (existingType) {
88
+ var _expectedKind = typeToExtKind(existingType);
89
+
90
+ if (_expectedKind !== node.kind) {
91
+ context.reportError(new GraphQLError(extendingDifferentTypeKindMessage(typeName, extensionKindToTypeName(_expectedKind)), node));
92
+ }
93
+ } else {
94
+ var allTypeNames = Object.keys(definedTypes);
95
+
96
+ if (schema) {
97
+ allTypeNames = allTypeNames.concat(Object.keys(schema.getTypeMap()));
98
+ }
99
+
100
+ var suggestedTypes = suggestionList(typeName, allTypeNames);
101
+ context.reportError(new GraphQLError(extendingUnknownTypeMessage(typeName, suggestedTypes), node.name));
102
+ }
103
+ }
104
+ }
105
+ var defKindToExtKind = (_defKindToExtKind = {}, _defineProperty(_defKindToExtKind, Kind.SCALAR_TYPE_DEFINITION, Kind.SCALAR_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, Kind.OBJECT_TYPE_DEFINITION, Kind.OBJECT_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, Kind.INTERFACE_TYPE_DEFINITION, Kind.INTERFACE_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, Kind.UNION_TYPE_DEFINITION, Kind.UNION_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, Kind.ENUM_TYPE_DEFINITION, Kind.ENUM_TYPE_EXTENSION), _defineProperty(_defKindToExtKind, Kind.INPUT_OBJECT_TYPE_DEFINITION, Kind.INPUT_OBJECT_TYPE_EXTENSION), _defKindToExtKind);
106
+
107
+ function typeToExtKind(type) {
108
+ if (isScalarType(type)) {
109
+ return Kind.SCALAR_TYPE_EXTENSION;
110
+ } else if (isObjectType(type)) {
111
+ return Kind.OBJECT_TYPE_EXTENSION;
112
+ } else if (isInterfaceType(type)) {
113
+ return Kind.INTERFACE_TYPE_EXTENSION;
114
+ } else if (isUnionType(type)) {
115
+ return Kind.UNION_TYPE_EXTENSION;
116
+ } else if (isEnumType(type)) {
117
+ return Kind.ENUM_TYPE_EXTENSION;
118
+ } else if (isInputObjectType(type)) {
119
+ return Kind.INPUT_OBJECT_TYPE_EXTENSION;
120
+ }
121
+ }
122
+
123
+ function extensionKindToTypeName(kind) {
124
+ switch (kind) {
125
+ case Kind.SCALAR_TYPE_EXTENSION:
126
+ return 'scalar';
127
+
128
+ case Kind.OBJECT_TYPE_EXTENSION:
129
+ return 'object';
130
+
131
+ case Kind.INTERFACE_TYPE_EXTENSION:
132
+ return 'interface';
133
+
134
+ case Kind.UNION_TYPE_EXTENSION:
135
+ return 'union';
136
+
137
+ case Kind.ENUM_TYPE_EXTENSION:
138
+ return 'enum';
139
+
140
+ case Kind.INPUT_OBJECT_TYPE_EXTENSION:
141
+ return 'input object';
142
+
143
+ default:
144
+ return 'unknown type';
145
+ }
146
+ }
@@ -8,7 +8,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
8
8
  * This source code is licensed under the MIT license found in the
9
9
  * LICENSE file in the root directory of this source tree.
10
10
  *
11
- * strict
11
+ *
12
12
  */
13
13
  import { GraphQLError } from '../../error/GraphQLError';
14
14
  import { Kind } from '../../language/kinds';
@@ -21,7 +21,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
21
21
  * This source code is licensed under the MIT license found in the
22
22
  * LICENSE file in the root directory of this source tree.
23
23
  *
24
- * strict
24
+ *
25
25
  */
26
26
  function noSubselectionAllowedMessage(fieldName, type) {
27
27
  return "Field \"".concat(fieldName, "\" must not have a selection since ") + "type \"".concat(type, "\" has no subfields.");
@@ -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 inspect from '../../jsutils/inspect';
10
10
  import { GraphQLError } from '../../error/GraphQLError';
@@ -14,7 +14,7 @@ var _GraphQLError = require("../../error/GraphQLError");
14
14
  * This source code is licensed under the MIT license found in the
15
15
  * LICENSE file in the root directory of this source tree.
16
16
  *
17
- * strict
17
+ *
18
18
  */
19
19
  function singleFieldOnlyMessage(name) {
20
20
  return (name ? "Subscription \"".concat(name, "\" ") : 'Anonymous Subscription ') + 'must select only one top level field.';
@@ -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
  export function singleFieldOnlyMessage(name) {
@@ -14,7 +14,7 @@ var _GraphQLError = require("../../error/GraphQLError");
14
14
  * This source code is licensed under the MIT license found in the
15
15
  * LICENSE file in the root directory of this source tree.
16
16
  *
17
- * strict
17
+ *
18
18
  */
19
19
  function duplicateArgMessage(argName) {
20
20
  return "There can be only one argument named \"".concat(argName, "\".");