graphql 14.0.2 → 14.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/README.md +4 -4
  2. package/error/GraphQLError.js +1 -1
  3. package/error/GraphQLError.js.flow +3 -3
  4. package/error/GraphQLError.mjs +1 -1
  5. package/error/formatError.js +1 -1
  6. package/error/formatError.mjs +1 -1
  7. package/error/index.mjs +1 -1
  8. package/error/locatedError.js +1 -1
  9. package/error/locatedError.mjs +1 -1
  10. package/error/printError.js +1 -1
  11. package/error/printError.mjs +1 -1
  12. package/error/syntaxError.js +1 -1
  13. package/error/syntaxError.mjs +1 -1
  14. package/execution/execute.mjs +1 -1
  15. package/execution/index.mjs +1 -1
  16. package/execution/values.js +3 -3
  17. package/execution/values.js.flow +1 -1
  18. package/execution/values.mjs +2 -2
  19. package/graphql.js +1 -1
  20. package/graphql.mjs +1 -1
  21. package/index.js +12 -0
  22. package/index.js.flow +2 -0
  23. package/index.mjs +2 -2
  24. package/jsutils/dedent.js +1 -1
  25. package/jsutils/dedent.mjs +1 -1
  26. package/jsutils/defineToJSON.js +17 -6
  27. package/jsutils/defineToJSON.js.flow +14 -5
  28. package/jsutils/defineToJSON.mjs +14 -6
  29. package/jsutils/defineToStringTag.js +5 -5
  30. package/jsutils/defineToStringTag.js.flow +3 -3
  31. package/jsutils/defineToStringTag.mjs +4 -4
  32. package/jsutils/inspect.js +22 -11
  33. package/jsutils/inspect.js.flow +22 -2
  34. package/jsutils/inspect.mjs +21 -4
  35. package/jsutils/instanceOf.js +1 -1
  36. package/jsutils/instanceOf.mjs +1 -1
  37. package/jsutils/invariant.js +1 -1
  38. package/jsutils/invariant.mjs +1 -1
  39. package/jsutils/isInvalid.js +1 -1
  40. package/jsutils/isInvalid.mjs +1 -1
  41. package/jsutils/isNullish.js +1 -1
  42. package/jsutils/isNullish.mjs +1 -1
  43. package/jsutils/isPromise.js +1 -1
  44. package/jsutils/isPromise.mjs +1 -1
  45. package/jsutils/keyMap.js +1 -1
  46. package/jsutils/keyMap.mjs +1 -1
  47. package/jsutils/keyValMap.js +1 -1
  48. package/jsutils/keyValMap.mjs +1 -1
  49. package/jsutils/mapValue.js +54 -0
  50. package/jsutils/mapValue.js.flow +27 -0
  51. package/jsutils/mapValue.mjs +44 -0
  52. package/jsutils/memoize3.js +1 -1
  53. package/jsutils/memoize3.mjs +1 -1
  54. package/jsutils/nodejsCustomInspectSymbol.js +18 -0
  55. package/jsutils/nodejsCustomInspectSymbol.js.flow +15 -0
  56. package/jsutils/nodejsCustomInspectSymbol.mjs +10 -0
  57. package/jsutils/orList.js +17 -4
  58. package/jsutils/orList.js.flow +13 -7
  59. package/jsutils/orList.mjs +14 -4
  60. package/jsutils/promiseForObject.js +1 -1
  61. package/jsutils/promiseForObject.mjs +1 -1
  62. package/jsutils/promiseReduce.js +1 -1
  63. package/jsutils/promiseReduce.mjs +1 -1
  64. package/jsutils/quotedOrList.js +1 -1
  65. package/jsutils/quotedOrList.mjs +1 -1
  66. package/jsutils/suggestionList.js +1 -1
  67. package/jsutils/suggestionList.mjs +1 -1
  68. package/language/blockStringValue.js +1 -1
  69. package/language/blockStringValue.mjs +1 -1
  70. package/language/directiveLocation.js +1 -1
  71. package/language/directiveLocation.mjs +1 -1
  72. package/language/index.mjs +1 -1
  73. package/language/kinds.js +1 -1
  74. package/language/kinds.mjs +1 -1
  75. package/language/lexer.js +28 -12
  76. package/language/lexer.js.flow +33 -19
  77. package/language/lexer.mjs +27 -12
  78. package/language/location.js +1 -1
  79. package/language/location.mjs +1 -1
  80. package/language/parser.js +31 -38
  81. package/language/parser.js.flow +32 -48
  82. package/language/parser.mjs +30 -38
  83. package/language/predicates.js +1 -1
  84. package/language/predicates.mjs +1 -1
  85. package/language/printer.js +13 -7
  86. package/language/printer.js.flow +19 -9
  87. package/language/printer.mjs +13 -7
  88. package/language/source.js +8 -7
  89. package/language/source.mjs +1 -9
  90. package/language/visitor.js +6 -5
  91. package/language/visitor.js.flow +2 -4
  92. package/language/visitor.mjs +6 -5
  93. package/package.json +5 -2
  94. package/polyfills/find.js +31 -0
  95. package/polyfills/find.js.flow +29 -0
  96. package/polyfills/find.mjs +23 -0
  97. package/{jsutils → polyfills}/isFinite.js +1 -1
  98. package/{jsutils → polyfills}/isFinite.js.flow +0 -0
  99. package/{jsutils → polyfills}/isFinite.mjs +1 -1
  100. package/{jsutils → polyfills}/isInteger.js +1 -1
  101. package/{jsutils → polyfills}/isInteger.js.flow +0 -0
  102. package/{jsutils → polyfills}/isInteger.mjs +1 -1
  103. package/polyfills/objectEntries.js +26 -0
  104. package/polyfills/objectEntries.js.flow +19 -0
  105. package/polyfills/objectEntries.mjs +18 -0
  106. package/{jsutils → polyfills}/objectValues.js +1 -1
  107. package/{jsutils → polyfills}/objectValues.js.flow +1 -1
  108. package/{jsutils → polyfills}/objectValues.mjs +1 -1
  109. package/subscription/asyncIteratorReject.mjs +1 -1
  110. package/subscription/index.mjs +1 -1
  111. package/subscription/mapAsyncIterator.mjs +1 -1
  112. package/subscription/subscribe.js +1 -1
  113. package/subscription/subscribe.mjs +1 -1
  114. package/type/definition.js +31 -130
  115. package/type/definition.js.flow +35 -47
  116. package/type/definition.mjs +30 -131
  117. package/type/directives.js +25 -29
  118. package/type/directives.js.flow +24 -20
  119. package/type/directives.mjs +22 -30
  120. package/type/index.js +12 -0
  121. package/type/index.js.flow +4 -0
  122. package/type/index.mjs +5 -3
  123. package/type/introspection.js +3 -3
  124. package/type/introspection.js.flow +1 -1
  125. package/type/introspection.mjs +2 -2
  126. package/type/scalars.js +45 -34
  127. package/type/scalars.js.flow +40 -26
  128. package/type/scalars.mjs +44 -26
  129. package/type/schema.js +82 -87
  130. package/type/schema.js.flow +17 -9
  131. package/type/schema.mjs +79 -86
  132. package/type/validate.js +168 -175
  133. package/type/validate.js.flow +8 -49
  134. package/type/validate.mjs +159 -175
  135. package/utilities/TypeInfo.js +10 -23
  136. package/utilities/TypeInfo.js.flow +1 -1
  137. package/utilities/TypeInfo.mjs +2 -24
  138. package/utilities/assertValidName.js +1 -1
  139. package/utilities/assertValidName.mjs +1 -1
  140. package/utilities/astFromValue.js +2 -2
  141. package/utilities/astFromValue.js.flow +1 -1
  142. package/utilities/astFromValue.mjs +2 -2
  143. package/utilities/buildASTSchema.js +53 -53
  144. package/utilities/buildASTSchema.js.flow +14 -30
  145. package/utilities/buildASTSchema.mjs +45 -55
  146. package/utilities/buildClientSchema.js +3 -3
  147. package/utilities/buildClientSchema.js.flow +6 -2
  148. package/utilities/buildClientSchema.mjs +3 -3
  149. package/utilities/coerceValue.js +38 -19
  150. package/utilities/coerceValue.js.flow +41 -47
  151. package/utilities/coerceValue.mjs +38 -20
  152. package/utilities/concatAST.js +1 -1
  153. package/utilities/concatAST.mjs +1 -1
  154. package/utilities/extendSchema.js +228 -312
  155. package/utilities/extendSchema.js.flow +27 -152
  156. package/utilities/extendSchema.mjs +229 -312
  157. package/utilities/findBreakingChanges.js +7 -5
  158. package/utilities/findBreakingChanges.js.flow +3 -2
  159. package/utilities/findBreakingChanges.mjs +6 -5
  160. package/utilities/findDeprecatedUsages.js +1 -1
  161. package/utilities/findDeprecatedUsages.mjs +1 -1
  162. package/utilities/getOperationAST.js +1 -1
  163. package/utilities/getOperationAST.mjs +1 -1
  164. package/utilities/getOperationRootType.js +1 -1
  165. package/utilities/getOperationRootType.mjs +1 -1
  166. package/utilities/index.mjs +1 -1
  167. package/utilities/introspectionFromSchema.js +1 -1
  168. package/utilities/introspectionFromSchema.mjs +1 -1
  169. package/utilities/introspectionQuery.js +1 -1
  170. package/utilities/introspectionQuery.mjs +1 -1
  171. package/utilities/isValidJSValue.js +1 -1
  172. package/utilities/isValidJSValue.mjs +1 -1
  173. package/utilities/isValidLiteralValue.js +1 -1
  174. package/utilities/isValidLiteralValue.mjs +1 -1
  175. package/utilities/lexicographicSortSchema.js +2 -2
  176. package/utilities/lexicographicSortSchema.js.flow +1 -1
  177. package/utilities/lexicographicSortSchema.mjs +2 -2
  178. package/utilities/schemaPrinter.js +3 -3
  179. package/utilities/schemaPrinter.js.flow +1 -1
  180. package/utilities/schemaPrinter.mjs +2 -2
  181. package/utilities/separateOperations.js +1 -1
  182. package/utilities/separateOperations.mjs +1 -1
  183. package/utilities/typeComparators.js +1 -1
  184. package/utilities/typeComparators.mjs +1 -1
  185. package/utilities/typeFromAST.js +1 -1
  186. package/utilities/typeFromAST.mjs +1 -1
  187. package/utilities/valueFromAST.js +3 -3
  188. package/utilities/valueFromAST.js.flow +1 -1
  189. package/utilities/valueFromAST.mjs +2 -2
  190. package/utilities/valueFromASTUntyped.js +1 -1
  191. package/utilities/valueFromASTUntyped.mjs +1 -1
  192. package/validation/ValidationContext.js +57 -82
  193. package/validation/ValidationContext.js.flow +52 -49
  194. package/validation/ValidationContext.mjs +52 -77
  195. package/validation/index.mjs +1 -1
  196. package/validation/rules/ExecutableDefinitions.js +1 -1
  197. package/validation/rules/ExecutableDefinitions.js.flow +1 -1
  198. package/validation/rules/ExecutableDefinitions.mjs +1 -1
  199. package/validation/rules/FieldsOnCorrectType.js +1 -1
  200. package/validation/rules/FieldsOnCorrectType.mjs +1 -1
  201. package/validation/rules/FragmentsOnCompositeTypes.js +1 -1
  202. package/validation/rules/FragmentsOnCompositeTypes.mjs +1 -1
  203. package/validation/rules/KnownArgumentNames.mjs +1 -1
  204. package/validation/rules/KnownDirectives.js +1 -1
  205. package/validation/rules/KnownDirectives.mjs +1 -1
  206. package/validation/rules/KnownFragmentNames.js +1 -1
  207. package/validation/rules/KnownFragmentNames.mjs +1 -1
  208. package/validation/rules/KnownTypeNames.js +59 -21
  209. package/validation/rules/KnownTypeNames.js.flow +54 -20
  210. package/validation/rules/KnownTypeNames.mjs +56 -21
  211. package/validation/rules/LoneAnonymousOperation.js +1 -1
  212. package/validation/rules/LoneAnonymousOperation.mjs +1 -1
  213. package/validation/rules/LoneSchemaDefinition.js +1 -1
  214. package/validation/rules/LoneSchemaDefinition.mjs +1 -1
  215. package/validation/rules/NoFragmentCycles.js +1 -1
  216. package/validation/rules/NoFragmentCycles.js.flow +2 -2
  217. package/validation/rules/NoFragmentCycles.mjs +1 -1
  218. package/validation/rules/NoUndefinedVariables.js +1 -1
  219. package/validation/rules/NoUndefinedVariables.mjs +1 -1
  220. package/validation/rules/NoUnusedFragments.js +1 -1
  221. package/validation/rules/NoUnusedFragments.js.flow +2 -2
  222. package/validation/rules/NoUnusedFragments.mjs +1 -1
  223. package/validation/rules/NoUnusedVariables.js +1 -1
  224. package/validation/rules/NoUnusedVariables.mjs +1 -1
  225. package/validation/rules/OverlappingFieldsCanBeMerged.js +56 -32
  226. package/validation/rules/OverlappingFieldsCanBeMerged.js.flow +3 -3
  227. package/validation/rules/OverlappingFieldsCanBeMerged.mjs +47 -32
  228. package/validation/rules/PossibleFragmentSpreads.js +1 -1
  229. package/validation/rules/PossibleFragmentSpreads.mjs +1 -1
  230. package/validation/rules/PossibleTypeExtensions.js +158 -0
  231. package/validation/rules/PossibleTypeExtensions.js.flow +160 -0
  232. package/validation/rules/PossibleTypeExtensions.mjs +146 -0
  233. package/validation/rules/ProvidedRequiredArguments.mjs +1 -1
  234. package/validation/rules/ScalarLeafs.js +1 -1
  235. package/validation/rules/ScalarLeafs.mjs +1 -1
  236. package/validation/rules/SingleFieldSubscriptions.js +1 -1
  237. package/validation/rules/SingleFieldSubscriptions.mjs +1 -1
  238. package/validation/rules/UniqueArgumentNames.js +1 -1
  239. package/validation/rules/UniqueArgumentNames.mjs +1 -1
  240. package/validation/rules/UniqueDirectiveNames.js +55 -0
  241. package/validation/rules/UniqueDirectiveNames.js.flow +64 -0
  242. package/validation/rules/UniqueDirectiveNames.mjs +43 -0
  243. package/validation/rules/UniqueDirectivesPerLocation.js +1 -1
  244. package/validation/rules/UniqueDirectivesPerLocation.mjs +1 -1
  245. package/validation/rules/UniqueEnumValueNames.js +94 -0
  246. package/validation/rules/UniqueEnumValueNames.js.flow +87 -0
  247. package/validation/rules/UniqueEnumValueNames.mjs +81 -0
  248. package/validation/rules/UniqueFieldDefinitionNames.js +105 -0
  249. package/validation/rules/UniqueFieldDefinitionNames.js.flow +101 -0
  250. package/validation/rules/UniqueFieldDefinitionNames.mjs +92 -0
  251. package/validation/rules/UniqueFragmentNames.js +1 -1
  252. package/validation/rules/UniqueFragmentNames.mjs +1 -1
  253. package/validation/rules/UniqueInputFieldNames.js +1 -1
  254. package/validation/rules/UniqueInputFieldNames.mjs +1 -1
  255. package/validation/rules/UniqueOperationNames.js +1 -1
  256. package/validation/rules/UniqueOperationNames.mjs +1 -1
  257. package/validation/rules/UniqueOperationTypes.js +85 -0
  258. package/validation/rules/UniqueOperationTypes.js.flow +76 -0
  259. package/validation/rules/UniqueOperationTypes.mjs +73 -0
  260. package/validation/rules/UniqueTypeNames.js +62 -0
  261. package/validation/rules/UniqueTypeNames.js.flow +67 -0
  262. package/validation/rules/UniqueTypeNames.mjs +50 -0
  263. package/validation/rules/UniqueVariableNames.js +1 -1
  264. package/validation/rules/UniqueVariableNames.mjs +1 -1
  265. package/validation/rules/ValuesOfCorrectType.js +29 -13
  266. package/validation/rules/ValuesOfCorrectType.js.flow +4 -5
  267. package/validation/rules/ValuesOfCorrectType.mjs +28 -13
  268. package/validation/rules/VariablesAreInputTypes.js +1 -1
  269. package/validation/rules/VariablesAreInputTypes.mjs +1 -1
  270. package/validation/rules/VariablesInAllowedPosition.js +4 -4
  271. package/validation/rules/VariablesInAllowedPosition.mjs +4 -4
  272. package/validation/specifiedRules.js +14 -2
  273. package/validation/specifiedRules.js.flow +13 -0
  274. package/validation/specifiedRules.mjs +8 -2
  275. package/validation/validate.js +1 -1
  276. package/validation/validate.mjs +1 -1
  277. package/jsutils/find.js +0 -22
  278. package/jsutils/find.js.flow +0 -19
  279. package/jsutils/find.mjs +0 -15
@@ -10,14 +10,16 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
10
10
  * This source code is licensed under the MIT license found in the
11
11
  * LICENSE file in the root directory of this source tree.
12
12
  *
13
- * strict
13
+ *
14
14
  */
15
+ import objectEntries from '../polyfills/objectEntries';
15
16
  import defineToJSON from '../jsutils/defineToJSON';
16
17
  import defineToStringTag from '../jsutils/defineToStringTag';
17
18
  import instanceOf from '../jsutils/instanceOf';
18
19
  import inspect from '../jsutils/inspect';
19
20
  import invariant from '../jsutils/invariant';
20
21
  import keyMap from '../jsutils/keyMap';
22
+ import mapValue from '../jsutils/mapValue';
21
23
  import { Kind } from '../language/kinds';
22
24
  import { valueFromASTUntyped } from '../utilities/valueFromASTUntyped';
23
25
  export function isType(type) {
@@ -279,6 +281,7 @@ export function getNamedType(type) {
279
281
  */
280
282
 
281
283
  function resolveThunk(thunk) {
284
+ // $FlowFixMe(>=0.90.0)
282
285
  return typeof thunk === 'function' ? thunk() : thunk;
283
286
  }
284
287
  /**
@@ -311,20 +314,6 @@ export var GraphQLScalarType =
311
314
  /*#__PURE__*/
312
315
  function () {
313
316
  function GraphQLScalarType(config) {
314
- _defineProperty(this, "name", void 0);
315
-
316
- _defineProperty(this, "description", void 0);
317
-
318
- _defineProperty(this, "serialize", void 0);
319
-
320
- _defineProperty(this, "parseValue", void 0);
321
-
322
- _defineProperty(this, "parseLiteral", void 0);
323
-
324
- _defineProperty(this, "astNode", void 0);
325
-
326
- _defineProperty(this, "extensionASTNodes", void 0);
327
-
328
317
  this.name = config.name;
329
318
  this.description = config.description;
330
319
  this.serialize = config.serialize;
@@ -397,20 +386,6 @@ export var GraphQLObjectType =
397
386
  /*#__PURE__*/
398
387
  function () {
399
388
  function GraphQLObjectType(config) {
400
- _defineProperty(this, "name", void 0);
401
-
402
- _defineProperty(this, "description", void 0);
403
-
404
- _defineProperty(this, "astNode", void 0);
405
-
406
- _defineProperty(this, "extensionASTNodes", void 0);
407
-
408
- _defineProperty(this, "isTypeOf", void 0);
409
-
410
- _defineProperty(this, "_fields", void 0);
411
-
412
- _defineProperty(this, "_interfaces", void 0);
413
-
414
389
  this.name = config.name;
415
390
  this.description = config.description;
416
391
  this.astNode = config.astNode;
@@ -459,48 +434,29 @@ function defineInterfaces(config) {
459
434
  function defineFieldMap(config) {
460
435
  var fieldMap = resolveThunk(config.fields) || {};
461
436
  !isPlainObj(fieldMap) ? invariant(0, "".concat(config.name, " fields must be an object with field names as keys or a ") + 'function which returns such an object.') : void 0;
462
- var resultFieldMap = Object.create(null);
463
-
464
- var _arr = Object.keys(fieldMap);
465
-
466
- var _loop = function _loop() {
467
- var fieldName = _arr[_i];
468
- var fieldConfig = fieldMap[fieldName];
437
+ return mapValue(fieldMap, function (fieldConfig, fieldName) {
469
438
  !isPlainObj(fieldConfig) ? invariant(0, "".concat(config.name, ".").concat(fieldName, " field config must be an object")) : void 0;
470
439
  !!fieldConfig.hasOwnProperty('isDeprecated') ? invariant(0, "".concat(config.name, ".").concat(fieldName, " should provide \"deprecationReason\" ") + 'instead of "isDeprecated".') : void 0;
471
-
472
- var field = _objectSpread({}, fieldConfig, {
440
+ !(fieldConfig.resolve == null || typeof fieldConfig.resolve === 'function') ? invariant(0, "".concat(config.name, ".").concat(fieldName, " field resolver must be a function if ") + "provided, but got: ".concat(inspect(fieldConfig.resolve), ".")) : void 0;
441
+ var argsConfig = fieldConfig.args || {};
442
+ !isPlainObj(argsConfig) ? invariant(0, "".concat(config.name, ".").concat(fieldName, " args must be an object with argument ") + 'names as keys.') : void 0;
443
+ var args = objectEntries(argsConfig).map(function (_ref) {
444
+ var argName = _ref[0],
445
+ arg = _ref[1];
446
+ return {
447
+ name: argName,
448
+ description: arg.description === undefined ? null : arg.description,
449
+ type: arg.type,
450
+ defaultValue: arg.defaultValue,
451
+ astNode: arg.astNode
452
+ };
453
+ });
454
+ return _objectSpread({}, fieldConfig, {
473
455
  isDeprecated: Boolean(fieldConfig.deprecationReason),
474
- name: fieldName
456
+ name: fieldName,
457
+ args: args
475
458
  });
476
-
477
- !(field.resolve == null || typeof field.resolve === 'function') ? invariant(0, "".concat(config.name, ".").concat(fieldName, " field resolver must be a function if ") + "provided, but got: ".concat(inspect(field.resolve), ".")) : void 0;
478
- var argsConfig = fieldConfig.args;
479
-
480
- if (!argsConfig) {
481
- field.args = [];
482
- } else {
483
- !isPlainObj(argsConfig) ? invariant(0, "".concat(config.name, ".").concat(fieldName, " args must be an object with argument ") + 'names as keys.') : void 0;
484
- field.args = Object.keys(argsConfig).map(function (argName) {
485
- var arg = argsConfig[argName];
486
- return {
487
- name: argName,
488
- description: arg.description === undefined ? null : arg.description,
489
- type: arg.type,
490
- defaultValue: arg.defaultValue,
491
- astNode: arg.astNode
492
- };
493
- });
494
- }
495
-
496
- resultFieldMap[fieldName] = field;
497
- };
498
-
499
- for (var _i = 0; _i < _arr.length; _i++) {
500
- _loop();
501
- }
502
-
503
- return resultFieldMap;
459
+ });
504
460
  }
505
461
 
506
462
  function isPlainObj(obj) {
@@ -533,18 +489,6 @@ export var GraphQLInterfaceType =
533
489
  /*#__PURE__*/
534
490
  function () {
535
491
  function GraphQLInterfaceType(config) {
536
- _defineProperty(this, "name", void 0);
537
-
538
- _defineProperty(this, "description", void 0);
539
-
540
- _defineProperty(this, "astNode", void 0);
541
-
542
- _defineProperty(this, "extensionASTNodes", void 0);
543
-
544
- _defineProperty(this, "resolveType", void 0);
545
-
546
- _defineProperty(this, "_fields", void 0);
547
-
548
492
  this.name = config.name;
549
493
  this.description = config.description;
550
494
  this.astNode = config.astNode;
@@ -602,18 +546,6 @@ export var GraphQLUnionType =
602
546
  /*#__PURE__*/
603
547
  function () {
604
548
  function GraphQLUnionType(config) {
605
- _defineProperty(this, "name", void 0);
606
-
607
- _defineProperty(this, "description", void 0);
608
-
609
- _defineProperty(this, "astNode", void 0);
610
-
611
- _defineProperty(this, "extensionASTNodes", void 0);
612
-
613
- _defineProperty(this, "resolveType", void 0);
614
-
615
- _defineProperty(this, "_types", void 0);
616
-
617
549
  this.name = config.name;
618
550
  this.description = config.description;
619
551
  this.astNode = config.astNode;
@@ -679,20 +611,6 @@ function () {
679
611
  function GraphQLEnumType(config
680
612
  /* <T> */
681
613
  ) {
682
- _defineProperty(this, "name", void 0);
683
-
684
- _defineProperty(this, "description", void 0);
685
-
686
- _defineProperty(this, "astNode", void 0);
687
-
688
- _defineProperty(this, "extensionASTNodes", void 0);
689
-
690
- _defineProperty(this, "_values", void 0);
691
-
692
- _defineProperty(this, "_valueLookup", void 0);
693
-
694
- _defineProperty(this, "_nameLookup", void 0);
695
-
696
614
  this.name = config.name;
697
615
  this.description = config.description;
698
616
  this.astNode = config.astNode;
@@ -766,8 +684,9 @@ function defineEnumValues(type, valueMap
766
684
  /* <T> */
767
685
  ) {
768
686
  !isPlainObj(valueMap) ? invariant(0, "".concat(type.name, " values must be an object with value names as keys.")) : void 0;
769
- return Object.keys(valueMap).map(function (valueName) {
770
- var value = valueMap[valueName];
687
+ return objectEntries(valueMap).map(function (_ref2) {
688
+ var valueName = _ref2[0],
689
+ value = _ref2[1];
771
690
  !isPlainObj(value) ? invariant(0, "".concat(type.name, ".").concat(valueName, " must refer to an object with a \"value\" key ") + "representing an internal value but got: ".concat(inspect(value), ".")) : void 0;
772
691
  !!value.hasOwnProperty('isDeprecated') ? invariant(0, "".concat(type.name, ".").concat(valueName, " should provide \"deprecationReason\" instead ") + 'of "isDeprecated".') : void 0;
773
692
  return {
@@ -805,16 +724,6 @@ export var GraphQLInputObjectType =
805
724
  /*#__PURE__*/
806
725
  function () {
807
726
  function GraphQLInputObjectType(config) {
808
- _defineProperty(this, "name", void 0);
809
-
810
- _defineProperty(this, "description", void 0);
811
-
812
- _defineProperty(this, "astNode", void 0);
813
-
814
- _defineProperty(this, "extensionASTNodes", void 0);
815
-
816
- _defineProperty(this, "_fields", void 0);
817
-
818
727
  this.name = config.name;
819
728
  this.description = config.description;
820
729
  this.astNode = config.astNode;
@@ -846,22 +755,12 @@ defineToJSON(GraphQLInputObjectType);
846
755
  function defineInputFieldMap(config) {
847
756
  var fieldMap = resolveThunk(config.fields) || {};
848
757
  !isPlainObj(fieldMap) ? invariant(0, "".concat(config.name, " fields must be an object with field names as keys or a ") + 'function which returns such an object.') : void 0;
849
- var resultFieldMap = Object.create(null);
850
-
851
- var _arr2 = Object.keys(fieldMap);
852
-
853
- for (var _i2 = 0; _i2 < _arr2.length; _i2++) {
854
- var fieldName = _arr2[_i2];
855
-
856
- var field = _objectSpread({}, fieldMap[fieldName], {
758
+ return mapValue(fieldMap, function (fieldConfig, fieldName) {
759
+ !!fieldConfig.hasOwnProperty('resolve') ? invariant(0, "".concat(config.name, ".").concat(fieldName, " field has a resolve property, but ") + 'Input Types cannot define resolvers.') : void 0;
760
+ return _objectSpread({}, fieldConfig, {
857
761
  name: fieldName
858
762
  });
859
-
860
- !!field.hasOwnProperty('resolve') ? invariant(0, "".concat(config.name, ".").concat(fieldName, " field has a resolve property, but ") + 'Input Types cannot define resolvers.') : void 0;
861
- resultFieldMap[fieldName] = field;
862
- }
863
-
864
- return resultFieldMap;
763
+ });
865
764
  }
866
765
 
867
766
  export function isRequiredInputField(field) {
@@ -4,9 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isDirective = isDirective;
7
+ exports.assertDirective = assertDirective;
7
8
  exports.isSpecifiedDirective = isSpecifiedDirective;
8
9
  exports.specifiedDirectives = exports.GraphQLDeprecatedDirective = exports.DEFAULT_DEPRECATION_REASON = exports.GraphQLSkipDirective = exports.GraphQLIncludeDirective = exports.GraphQLDirective = void 0;
9
10
 
11
+ var _objectEntries = _interopRequireDefault(require("../polyfills/objectEntries"));
12
+
10
13
  var _definition = require("./definition");
11
14
 
12
15
  var _scalars = require("./scalars");
@@ -19,16 +22,23 @@ var _instanceOf = _interopRequireDefault(require("../jsutils/instanceOf"));
19
22
 
20
23
  var _invariant = _interopRequireDefault(require("../jsutils/invariant"));
21
24
 
25
+ var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
26
+
22
27
  var _directiveLocation = require("../language/directiveLocation");
23
28
 
24
29
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
30
 
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; }
31
+ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
27
32
 
28
33
  // eslint-disable-next-line no-redeclare
29
34
  function isDirective(directive) {
30
35
  return (0, _instanceOf.default)(directive, GraphQLDirective);
31
36
  }
37
+
38
+ function assertDirective(directive) {
39
+ !isDirective(directive) ? (0, _invariant.default)(0, "Expected ".concat((0, _inspect.default)(directive), " to be a GraphQL directive.")) : void 0;
40
+ return directive;
41
+ }
32
42
  /**
33
43
  * Directives are used by the GraphQL runtime as a way of modifying execution
34
44
  * behavior. Type system creators will usually not create these directly.
@@ -39,39 +49,25 @@ var GraphQLDirective =
39
49
  /*#__PURE__*/
40
50
  function () {
41
51
  function GraphQLDirective(config) {
42
- _defineProperty(this, "name", void 0);
43
-
44
- _defineProperty(this, "description", void 0);
45
-
46
- _defineProperty(this, "locations", void 0);
47
-
48
- _defineProperty(this, "args", void 0);
49
-
50
- _defineProperty(this, "astNode", void 0);
51
-
52
52
  this.name = config.name;
53
53
  this.description = config.description;
54
54
  this.locations = config.locations;
55
55
  this.astNode = config.astNode;
56
56
  !config.name ? (0, _invariant.default)(0, 'Directive must be named.') : void 0;
57
- !Array.isArray(config.locations) ? (0, _invariant.default)(0, 'Must provide locations for directive.') : void 0;
58
- var args = config.args;
59
-
60
- if (!args) {
61
- this.args = [];
62
- } else {
63
- !!Array.isArray(args) ? (0, _invariant.default)(0, "@".concat(config.name, " args must be an object with argument names as keys.")) : void 0;
64
- this.args = Object.keys(args).map(function (argName) {
65
- var arg = args[argName];
66
- return {
67
- name: argName,
68
- description: arg.description === undefined ? null : arg.description,
69
- type: arg.type,
70
- defaultValue: arg.defaultValue,
71
- astNode: arg.astNode
72
- };
73
- });
74
- }
57
+ !Array.isArray(config.locations) ? (0, _invariant.default)(0, "@".concat(config.name, " locations must be an Array.")) : void 0;
58
+ var args = config.args || {};
59
+ !(_typeof(args) === 'object' && !Array.isArray(args)) ? (0, _invariant.default)(0, "@".concat(config.name, " args must be an object with argument names as keys.")) : void 0;
60
+ this.args = (0, _objectEntries.default)(args).map(function (_ref) {
61
+ var argName = _ref[0],
62
+ arg = _ref[1];
63
+ return {
64
+ name: argName,
65
+ description: arg.description === undefined ? null : arg.description,
66
+ type: arg.type,
67
+ defaultValue: arg.defaultValue,
68
+ astNode: arg.astNode
69
+ };
70
+ });
75
71
  }
76
72
 
77
73
  var _proto = GraphQLDirective.prototype;
@@ -7,6 +7,7 @@
7
7
  * @flow strict
8
8
  */
9
9
 
10
+ import objectEntries from '../polyfills/objectEntries';
10
11
  import type {
11
12
  GraphQLFieldConfigArgumentMap,
12
13
  GraphQLArgument,
@@ -17,6 +18,7 @@ import defineToStringTag from '../jsutils/defineToStringTag';
17
18
  import defineToJSON from '../jsutils/defineToJSON';
18
19
  import instanceOf from '../jsutils/instanceOf';
19
20
  import invariant from '../jsutils/invariant';
21
+ import inspect from '../jsutils/inspect';
20
22
  import type { DirectiveDefinitionNode } from '../language/ast';
21
23
  import {
22
24
  DirectiveLocation,
@@ -34,6 +36,14 @@ export function isDirective(directive) {
34
36
  return instanceOf(directive, GraphQLDirective);
35
37
  }
36
38
 
39
+ export function assertDirective(directive: mixed): GraphQLDirective {
40
+ invariant(
41
+ isDirective(directive),
42
+ `Expected ${inspect(directive)} to be a GraphQL directive.`,
43
+ );
44
+ return directive;
45
+ }
46
+
37
47
  /**
38
48
  * Directives are used by the GraphQL runtime as a way of modifying execution
39
49
  * behavior. Type system creators will usually not create these directly.
@@ -53,28 +63,22 @@ export class GraphQLDirective {
53
63
  invariant(config.name, 'Directive must be named.');
54
64
  invariant(
55
65
  Array.isArray(config.locations),
56
- 'Must provide locations for directive.',
66
+ `@${config.name} locations must be an Array.`,
67
+ );
68
+
69
+ const args = config.args || {};
70
+ invariant(
71
+ typeof args === 'object' && !Array.isArray(args),
72
+ `@${config.name} args must be an object with argument names as keys.`,
57
73
  );
58
74
 
59
- const args = config.args;
60
- if (!args) {
61
- this.args = [];
62
- } else {
63
- invariant(
64
- !Array.isArray(args),
65
- `@${config.name} args must be an object with argument names as keys.`,
66
- );
67
- this.args = Object.keys(args).map(argName => {
68
- const arg = args[argName];
69
- return {
70
- name: argName,
71
- description: arg.description === undefined ? null : arg.description,
72
- type: arg.type,
73
- defaultValue: arg.defaultValue,
74
- astNode: arg.astNode,
75
- };
76
- });
77
- }
75
+ this.args = objectEntries(args).map(([argName, arg]) => ({
76
+ name: argName,
77
+ description: arg.description === undefined ? null : arg.description,
78
+ type: arg.type,
79
+ defaultValue: arg.defaultValue,
80
+ astNode: arg.astNode,
81
+ }));
78
82
  }
79
83
 
80
84
  toString(): string {
@@ -1,4 +1,4 @@
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; }
1
+ function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2
2
 
3
3
  /**
4
4
  * Copyright (c) 2015-present, Facebook, Inc.
@@ -6,14 +6,16 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
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
+ import objectEntries from '../polyfills/objectEntries';
11
12
  import { GraphQLNonNull } from './definition';
12
13
  import { GraphQLString, GraphQLBoolean } from './scalars';
13
14
  import defineToStringTag from '../jsutils/defineToStringTag';
14
15
  import defineToJSON from '../jsutils/defineToJSON';
15
16
  import instanceOf from '../jsutils/instanceOf';
16
17
  import invariant from '../jsutils/invariant';
18
+ import inspect from '../jsutils/inspect';
17
19
  import { DirectiveLocation } from '../language/directiveLocation';
18
20
  /**
19
21
  * Test if the given value is a GraphQL directive.
@@ -23,6 +25,10 @@ import { DirectiveLocation } from '../language/directiveLocation';
23
25
  export function isDirective(directive) {
24
26
  return instanceOf(directive, GraphQLDirective);
25
27
  }
28
+ export function assertDirective(directive) {
29
+ !isDirective(directive) ? invariant(0, "Expected ".concat(inspect(directive), " to be a GraphQL directive.")) : void 0;
30
+ return directive;
31
+ }
26
32
  /**
27
33
  * Directives are used by the GraphQL runtime as a way of modifying execution
28
34
  * behavior. Type system creators will usually not create these directly.
@@ -32,39 +38,25 @@ export var GraphQLDirective =
32
38
  /*#__PURE__*/
33
39
  function () {
34
40
  function GraphQLDirective(config) {
35
- _defineProperty(this, "name", void 0);
36
-
37
- _defineProperty(this, "description", void 0);
38
-
39
- _defineProperty(this, "locations", void 0);
40
-
41
- _defineProperty(this, "args", void 0);
42
-
43
- _defineProperty(this, "astNode", void 0);
44
-
45
41
  this.name = config.name;
46
42
  this.description = config.description;
47
43
  this.locations = config.locations;
48
44
  this.astNode = config.astNode;
49
45
  !config.name ? invariant(0, 'Directive must be named.') : void 0;
50
- !Array.isArray(config.locations) ? invariant(0, 'Must provide locations for directive.') : void 0;
51
- var args = config.args;
52
-
53
- if (!args) {
54
- this.args = [];
55
- } else {
56
- !!Array.isArray(args) ? invariant(0, "@".concat(config.name, " args must be an object with argument names as keys.")) : void 0;
57
- this.args = Object.keys(args).map(function (argName) {
58
- var arg = args[argName];
59
- return {
60
- name: argName,
61
- description: arg.description === undefined ? null : arg.description,
62
- type: arg.type,
63
- defaultValue: arg.defaultValue,
64
- astNode: arg.astNode
65
- };
66
- });
67
- }
46
+ !Array.isArray(config.locations) ? invariant(0, "@".concat(config.name, " locations must be an Array.")) : void 0;
47
+ var args = config.args || {};
48
+ !(_typeof(args) === 'object' && !Array.isArray(args)) ? invariant(0, "@".concat(config.name, " args must be an object with argument names as keys.")) : void 0;
49
+ this.args = objectEntries(args).map(function (_ref) {
50
+ var argName = _ref[0],
51
+ arg = _ref[1];
52
+ return {
53
+ name: argName,
54
+ description: arg.description === undefined ? null : arg.description,
55
+ type: arg.type,
56
+ defaultValue: arg.defaultValue,
57
+ astNode: arg.astNode
58
+ };
59
+ });
68
60
  }
69
61
 
70
62
  var _proto = GraphQLDirective.prototype;
package/type/index.js CHANGED
@@ -9,6 +9,12 @@ Object.defineProperty(exports, "isSchema", {
9
9
  return _schema.isSchema;
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "assertSchema", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _schema.assertSchema;
16
+ }
17
+ });
12
18
  Object.defineProperty(exports, "GraphQLSchema", {
13
19
  enumerable: true,
14
20
  get: function get() {
@@ -297,6 +303,12 @@ Object.defineProperty(exports, "isDirective", {
297
303
  return _directives.isDirective;
298
304
  }
299
305
  });
306
+ Object.defineProperty(exports, "assertDirective", {
307
+ enumerable: true,
308
+ get: function get() {
309
+ return _directives.assertDirective;
310
+ }
311
+ });
300
312
  Object.defineProperty(exports, "GraphQLDirective", {
301
313
  enumerable: true,
302
314
  get: function get() {
@@ -10,6 +10,8 @@
10
10
  export {
11
11
  // Predicate
12
12
  isSchema,
13
+ // Assertion
14
+ assertSchema,
13
15
  // GraphQL Schema definition
14
16
  GraphQLSchema,
15
17
  } from './schema';
@@ -73,6 +75,8 @@ export {
73
75
  export {
74
76
  // Predicate
75
77
  isDirective,
78
+ // Assertion
79
+ assertDirective,
76
80
  // Directives Definition
77
81
  GraphQLDirective,
78
82
  // Built-in Directives defined by the Spec
package/type/index.mjs CHANGED
@@ -4,10 +4,11 @@
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
  export { // Predicate
10
- isSchema, // GraphQL Schema definition
10
+ isSchema, // Assertion
11
+ assertSchema, // GraphQL Schema definition
11
12
  GraphQLSchema } from './schema';
12
13
  export { // Predicates
13
14
  isType, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isListType, isNonNullType, isInputType, isOutputType, isLeafType, isCompositeType, isAbstractType, isWrappingType, isNullableType, isNamedType, isRequiredArgument, isRequiredInputField, // Assertions
@@ -16,7 +17,8 @@ getNullableType, getNamedType, // Definitions
16
17
  GraphQLScalarType, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, // Type Wrappers
17
18
  GraphQLList, GraphQLNonNull } from './definition';
18
19
  export { // Predicate
19
- isDirective, // Directives Definition
20
+ isDirective, // Assertion
21
+ assertDirective, // Directives Definition
20
22
  GraphQLDirective, // Built-in Directives defined by the Spec
21
23
  isSpecifiedDirective, specifiedDirectives, GraphQLIncludeDirective, GraphQLSkipDirective, GraphQLDeprecatedDirective, // Constant Deprecation Reason
22
24
  DEFAULT_DEPRECATION_REASON } from './directives';
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.isIntrospectionType = isIntrospectionType;
7
7
  exports.introspectionTypes = exports.TypeNameMetaFieldDef = exports.TypeMetaFieldDef = exports.SchemaMetaFieldDef = exports.__TypeKind = exports.TypeKind = exports.__EnumValue = exports.__InputValue = exports.__Field = exports.__Type = exports.__DirectiveLocation = exports.__Directive = exports.__Schema = void 0;
8
8
 
9
- var _isInvalid = _interopRequireDefault(require("../jsutils/isInvalid"));
9
+ var _objectValues = _interopRequireDefault(require("../polyfills/objectValues"));
10
10
 
11
- var _objectValues = _interopRequireDefault(require("../jsutils/objectValues"));
11
+ var _isInvalid = _interopRequireDefault(require("../jsutils/isInvalid"));
12
12
 
13
13
  var _astFromValue = require("../utilities/astFromValue");
14
14
 
@@ -28,7 +28,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
28
28
  * This source code is licensed under the MIT license found in the
29
29
  * LICENSE file in the root directory of this source tree.
30
30
  *
31
- * strict
31
+ *
32
32
  */
33
33
  var __Schema = new _definition.GraphQLObjectType({
34
34
  name: '__Schema',
@@ -7,8 +7,8 @@
7
7
  * @flow strict
8
8
  */
9
9
 
10
+ import objectValues from '../polyfills/objectValues';
10
11
  import isInvalid from '../jsutils/isInvalid';
11
- import objectValues from '../jsutils/objectValues';
12
12
  import { astFromValue } from '../utilities/astFromValue';
13
13
  import { print } from '../language/printer';
14
14
  import {
@@ -4,10 +4,10 @@
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 objectValues from '../polyfills/objectValues';
9
10
  import isInvalid from '../jsutils/isInvalid';
10
- import objectValues from '../jsutils/objectValues';
11
11
  import { astFromValue } from '../utilities/astFromValue';
12
12
  import { print } from '../language/printer';
13
13
  import { GraphQLObjectType, GraphQLEnumType, GraphQLList, GraphQLNonNull, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isListType, isNonNullType, isAbstractType, isNamedType } from './definition';