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
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Copyright (c) 2019-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
+ *
8
+ */
9
+
10
+ /* eslint-disable no-redeclare */
11
+ // $FlowFixMe workaround for: https://github.com/facebook/flow/issues/5838
12
+ var objectEntries = Object.entries || function (obj) {
13
+ return Object.keys(obj).map(function (key) {
14
+ return [key, obj[key]];
15
+ });
16
+ };
17
+
18
+ export default objectEntries;
@@ -11,7 +11,7 @@ exports.default = void 0;
11
11
  * This source code is licensed under the MIT license found in the
12
12
  * LICENSE file in the root directory of this source tree.
13
13
  *
14
- * strict
14
+ *
15
15
  */
16
16
 
17
17
  /* eslint-disable no-redeclare */
@@ -7,7 +7,7 @@
7
7
  * @flow strict
8
8
  */
9
9
 
10
- import type { ObjMap } from './ObjMap';
10
+ import type { ObjMap } from '../jsutils/ObjMap';
11
11
 
12
12
  declare function objectValues<T>(obj: ObjMap<T>): Array<T>;
13
13
 
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * strict
7
+ *
8
8
  */
9
9
 
10
10
  /* eslint-disable no-redeclare */
@@ -6,7 +6,7 @@ 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
11
  import { $$asyncIterator } from 'iterall';
12
12
  /**
@@ -4,6 +4,6 @@
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 { subscribe, createSourceEventStream } from './subscribe';
@@ -6,7 +6,7 @@ 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
11
  import { $$asyncIterator, getAsyncIterator } from 'iterall';
12
12
 
@@ -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
  function subscribe(argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, subscribeFieldResolver) {
34
34
  /* eslint-enable no-redeclare */
@@ -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 { isAsyncIterable } from 'iterall';
10
10
  import inspect from '../jsutils/inspect';
@@ -45,6 +45,8 @@ exports.isRequiredArgument = isRequiredArgument;
45
45
  exports.isRequiredInputField = isRequiredInputField;
46
46
  exports.GraphQLInputObjectType = exports.GraphQLEnumType = exports.GraphQLUnionType = exports.GraphQLInterfaceType = exports.GraphQLObjectType = exports.GraphQLScalarType = void 0;
47
47
 
48
+ var _objectEntries = _interopRequireDefault(require("../polyfills/objectEntries"));
49
+
48
50
  var _defineToJSON = _interopRequireDefault(require("../jsutils/defineToJSON"));
49
51
 
50
52
  var _defineToStringTag = _interopRequireDefault(require("../jsutils/defineToStringTag"));
@@ -57,6 +59,8 @@ var _invariant = _interopRequireDefault(require("../jsutils/invariant"));
57
59
 
58
60
  var _keyMap = _interopRequireDefault(require("../jsutils/keyMap"));
59
61
 
62
+ var _mapValue = _interopRequireDefault(require("../jsutils/mapValue"));
63
+
60
64
  var _kinds = require("../language/kinds");
61
65
 
62
66
  var _valueFromASTUntyped = require("../utilities/valueFromASTUntyped");
@@ -366,6 +370,7 @@ function getNamedType(type) {
366
370
 
367
371
 
368
372
  function resolveThunk(thunk) {
373
+ // $FlowFixMe(>=0.90.0)
369
374
  return typeof thunk === 'function' ? thunk() : thunk;
370
375
  }
371
376
  /**
@@ -398,20 +403,6 @@ var GraphQLScalarType =
398
403
  /*#__PURE__*/
399
404
  function () {
400
405
  function GraphQLScalarType(config) {
401
- _defineProperty(this, "name", void 0);
402
-
403
- _defineProperty(this, "description", void 0);
404
-
405
- _defineProperty(this, "serialize", void 0);
406
-
407
- _defineProperty(this, "parseValue", void 0);
408
-
409
- _defineProperty(this, "parseLiteral", void 0);
410
-
411
- _defineProperty(this, "astNode", void 0);
412
-
413
- _defineProperty(this, "extensionASTNodes", void 0);
414
-
415
406
  this.name = config.name;
416
407
  this.description = config.description;
417
408
  this.serialize = config.serialize;
@@ -486,20 +477,6 @@ var GraphQLObjectType =
486
477
  /*#__PURE__*/
487
478
  function () {
488
479
  function GraphQLObjectType(config) {
489
- _defineProperty(this, "name", void 0);
490
-
491
- _defineProperty(this, "description", void 0);
492
-
493
- _defineProperty(this, "astNode", void 0);
494
-
495
- _defineProperty(this, "extensionASTNodes", void 0);
496
-
497
- _defineProperty(this, "isTypeOf", void 0);
498
-
499
- _defineProperty(this, "_fields", void 0);
500
-
501
- _defineProperty(this, "_interfaces", void 0);
502
-
503
480
  this.name = config.name;
504
481
  this.description = config.description;
505
482
  this.astNode = config.astNode;
@@ -550,48 +527,29 @@ function defineInterfaces(config) {
550
527
  function defineFieldMap(config) {
551
528
  var fieldMap = resolveThunk(config.fields) || {};
552
529
  !isPlainObj(fieldMap) ? (0, _invariant.default)(0, "".concat(config.name, " fields must be an object with field names as keys or a ") + 'function which returns such an object.') : void 0;
553
- var resultFieldMap = Object.create(null);
554
-
555
- var _arr = Object.keys(fieldMap);
556
-
557
- var _loop = function _loop() {
558
- var fieldName = _arr[_i];
559
- var fieldConfig = fieldMap[fieldName];
530
+ return (0, _mapValue.default)(fieldMap, function (fieldConfig, fieldName) {
560
531
  !isPlainObj(fieldConfig) ? (0, _invariant.default)(0, "".concat(config.name, ".").concat(fieldName, " field config must be an object")) : void 0;
561
532
  !!fieldConfig.hasOwnProperty('isDeprecated') ? (0, _invariant.default)(0, "".concat(config.name, ".").concat(fieldName, " should provide \"deprecationReason\" ") + 'instead of "isDeprecated".') : void 0;
562
-
563
- var field = _objectSpread({}, fieldConfig, {
533
+ !(fieldConfig.resolve == null || typeof fieldConfig.resolve === 'function') ? (0, _invariant.default)(0, "".concat(config.name, ".").concat(fieldName, " field resolver must be a function if ") + "provided, but got: ".concat((0, _inspect.default)(fieldConfig.resolve), ".")) : void 0;
534
+ var argsConfig = fieldConfig.args || {};
535
+ !isPlainObj(argsConfig) ? (0, _invariant.default)(0, "".concat(config.name, ".").concat(fieldName, " args must be an object with argument ") + 'names as keys.') : void 0;
536
+ var args = (0, _objectEntries.default)(argsConfig).map(function (_ref) {
537
+ var argName = _ref[0],
538
+ arg = _ref[1];
539
+ return {
540
+ name: argName,
541
+ description: arg.description === undefined ? null : arg.description,
542
+ type: arg.type,
543
+ defaultValue: arg.defaultValue,
544
+ astNode: arg.astNode
545
+ };
546
+ });
547
+ return _objectSpread({}, fieldConfig, {
564
548
  isDeprecated: Boolean(fieldConfig.deprecationReason),
565
- name: fieldName
549
+ name: fieldName,
550
+ args: args
566
551
  });
567
-
568
- !(field.resolve == null || typeof field.resolve === 'function') ? (0, _invariant.default)(0, "".concat(config.name, ".").concat(fieldName, " field resolver must be a function if ") + "provided, but got: ".concat((0, _inspect.default)(field.resolve), ".")) : void 0;
569
- var argsConfig = fieldConfig.args;
570
-
571
- if (!argsConfig) {
572
- field.args = [];
573
- } else {
574
- !isPlainObj(argsConfig) ? (0, _invariant.default)(0, "".concat(config.name, ".").concat(fieldName, " args must be an object with argument ") + 'names as keys.') : void 0;
575
- field.args = Object.keys(argsConfig).map(function (argName) {
576
- var arg = argsConfig[argName];
577
- return {
578
- name: argName,
579
- description: arg.description === undefined ? null : arg.description,
580
- type: arg.type,
581
- defaultValue: arg.defaultValue,
582
- astNode: arg.astNode
583
- };
584
- });
585
- }
586
-
587
- resultFieldMap[fieldName] = field;
588
- };
589
-
590
- for (var _i = 0; _i < _arr.length; _i++) {
591
- _loop();
592
- }
593
-
594
- return resultFieldMap;
552
+ });
595
553
  }
596
554
 
597
555
  function isPlainObj(obj) {
@@ -624,18 +582,6 @@ var GraphQLInterfaceType =
624
582
  /*#__PURE__*/
625
583
  function () {
626
584
  function GraphQLInterfaceType(config) {
627
- _defineProperty(this, "name", void 0);
628
-
629
- _defineProperty(this, "description", void 0);
630
-
631
- _defineProperty(this, "astNode", void 0);
632
-
633
- _defineProperty(this, "extensionASTNodes", void 0);
634
-
635
- _defineProperty(this, "resolveType", void 0);
636
-
637
- _defineProperty(this, "_fields", void 0);
638
-
639
585
  this.name = config.name;
640
586
  this.description = config.description;
641
587
  this.astNode = config.astNode;
@@ -695,18 +641,6 @@ var GraphQLUnionType =
695
641
  /*#__PURE__*/
696
642
  function () {
697
643
  function GraphQLUnionType(config) {
698
- _defineProperty(this, "name", void 0);
699
-
700
- _defineProperty(this, "description", void 0);
701
-
702
- _defineProperty(this, "astNode", void 0);
703
-
704
- _defineProperty(this, "extensionASTNodes", void 0);
705
-
706
- _defineProperty(this, "resolveType", void 0);
707
-
708
- _defineProperty(this, "_types", void 0);
709
-
710
644
  this.name = config.name;
711
645
  this.description = config.description;
712
646
  this.astNode = config.astNode;
@@ -774,20 +708,6 @@ function () {
774
708
  function GraphQLEnumType(config
775
709
  /* <T> */
776
710
  ) {
777
- _defineProperty(this, "name", void 0);
778
-
779
- _defineProperty(this, "description", void 0);
780
-
781
- _defineProperty(this, "astNode", void 0);
782
-
783
- _defineProperty(this, "extensionASTNodes", void 0);
784
-
785
- _defineProperty(this, "_values", void 0);
786
-
787
- _defineProperty(this, "_valueLookup", void 0);
788
-
789
- _defineProperty(this, "_nameLookup", void 0);
790
-
791
711
  this.name = config.name;
792
712
  this.description = config.description;
793
713
  this.astNode = config.astNode;
@@ -863,8 +783,9 @@ function defineEnumValues(type, valueMap
863
783
  /* <T> */
864
784
  ) {
865
785
  !isPlainObj(valueMap) ? (0, _invariant.default)(0, "".concat(type.name, " values must be an object with value names as keys.")) : void 0;
866
- return Object.keys(valueMap).map(function (valueName) {
867
- var value = valueMap[valueName];
786
+ return (0, _objectEntries.default)(valueMap).map(function (_ref2) {
787
+ var valueName = _ref2[0],
788
+ value = _ref2[1];
868
789
  !isPlainObj(value) ? (0, _invariant.default)(0, "".concat(type.name, ".").concat(valueName, " must refer to an object with a \"value\" key ") + "representing an internal value but got: ".concat((0, _inspect.default)(value), ".")) : void 0;
869
790
  !!value.hasOwnProperty('isDeprecated') ? (0, _invariant.default)(0, "".concat(type.name, ".").concat(valueName, " should provide \"deprecationReason\" instead ") + 'of "isDeprecated".') : void 0;
870
791
  return {
@@ -902,16 +823,6 @@ var GraphQLInputObjectType =
902
823
  /*#__PURE__*/
903
824
  function () {
904
825
  function GraphQLInputObjectType(config) {
905
- _defineProperty(this, "name", void 0);
906
-
907
- _defineProperty(this, "description", void 0);
908
-
909
- _defineProperty(this, "astNode", void 0);
910
-
911
- _defineProperty(this, "extensionASTNodes", void 0);
912
-
913
- _defineProperty(this, "_fields", void 0);
914
-
915
826
  this.name = config.name;
916
827
  this.description = config.description;
917
828
  this.astNode = config.astNode;
@@ -945,22 +856,12 @@ exports.GraphQLInputObjectType = GraphQLInputObjectType;
945
856
  function defineInputFieldMap(config) {
946
857
  var fieldMap = resolveThunk(config.fields) || {};
947
858
  !isPlainObj(fieldMap) ? (0, _invariant.default)(0, "".concat(config.name, " fields must be an object with field names as keys or a ") + 'function which returns such an object.') : void 0;
948
- var resultFieldMap = Object.create(null);
949
-
950
- var _arr2 = Object.keys(fieldMap);
951
-
952
- for (var _i2 = 0; _i2 < _arr2.length; _i2++) {
953
- var fieldName = _arr2[_i2];
954
-
955
- var field = _objectSpread({}, fieldMap[fieldName], {
859
+ return (0, _mapValue.default)(fieldMap, function (fieldConfig, fieldName) {
860
+ !!fieldConfig.hasOwnProperty('resolve') ? (0, _invariant.default)(0, "".concat(config.name, ".").concat(fieldName, " field has a resolve property, but ") + 'Input Types cannot define resolvers.') : void 0;
861
+ return _objectSpread({}, fieldConfig, {
956
862
  name: fieldName
957
863
  });
958
-
959
- !!field.hasOwnProperty('resolve') ? (0, _invariant.default)(0, "".concat(config.name, ".").concat(fieldName, " field has a resolve property, but ") + 'Input Types cannot define resolvers.') : void 0;
960
- resultFieldMap[fieldName] = field;
961
- }
962
-
963
- return resultFieldMap;
864
+ });
964
865
  }
965
866
 
966
867
  function isRequiredInputField(field) {
@@ -7,12 +7,14 @@
7
7
  * @flow strict
8
8
  */
9
9
 
10
+ import objectEntries from '../polyfills/objectEntries';
10
11
  import defineToJSON from '../jsutils/defineToJSON';
11
12
  import defineToStringTag from '../jsutils/defineToStringTag';
12
13
  import instanceOf from '../jsutils/instanceOf';
13
14
  import inspect from '../jsutils/inspect';
14
15
  import invariant from '../jsutils/invariant';
15
16
  import keyMap from '../jsutils/keyMap';
17
+ import mapValue from '../jsutils/mapValue';
16
18
  import type { ObjMap } from '../jsutils/ObjMap';
17
19
  import { Kind } from '../language/kinds';
18
20
  import { valueFromASTUntyped } from '../utilities/valueFromASTUntyped';
@@ -505,6 +507,7 @@ export function getNamedType(type) {
505
507
  export type Thunk<+T> = (() => T) | T;
506
508
 
507
509
  function resolveThunk<+T>(thunk: Thunk<T>): T {
510
+ // $FlowFixMe(>=0.90.0)
508
511
  return typeof thunk === 'function' ? thunk() : thunk;
509
512
  }
510
513
 
@@ -705,9 +708,7 @@ function defineFieldMap<TSource, TContext>(
705
708
  'function which returns such an object.',
706
709
  );
707
710
 
708
- const resultFieldMap = Object.create(null);
709
- for (const fieldName of Object.keys(fieldMap)) {
710
- const fieldConfig = fieldMap[fieldName];
711
+ return mapValue(fieldMap, (fieldConfig, fieldName) => {
711
712
  invariant(
712
713
  isPlainObj(fieldConfig),
713
714
  `${config.name}.${fieldName} field config must be an object`,
@@ -717,39 +718,34 @@ function defineFieldMap<TSource, TContext>(
717
718
  `${config.name}.${fieldName} should provide "deprecationReason" ` +
718
719
  'instead of "isDeprecated".',
719
720
  );
720
- const field = {
721
+ invariant(
722
+ fieldConfig.resolve == null || typeof fieldConfig.resolve === 'function',
723
+ `${config.name}.${fieldName} field resolver must be a function if ` +
724
+ `provided, but got: ${inspect(fieldConfig.resolve)}.`,
725
+ );
726
+
727
+ const argsConfig = fieldConfig.args || {};
728
+ invariant(
729
+ isPlainObj(argsConfig),
730
+ `${config.name}.${fieldName} args must be an object with argument ` +
731
+ 'names as keys.',
732
+ );
733
+
734
+ const args = objectEntries(argsConfig).map(([argName, arg]) => ({
735
+ name: argName,
736
+ description: arg.description === undefined ? null : arg.description,
737
+ type: arg.type,
738
+ defaultValue: arg.defaultValue,
739
+ astNode: arg.astNode,
740
+ }));
741
+
742
+ return {
721
743
  ...fieldConfig,
722
744
  isDeprecated: Boolean(fieldConfig.deprecationReason),
723
745
  name: fieldName,
746
+ args,
724
747
  };
725
- invariant(
726
- field.resolve == null || typeof field.resolve === 'function',
727
- `${config.name}.${fieldName} field resolver must be a function if ` +
728
- `provided, but got: ${inspect(field.resolve)}.`,
729
- );
730
- const argsConfig = fieldConfig.args;
731
- if (!argsConfig) {
732
- field.args = [];
733
- } else {
734
- invariant(
735
- isPlainObj(argsConfig),
736
- `${config.name}.${fieldName} args must be an object with argument ` +
737
- 'names as keys.',
738
- );
739
- field.args = Object.keys(argsConfig).map(argName => {
740
- const arg = argsConfig[argName];
741
- return {
742
- name: argName,
743
- description: arg.description === undefined ? null : arg.description,
744
- type: arg.type,
745
- defaultValue: arg.defaultValue,
746
- astNode: arg.astNode,
747
- };
748
- });
749
- }
750
- resultFieldMap[fieldName] = field;
751
- }
752
- return resultFieldMap;
748
+ });
753
749
  }
754
750
 
755
751
  function isPlainObj(obj) {
@@ -1123,8 +1119,7 @@ function defineEnumValues(
1123
1119
  isPlainObj(valueMap),
1124
1120
  `${type.name} values must be an object with value names as keys.`,
1125
1121
  );
1126
- return Object.keys(valueMap).map(valueName => {
1127
- const value = valueMap[valueName];
1122
+ return objectEntries(valueMap).map(([valueName, value]) => {
1128
1123
  invariant(
1129
1124
  isPlainObj(value),
1130
1125
  `${type.name}.${valueName} must refer to an object with a "value" key ` +
@@ -1154,9 +1149,7 @@ export type GraphQLEnumTypeConfig /* <T> */ = {|
1154
1149
  extensionASTNodes?: ?$ReadOnlyArray<EnumTypeExtensionNode>,
1155
1150
  |};
1156
1151
 
1157
- export type GraphQLEnumValueConfigMap /* <T> */ = ObjMap<
1158
- GraphQLEnumValueConfig /* <T> */,
1159
- >;
1152
+ export type GraphQLEnumValueConfigMap /* <T> */ = ObjMap<GraphQLEnumValueConfig /* <T> */>;
1160
1153
 
1161
1154
  export type GraphQLEnumValueConfig /* <T> */ = {|
1162
1155
  value?: any /* T */,
@@ -1236,20 +1229,15 @@ function defineInputFieldMap(
1236
1229
  `${config.name} fields must be an object with field names as keys or a ` +
1237
1230
  'function which returns such an object.',
1238
1231
  );
1239
- const resultFieldMap = Object.create(null);
1240
- for (const fieldName of Object.keys(fieldMap)) {
1241
- const field = {
1242
- ...fieldMap[fieldName],
1243
- name: fieldName,
1244
- };
1232
+ return mapValue(fieldMap, (fieldConfig, fieldName) => {
1245
1233
  invariant(
1246
- !field.hasOwnProperty('resolve'),
1234
+ !fieldConfig.hasOwnProperty('resolve'),
1247
1235
  `${config.name}.${fieldName} field has a resolve property, but ` +
1248
1236
  'Input Types cannot define resolvers.',
1249
1237
  );
1250
- resultFieldMap[fieldName] = field;
1251
- }
1252
- return resultFieldMap;
1238
+
1239
+ return { ...fieldConfig, name: fieldName };
1240
+ });
1253
1241
  }
1254
1242
 
1255
1243
  export type GraphQLInputObjectTypeConfig = {|