graphql 14.0.0 → 14.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/README.md +4 -4
  2. package/error/GraphQLError.js +1 -1
  3. package/error/GraphQLError.js.flow +3 -3
  4. package/error/GraphQLError.mjs +1 -1
  5. package/error/formatError.js +1 -1
  6. package/error/formatError.mjs +1 -1
  7. package/error/index.mjs +1 -1
  8. package/error/locatedError.js +1 -1
  9. package/error/locatedError.mjs +1 -1
  10. package/error/printError.js +1 -1
  11. package/error/printError.mjs +1 -1
  12. package/error/syntaxError.js +1 -1
  13. package/error/syntaxError.mjs +1 -1
  14. package/execution/execute.js +4 -4
  15. package/execution/execute.js.flow +4 -6
  16. package/execution/execute.mjs +5 -5
  17. package/execution/index.mjs +1 -1
  18. package/execution/values.js +4 -4
  19. package/execution/values.js.flow +3 -3
  20. package/execution/values.mjs +3 -3
  21. package/graphql.js +1 -1
  22. package/graphql.mjs +1 -1
  23. package/index.js +12 -0
  24. package/index.js.flow +4 -0
  25. package/index.mjs +4 -4
  26. package/jsutils/dedent.js +2 -2
  27. package/jsutils/dedent.js.flow +1 -1
  28. package/jsutils/dedent.mjs +2 -2
  29. package/jsutils/defineToJSON.js +17 -6
  30. package/jsutils/defineToJSON.js.flow +14 -5
  31. package/jsutils/defineToJSON.mjs +14 -6
  32. package/jsutils/defineToStringTag.js +5 -5
  33. package/jsutils/defineToStringTag.js.flow +3 -3
  34. package/jsutils/defineToStringTag.mjs +4 -4
  35. package/jsutils/inspect.js +46 -12
  36. package/jsutils/inspect.js.flow +42 -15
  37. package/jsutils/inspect.mjs +45 -5
  38. package/jsutils/instanceOf.js +1 -1
  39. package/jsutils/instanceOf.mjs +1 -1
  40. package/jsutils/invariant.js +1 -1
  41. package/jsutils/invariant.mjs +1 -1
  42. package/jsutils/isInvalid.js +1 -1
  43. package/jsutils/isInvalid.mjs +1 -1
  44. package/jsutils/isNullish.js +1 -1
  45. package/jsutils/isNullish.mjs +1 -1
  46. package/jsutils/isPromise.js +1 -1
  47. package/jsutils/isPromise.mjs +1 -1
  48. package/jsutils/keyMap.js +1 -1
  49. package/jsutils/keyMap.mjs +1 -1
  50. package/jsutils/keyValMap.js +1 -1
  51. package/jsutils/keyValMap.mjs +1 -1
  52. package/jsutils/mapValue.js +54 -0
  53. package/jsutils/mapValue.js.flow +27 -0
  54. package/jsutils/mapValue.mjs +44 -0
  55. package/jsutils/memoize3.js +1 -1
  56. package/jsutils/memoize3.mjs +1 -1
  57. package/jsutils/nodejsCustomInspectSymbol.js +18 -0
  58. package/jsutils/nodejsCustomInspectSymbol.js.flow +15 -0
  59. package/jsutils/nodejsCustomInspectSymbol.mjs +10 -0
  60. package/jsutils/orList.js +17 -4
  61. package/jsutils/orList.js.flow +13 -7
  62. package/jsutils/orList.mjs +14 -4
  63. package/jsutils/promiseForObject.js +1 -1
  64. package/jsutils/promiseForObject.mjs +1 -1
  65. package/jsutils/promiseReduce.js +1 -1
  66. package/jsutils/promiseReduce.mjs +1 -1
  67. package/jsutils/quotedOrList.js +1 -1
  68. package/jsutils/quotedOrList.mjs +1 -1
  69. package/jsutils/suggestionList.js +1 -1
  70. package/jsutils/suggestionList.mjs +1 -1
  71. package/language/blockStringValue.js +2 -2
  72. package/language/blockStringValue.js.flow +1 -1
  73. package/language/blockStringValue.mjs +2 -2
  74. package/language/directiveLocation.js +1 -1
  75. package/language/directiveLocation.mjs +1 -1
  76. package/language/index.mjs +1 -1
  77. package/language/kinds.js +1 -1
  78. package/language/kinds.mjs +1 -1
  79. package/language/lexer.js +29 -13
  80. package/language/lexer.js.flow +34 -20
  81. package/language/lexer.mjs +28 -13
  82. package/language/location.js +1 -1
  83. package/language/location.mjs +1 -1
  84. package/language/parser.js +31 -38
  85. package/language/parser.js.flow +32 -48
  86. package/language/parser.mjs +30 -38
  87. package/language/predicates.js +1 -1
  88. package/language/predicates.mjs +1 -1
  89. package/language/printer.js +13 -7
  90. package/language/printer.js.flow +19 -9
  91. package/language/printer.mjs +13 -7
  92. package/language/source.js +8 -7
  93. package/language/source.mjs +1 -9
  94. package/language/visitor.js +11 -20
  95. package/language/visitor.js.flow +4 -5
  96. package/language/visitor.mjs +8 -20
  97. package/package.json +10 -3
  98. package/polyfills/find.js +31 -0
  99. package/polyfills/find.js.flow +29 -0
  100. package/polyfills/find.mjs +23 -0
  101. package/{jsutils → polyfills}/isFinite.js +1 -1
  102. package/{jsutils → polyfills}/isFinite.js.flow +0 -0
  103. package/{jsutils → polyfills}/isFinite.mjs +1 -1
  104. package/{jsutils → polyfills}/isInteger.js +1 -1
  105. package/{jsutils → polyfills}/isInteger.js.flow +0 -0
  106. package/{jsutils → polyfills}/isInteger.mjs +1 -1
  107. package/polyfills/objectEntries.js +26 -0
  108. package/polyfills/objectEntries.js.flow +19 -0
  109. package/polyfills/objectEntries.mjs +18 -0
  110. package/{jsutils → polyfills}/objectValues.js +1 -1
  111. package/{jsutils → polyfills}/objectValues.js.flow +1 -1
  112. package/{jsutils → polyfills}/objectValues.mjs +1 -1
  113. package/subscription/asyncIteratorReject.mjs +1 -1
  114. package/subscription/index.mjs +1 -1
  115. package/subscription/mapAsyncIterator.mjs +1 -1
  116. package/subscription/subscribe.js +1 -1
  117. package/subscription/subscribe.js.flow +1 -1
  118. package/subscription/subscribe.mjs +2 -2
  119. package/type/definition.js +31 -130
  120. package/type/definition.js.flow +35 -47
  121. package/type/definition.mjs +30 -131
  122. package/type/directives.js +25 -29
  123. package/type/directives.js.flow +24 -20
  124. package/type/directives.mjs +22 -30
  125. package/type/index.js +12 -0
  126. package/type/index.js.flow +4 -0
  127. package/type/index.mjs +5 -3
  128. package/type/introspection.js +3 -3
  129. package/type/introspection.js.flow +1 -1
  130. package/type/introspection.mjs +2 -2
  131. package/type/scalars.js +45 -34
  132. package/type/scalars.js.flow +40 -26
  133. package/type/scalars.mjs +44 -26
  134. package/type/schema.js +82 -87
  135. package/type/schema.js.flow +17 -9
  136. package/type/schema.mjs +79 -86
  137. package/type/validate.js +168 -175
  138. package/type/validate.js.flow +8 -49
  139. package/type/validate.mjs +159 -175
  140. package/utilities/TypeInfo.js +10 -23
  141. package/utilities/TypeInfo.js.flow +1 -1
  142. package/utilities/TypeInfo.mjs +2 -24
  143. package/utilities/assertValidName.js +1 -1
  144. package/utilities/assertValidName.mjs +1 -1
  145. package/utilities/astFromValue.js +2 -2
  146. package/utilities/astFromValue.js.flow +1 -1
  147. package/utilities/astFromValue.mjs +2 -2
  148. package/utilities/buildASTSchema.js +169 -152
  149. package/utilities/buildASTSchema.js.flow +117 -113
  150. package/utilities/buildASTSchema.mjs +160 -152
  151. package/utilities/buildClientSchema.js +24 -14
  152. package/utilities/buildClientSchema.js.flow +24 -14
  153. package/utilities/buildClientSchema.mjs +23 -14
  154. package/utilities/coerceValue.js +38 -19
  155. package/utilities/coerceValue.js.flow +41 -47
  156. package/utilities/coerceValue.mjs +38 -20
  157. package/utilities/concatAST.js +1 -1
  158. package/utilities/concatAST.mjs +1 -1
  159. package/utilities/extendSchema.js +228 -312
  160. package/utilities/extendSchema.js.flow +27 -152
  161. package/utilities/extendSchema.mjs +229 -312
  162. package/utilities/findBreakingChanges.js +7 -5
  163. package/utilities/findBreakingChanges.js.flow +3 -2
  164. package/utilities/findBreakingChanges.mjs +6 -5
  165. package/utilities/findDeprecatedUsages.js +1 -1
  166. package/utilities/findDeprecatedUsages.mjs +1 -1
  167. package/utilities/getOperationAST.js +1 -1
  168. package/utilities/getOperationAST.mjs +1 -1
  169. package/utilities/getOperationRootType.js +1 -1
  170. package/utilities/getOperationRootType.mjs +1 -1
  171. package/utilities/index.mjs +1 -1
  172. package/utilities/introspectionFromSchema.js +1 -1
  173. package/utilities/introspectionFromSchema.mjs +1 -1
  174. package/utilities/introspectionQuery.js +1 -1
  175. package/utilities/introspectionQuery.mjs +1 -1
  176. package/utilities/isValidJSValue.js +1 -1
  177. package/utilities/isValidJSValue.mjs +1 -1
  178. package/utilities/isValidLiteralValue.js +1 -1
  179. package/utilities/isValidLiteralValue.mjs +1 -1
  180. package/utilities/lexicographicSortSchema.js +2 -2
  181. package/utilities/lexicographicSortSchema.js.flow +1 -1
  182. package/utilities/lexicographicSortSchema.mjs +2 -2
  183. package/utilities/schemaPrinter.js +3 -3
  184. package/utilities/schemaPrinter.js.flow +1 -1
  185. package/utilities/schemaPrinter.mjs +2 -2
  186. package/utilities/separateOperations.js +1 -1
  187. package/utilities/separateOperations.mjs +1 -1
  188. package/utilities/typeComparators.js +1 -1
  189. package/utilities/typeComparators.mjs +1 -1
  190. package/utilities/typeFromAST.js +1 -1
  191. package/utilities/typeFromAST.mjs +1 -1
  192. package/utilities/valueFromAST.js +3 -3
  193. package/utilities/valueFromAST.js.flow +1 -1
  194. package/utilities/valueFromAST.mjs +2 -2
  195. package/utilities/valueFromASTUntyped.js +1 -1
  196. package/utilities/valueFromASTUntyped.mjs +1 -1
  197. package/validation/ValidationContext.js +57 -82
  198. package/validation/ValidationContext.js.flow +52 -49
  199. package/validation/ValidationContext.mjs +52 -77
  200. package/validation/index.js.flow +1 -0
  201. package/validation/index.mjs +1 -1
  202. package/validation/rules/ExecutableDefinitions.js +1 -1
  203. package/validation/rules/ExecutableDefinitions.js.flow +1 -1
  204. package/validation/rules/ExecutableDefinitions.mjs +1 -1
  205. package/validation/rules/FieldsOnCorrectType.js +1 -1
  206. package/validation/rules/FieldsOnCorrectType.mjs +1 -1
  207. package/validation/rules/FragmentsOnCompositeTypes.js +1 -1
  208. package/validation/rules/FragmentsOnCompositeTypes.mjs +1 -1
  209. package/validation/rules/KnownArgumentNames.mjs +1 -1
  210. package/validation/rules/KnownDirectives.js +1 -1
  211. package/validation/rules/KnownDirectives.mjs +1 -1
  212. package/validation/rules/KnownFragmentNames.js +1 -1
  213. package/validation/rules/KnownFragmentNames.mjs +1 -1
  214. package/validation/rules/KnownTypeNames.js +59 -21
  215. package/validation/rules/KnownTypeNames.js.flow +54 -20
  216. package/validation/rules/KnownTypeNames.mjs +56 -21
  217. package/validation/rules/LoneAnonymousOperation.js +1 -1
  218. package/validation/rules/LoneAnonymousOperation.mjs +1 -1
  219. package/validation/rules/LoneSchemaDefinition.js +1 -1
  220. package/validation/rules/LoneSchemaDefinition.mjs +1 -1
  221. package/validation/rules/NoFragmentCycles.js +1 -1
  222. package/validation/rules/NoFragmentCycles.js.flow +2 -2
  223. package/validation/rules/NoFragmentCycles.mjs +1 -1
  224. package/validation/rules/NoUndefinedVariables.js +1 -1
  225. package/validation/rules/NoUndefinedVariables.mjs +1 -1
  226. package/validation/rules/NoUnusedFragments.js +1 -1
  227. package/validation/rules/NoUnusedFragments.js.flow +2 -2
  228. package/validation/rules/NoUnusedFragments.mjs +1 -1
  229. package/validation/rules/NoUnusedVariables.js +1 -1
  230. package/validation/rules/NoUnusedVariables.mjs +1 -1
  231. package/validation/rules/OverlappingFieldsCanBeMerged.js +57 -33
  232. package/validation/rules/OverlappingFieldsCanBeMerged.js.flow +5 -6
  233. package/validation/rules/OverlappingFieldsCanBeMerged.mjs +48 -33
  234. package/validation/rules/PossibleFragmentSpreads.js +1 -1
  235. package/validation/rules/PossibleFragmentSpreads.mjs +1 -1
  236. package/validation/rules/PossibleTypeExtensions.js +158 -0
  237. package/validation/rules/PossibleTypeExtensions.js.flow +160 -0
  238. package/validation/rules/PossibleTypeExtensions.mjs +146 -0
  239. package/validation/rules/ProvidedRequiredArguments.mjs +1 -1
  240. package/validation/rules/ScalarLeafs.js +1 -1
  241. package/validation/rules/ScalarLeafs.mjs +1 -1
  242. package/validation/rules/SingleFieldSubscriptions.js +1 -1
  243. package/validation/rules/SingleFieldSubscriptions.mjs +1 -1
  244. package/validation/rules/UniqueArgumentNames.js +1 -1
  245. package/validation/rules/UniqueArgumentNames.mjs +1 -1
  246. package/validation/rules/UniqueDirectiveNames.js +55 -0
  247. package/validation/rules/UniqueDirectiveNames.js.flow +64 -0
  248. package/validation/rules/UniqueDirectiveNames.mjs +43 -0
  249. package/validation/rules/UniqueDirectivesPerLocation.js +1 -1
  250. package/validation/rules/UniqueDirectivesPerLocation.mjs +1 -1
  251. package/validation/rules/UniqueEnumValueNames.js +94 -0
  252. package/validation/rules/UniqueEnumValueNames.js.flow +87 -0
  253. package/validation/rules/UniqueEnumValueNames.mjs +81 -0
  254. package/validation/rules/UniqueFieldDefinitionNames.js +105 -0
  255. package/validation/rules/UniqueFieldDefinitionNames.js.flow +101 -0
  256. package/validation/rules/UniqueFieldDefinitionNames.mjs +92 -0
  257. package/validation/rules/UniqueFragmentNames.js +1 -1
  258. package/validation/rules/UniqueFragmentNames.mjs +1 -1
  259. package/validation/rules/UniqueInputFieldNames.js +1 -1
  260. package/validation/rules/UniqueInputFieldNames.mjs +1 -1
  261. package/validation/rules/UniqueOperationNames.js +1 -1
  262. package/validation/rules/UniqueOperationNames.mjs +1 -1
  263. package/validation/rules/UniqueOperationTypes.js +85 -0
  264. package/validation/rules/UniqueOperationTypes.js.flow +76 -0
  265. package/validation/rules/UniqueOperationTypes.mjs +73 -0
  266. package/validation/rules/UniqueTypeNames.js +62 -0
  267. package/validation/rules/UniqueTypeNames.js.flow +67 -0
  268. package/validation/rules/UniqueTypeNames.mjs +50 -0
  269. package/validation/rules/UniqueVariableNames.js +1 -1
  270. package/validation/rules/UniqueVariableNames.mjs +1 -1
  271. package/validation/rules/ValuesOfCorrectType.js +29 -13
  272. package/validation/rules/ValuesOfCorrectType.js.flow +4 -5
  273. package/validation/rules/ValuesOfCorrectType.mjs +28 -13
  274. package/validation/rules/VariablesAreInputTypes.js +1 -1
  275. package/validation/rules/VariablesAreInputTypes.mjs +1 -1
  276. package/validation/rules/VariablesInAllowedPosition.js +4 -4
  277. package/validation/rules/VariablesInAllowedPosition.mjs +4 -4
  278. package/validation/specifiedRules.js +14 -2
  279. package/validation/specifiedRules.js.flow +13 -0
  280. package/validation/specifiedRules.mjs +8 -2
  281. package/validation/validate.js +1 -1
  282. package/validation/validate.mjs +1 -1
  283. package/jsutils/find.js +0 -22
  284. package/jsutils/find.js.flow +0 -19
  285. package/jsutils/find.mjs +0 -15
package/type/scalars.mjs CHANGED
@@ -1,14 +1,16 @@
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
+
1
3
  /**
2
4
  * Copyright (c) 2015-present, Facebook, Inc.
3
5
  *
4
6
  * This source code is licensed under the MIT license found in the
5
7
  * LICENSE file in the root directory of this source tree.
6
8
  *
7
- * strict
9
+ *
8
10
  */
11
+ import isFinite from '../polyfills/isFinite';
12
+ import isInteger from '../polyfills/isInteger';
9
13
  import inspect from '../jsutils/inspect';
10
- import isFinite from '../jsutils/isFinite';
11
- import isInteger from '../jsutils/isInteger';
12
14
  import { GraphQLScalarType, isNamedType } from './definition';
13
15
  import { Kind } from '../language/kinds'; // As per the GraphQL Spec, Integers are only treated as valid when a valid
14
16
  // 32-bit signed integer, providing the broadest support across platforms.
@@ -99,34 +101,52 @@ function coerceFloat(value) {
99
101
 
100
102
  export var GraphQLFloat = new GraphQLScalarType({
101
103
  name: 'Float',
102
- description: 'The `Float` scalar type represents signed double-precision fractional ' + 'values as specified by ' + '[IEEE 754](http://en.wikipedia.org/wiki/IEEE_floating_point). ',
104
+ description: 'The `Float` scalar type represents signed double-precision fractional ' + 'values as specified by ' + '[IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point). ',
103
105
  serialize: serializeFloat,
104
106
  parseValue: coerceFloat,
105
107
  parseLiteral: function parseLiteral(ast) {
106
108
  return ast.kind === Kind.FLOAT || ast.kind === Kind.INT ? parseFloat(ast.value) : undefined;
107
109
  }
108
- });
110
+ }); // Support serializing objects with custom valueOf() or toJSON() functions -
111
+ // a common way to represent a complex value which can be represented as
112
+ // a string (ex: MongoDB id objects).
113
+
114
+ function serializeObject(value) {
115
+ if (_typeof(value) === 'object' && value !== null) {
116
+ if (typeof value.valueOf === 'function') {
117
+ var valueOfResult = value.valueOf();
118
+
119
+ if (_typeof(valueOfResult) !== 'object') {
120
+ return valueOfResult;
121
+ }
122
+ }
109
123
 
110
- function serializeString(value) {
111
- // Support serializing objects with custom valueOf() functions - a common way
112
- // to represent an complex value which can be represented as a string
113
- // (ex: MongoDB id objects).
114
- var result = value && typeof value.valueOf === 'function' ? value.valueOf() : value; // Serialize string, boolean and number values to a string, but do not
124
+ if (typeof value.toJSON === 'function') {
125
+ // $FlowFixMe(>=0.90.0)
126
+ return value.toJSON();
127
+ }
128
+ }
129
+
130
+ return value;
131
+ }
132
+
133
+ function serializeString(rawValue) {
134
+ var value = serializeObject(rawValue); // Serialize string, boolean and number values to a string, but do not
115
135
  // attempt to coerce object, function, symbol, or other types as strings.
116
136
 
117
- if (typeof result === 'string') {
118
- return result;
137
+ if (typeof value === 'string') {
138
+ return value;
119
139
  }
120
140
 
121
- if (typeof result === 'boolean') {
122
- return result ? 'true' : 'false';
141
+ if (typeof value === 'boolean') {
142
+ return value ? 'true' : 'false';
123
143
  }
124
144
 
125
- if (isFinite(result)) {
126
- return result.toString();
145
+ if (isFinite(value)) {
146
+ return value.toString();
127
147
  }
128
148
 
129
- throw new TypeError("String cannot represent value: ".concat(inspect(value)));
149
+ throw new TypeError("String cannot represent value: ".concat(inspect(rawValue)));
130
150
  }
131
151
 
132
152
  function coerceString(value) {
@@ -177,20 +197,18 @@ export var GraphQLBoolean = new GraphQLScalarType({
177
197
  }
178
198
  });
179
199
 
180
- function serializeID(value) {
181
- // Support serializing objects with custom valueOf() functions - a common way
182
- // to represent an object identifier (ex. MongoDB).
183
- var result = value && typeof value.valueOf === 'function' ? value.valueOf() : value;
200
+ function serializeID(rawValue) {
201
+ var value = serializeObject(rawValue);
184
202
 
185
- if (typeof result === 'string') {
186
- return result;
203
+ if (typeof value === 'string') {
204
+ return value;
187
205
  }
188
206
 
189
- if (isInteger(result)) {
190
- return String(result);
207
+ if (isInteger(value)) {
208
+ return String(value);
191
209
  }
192
210
 
193
- throw new TypeError("ID cannot represent value: ".concat(inspect(value)));
211
+ throw new TypeError("ID cannot represent value: ".concat(inspect(rawValue)));
194
212
  }
195
213
 
196
214
  function coerceID(value) {
package/type/schema.js CHANGED
@@ -4,8 +4,13 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.isSchema = isSchema;
7
+ exports.assertSchema = assertSchema;
7
8
  exports.GraphQLSchema = void 0;
8
9
 
10
+ var _find = _interopRequireDefault(require("../polyfills/find"));
11
+
12
+ var _objectValues = _interopRequireDefault(require("../polyfills/objectValues"));
13
+
9
14
  var _definition = require("./definition");
10
15
 
11
16
  var _directives = require("./directives");
@@ -16,24 +21,23 @@ var _introspection = require("./introspection");
16
21
 
17
22
  var _defineToStringTag = _interopRequireDefault(require("../jsutils/defineToStringTag"));
18
23
 
19
- var _find = _interopRequireDefault(require("../jsutils/find"));
20
-
21
24
  var _instanceOf = _interopRequireDefault(require("../jsutils/instanceOf"));
22
25
 
23
26
  var _invariant = _interopRequireDefault(require("../jsutils/invariant"));
24
27
 
25
- var _objectValues = _interopRequireDefault(require("../jsutils/objectValues"));
26
-
27
28
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
29
 
29
30
  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); }
30
31
 
31
- 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; }
32
-
33
32
  // eslint-disable-next-line no-redeclare
34
33
  function isSchema(schema) {
35
34
  return (0, _instanceOf.default)(schema, GraphQLSchema);
36
35
  }
36
+
37
+ function assertSchema(schema) {
38
+ !isSchema(schema) ? (0, _invariant.default)(0, "Expected ".concat((0, _inspect.default)(schema), " to be a GraphQL schema.")) : void 0;
39
+ return schema;
40
+ }
37
41
  /**
38
42
  * Schema Definition
39
43
  *
@@ -68,35 +72,14 @@ function () {
68
72
  // Used as a cache for validateSchema().
69
73
  // Referenced by validateSchema().
70
74
  function GraphQLSchema(config) {
71
- _defineProperty(this, "astNode", void 0);
72
-
73
- _defineProperty(this, "extensionASTNodes", void 0);
74
-
75
- _defineProperty(this, "_queryType", void 0);
76
-
77
- _defineProperty(this, "_mutationType", void 0);
78
-
79
- _defineProperty(this, "_subscriptionType", void 0);
80
-
81
- _defineProperty(this, "_directives", void 0);
82
-
83
- _defineProperty(this, "_typeMap", void 0);
84
-
85
- _defineProperty(this, "_implementations", void 0);
86
-
87
- _defineProperty(this, "_possibleTypeMap", void 0);
88
-
89
- _defineProperty(this, "__validationErrors", void 0);
90
-
91
- _defineProperty(this, "__allowedLegacyNames", void 0);
92
-
93
75
  // If this schema was built from a source known to be valid, then it may be
94
76
  // marked with assumeValid to avoid an additional type system validation.
95
77
  if (config && config.assumeValid) {
96
78
  this.__validationErrors = [];
97
79
  } else {
98
- // Otherwise check for common mistakes during construction to produce
80
+ this.__validationErrors = undefined; // Otherwise check for common mistakes during construction to produce
99
81
  // clear and early error messages.
82
+
100
83
  !(_typeof(config) === 'object') ? (0, _invariant.default)(0, 'Must provide configuration object.') : void 0;
101
84
  !(!config.types || Array.isArray(config.types)) ? (0, _invariant.default)(0, "\"types\" must be Array if provided but got: ".concat((0, _inspect.default)(config.types), ".")) : void 0;
102
85
  !(!config.directives || Array.isArray(config.directives)) ? (0, _invariant.default)(0, '"directives" must be Array if provided but got: ' + "".concat((0, _inspect.default)(config.directives), ".")) : void 0;
@@ -126,51 +109,67 @@ function () {
126
109
 
127
110
  typeMap = this._directives.reduce(typeMapDirectiveReducer, typeMap); // Storing the resulting map for reference by the schema.
128
111
 
129
- this._typeMap = typeMap; // Keep track of all implementations by interface name.
112
+ this._typeMap = typeMap;
113
+ this._possibleTypeMap = Object.create(null); // Keep track of all implementations by interface name.
130
114
 
131
115
  this._implementations = Object.create(null);
116
+ var _iteratorNormalCompletion = true;
117
+ var _didIteratorError = false;
118
+ var _iteratorError = undefined;
132
119
 
133
- var _arr = Object.keys(this._typeMap);
134
-
135
- for (var _i = 0; _i < _arr.length; _i++) {
136
- var typeName = _arr[_i];
137
- var type = this._typeMap[typeName];
120
+ try {
121
+ for (var _iterator = (0, _objectValues.default)(this._typeMap)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
122
+ var type = _step.value;
138
123
 
139
- if ((0, _definition.isObjectType)(type)) {
140
- var _iteratorNormalCompletion = true;
141
- var _didIteratorError = false;
142
- var _iteratorError = undefined;
124
+ if ((0, _definition.isObjectType)(type)) {
125
+ var _iteratorNormalCompletion2 = true;
126
+ var _didIteratorError2 = false;
127
+ var _iteratorError2 = undefined;
143
128
 
144
- try {
145
- for (var _iterator = type.getInterfaces()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
146
- var iface = _step.value;
129
+ try {
130
+ for (var _iterator2 = type.getInterfaces()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
131
+ var iface = _step2.value;
147
132
 
148
- if ((0, _definition.isInterfaceType)(iface)) {
149
- var impls = this._implementations[iface.name];
133
+ if ((0, _definition.isInterfaceType)(iface)) {
134
+ var impls = this._implementations[iface.name];
150
135
 
151
- if (impls) {
152
- impls.push(type);
153
- } else {
154
- this._implementations[iface.name] = [type];
136
+ if (impls) {
137
+ impls.push(type);
138
+ } else {
139
+ this._implementations[iface.name] = [type];
140
+ }
155
141
  }
156
142
  }
157
- }
158
- } catch (err) {
159
- _didIteratorError = true;
160
- _iteratorError = err;
161
- } finally {
162
- try {
163
- if (!_iteratorNormalCompletion && _iterator.return != null) {
164
- _iterator.return();
165
- }
143
+ } catch (err) {
144
+ _didIteratorError2 = true;
145
+ _iteratorError2 = err;
166
146
  } finally {
167
- if (_didIteratorError) {
168
- throw _iteratorError;
147
+ try {
148
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
149
+ _iterator2.return();
150
+ }
151
+ } finally {
152
+ if (_didIteratorError2) {
153
+ throw _iteratorError2;
154
+ }
169
155
  }
170
156
  }
157
+ } else if ((0, _definition.isAbstractType)(type) && !this._implementations[type.name]) {
158
+ this._implementations[type.name] = [];
159
+ }
160
+ }
161
+ } catch (err) {
162
+ _didIteratorError = true;
163
+ _iteratorError = err;
164
+ } finally {
165
+ try {
166
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
167
+ _iterator.return();
168
+ }
169
+ } finally {
170
+ if (_didIteratorError) {
171
+ throw _iteratorError;
171
172
  }
172
- } else if ((0, _definition.isAbstractType)(type) && !this._implementations[type.name]) {
173
- this._implementations[type.name] = [];
174
173
  }
175
174
  }
176
175
  }
@@ -208,10 +207,6 @@ function () {
208
207
  _proto.isPossibleType = function isPossibleType(abstractType, possibleType) {
209
208
  var possibleTypeMap = this._possibleTypeMap;
210
209
 
211
- if (!possibleTypeMap) {
212
- this._possibleTypeMap = possibleTypeMap = Object.create(null);
213
- }
214
-
215
210
  if (!possibleTypeMap[abstractType.name]) {
216
211
  var possibleTypes = this.getPossibleTypes(abstractType);
217
212
  possibleTypeMap[abstractType.name] = possibleTypes.reduce(function (map, type) {
@@ -265,13 +260,13 @@ function typeMapReducer(map, type) {
265
260
  }
266
261
 
267
262
  if ((0, _definition.isObjectType)(type) || (0, _definition.isInterfaceType)(type)) {
268
- var _iteratorNormalCompletion2 = true;
269
- var _didIteratorError2 = false;
270
- var _iteratorError2 = undefined;
263
+ var _iteratorNormalCompletion3 = true;
264
+ var _didIteratorError3 = false;
265
+ var _iteratorError3 = undefined;
271
266
 
272
267
  try {
273
- for (var _iterator2 = (0, _objectValues.default)(type.getFields())[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
274
- var field = _step2.value;
268
+ for (var _iterator3 = (0, _objectValues.default)(type.getFields())[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
269
+ var field = _step3.value;
275
270
 
276
271
  if (field.args) {
277
272
  var fieldArgTypes = field.args.map(function (arg) {
@@ -283,42 +278,42 @@ function typeMapReducer(map, type) {
283
278
  reducedMap = typeMapReducer(reducedMap, field.type);
284
279
  }
285
280
  } catch (err) {
286
- _didIteratorError2 = true;
287
- _iteratorError2 = err;
281
+ _didIteratorError3 = true;
282
+ _iteratorError3 = err;
288
283
  } finally {
289
284
  try {
290
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
291
- _iterator2.return();
285
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
286
+ _iterator3.return();
292
287
  }
293
288
  } finally {
294
- if (_didIteratorError2) {
295
- throw _iteratorError2;
289
+ if (_didIteratorError3) {
290
+ throw _iteratorError3;
296
291
  }
297
292
  }
298
293
  }
299
294
  }
300
295
 
301
296
  if ((0, _definition.isInputObjectType)(type)) {
302
- var _iteratorNormalCompletion3 = true;
303
- var _didIteratorError3 = false;
304
- var _iteratorError3 = undefined;
297
+ var _iteratorNormalCompletion4 = true;
298
+ var _didIteratorError4 = false;
299
+ var _iteratorError4 = undefined;
305
300
 
306
301
  try {
307
- for (var _iterator3 = (0, _objectValues.default)(type.getFields())[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
308
- var _field = _step3.value;
302
+ for (var _iterator4 = (0, _objectValues.default)(type.getFields())[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
303
+ var _field = _step4.value;
309
304
  reducedMap = typeMapReducer(reducedMap, _field.type);
310
305
  }
311
306
  } catch (err) {
312
- _didIteratorError3 = true;
313
- _iteratorError3 = err;
307
+ _didIteratorError4 = true;
308
+ _iteratorError4 = err;
314
309
  } finally {
315
310
  try {
316
- if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
317
- _iterator3.return();
311
+ if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
312
+ _iterator4.return();
318
313
  }
319
314
  } finally {
320
- if (_didIteratorError3) {
321
- throw _iteratorError3;
315
+ if (_didIteratorError4) {
316
+ throw _iteratorError4;
322
317
  }
323
318
  }
324
319
  }
@@ -7,6 +7,8 @@
7
7
  * @flow strict
8
8
  */
9
9
 
10
+ import find from '../polyfills/find';
11
+ import objectValues from '../polyfills/objectValues';
10
12
  import {
11
13
  isAbstractType,
12
14
  isObjectType,
@@ -34,10 +36,8 @@ import type { GraphQLError } from '../error/GraphQLError';
34
36
  import inspect from '../jsutils/inspect';
35
37
  import { __Schema } from './introspection';
36
38
  import defineToStringTag from '../jsutils/defineToStringTag';
37
- import find from '../jsutils/find';
38
39
  import instanceOf from '../jsutils/instanceOf';
39
40
  import invariant from '../jsutils/invariant';
40
- import objectValues from '../jsutils/objectValues';
41
41
  import type { ObjMap } from '../jsutils/ObjMap';
42
42
 
43
43
  /**
@@ -50,6 +50,14 @@ export function isSchema(schema) {
50
50
  return instanceOf(schema, GraphQLSchema);
51
51
  }
52
52
 
53
+ export function assertSchema(schema: mixed): GraphQLSchema {
54
+ invariant(
55
+ isSchema(schema),
56
+ `Expected ${inspect(schema)} to be a GraphQL schema.`,
57
+ );
58
+ return schema;
59
+ }
60
+
53
61
  /**
54
62
  * Schema Definition
55
63
  *
@@ -85,7 +93,7 @@ export class GraphQLSchema {
85
93
  _directives: $ReadOnlyArray<GraphQLDirective>;
86
94
  _typeMap: TypeMap;
87
95
  _implementations: ObjMap<Array<GraphQLObjectType>>;
88
- _possibleTypeMap: ?ObjMap<ObjMap<boolean>>;
96
+ _possibleTypeMap: ObjMap<ObjMap<boolean>>;
89
97
  // Used as a cache for validateSchema().
90
98
  __validationErrors: ?$ReadOnlyArray<GraphQLError>;
91
99
  // Referenced by validateSchema().
@@ -97,6 +105,8 @@ export class GraphQLSchema {
97
105
  if (config && config.assumeValid) {
98
106
  this.__validationErrors = [];
99
107
  } else {
108
+ this.__validationErrors = undefined;
109
+
100
110
  // Otherwise check for common mistakes during construction to produce
101
111
  // clear and early error messages.
102
112
  invariant(
@@ -153,10 +163,11 @@ export class GraphQLSchema {
153
163
  // Storing the resulting map for reference by the schema.
154
164
  this._typeMap = typeMap;
155
165
 
166
+ this._possibleTypeMap = Object.create(null);
167
+
156
168
  // Keep track of all implementations by interface name.
157
169
  this._implementations = Object.create(null);
158
- for (const typeName of Object.keys(this._typeMap)) {
159
- const type = this._typeMap[typeName];
170
+ for (const type of objectValues(this._typeMap)) {
160
171
  if (isObjectType(type)) {
161
172
  for (const iface of type.getInterfaces()) {
162
173
  if (isInterfaceType(iface)) {
@@ -207,10 +218,7 @@ export class GraphQLSchema {
207
218
  abstractType: GraphQLAbstractType,
208
219
  possibleType: GraphQLObjectType,
209
220
  ): boolean {
210
- let possibleTypeMap = this._possibleTypeMap;
211
- if (!possibleTypeMap) {
212
- this._possibleTypeMap = possibleTypeMap = Object.create(null);
213
- }
221
+ const possibleTypeMap = this._possibleTypeMap;
214
222
 
215
223
  if (!possibleTypeMap[abstractType.name]) {
216
224
  const possibleTypes = this.getPossibleTypes(abstractType);