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/schema.mjs CHANGED
@@ -1,28 +1,30 @@
1
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
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
-
5
3
  /**
6
4
  * Copyright (c) 2015-present, Facebook, Inc.
7
5
  *
8
6
  * This source code is licensed under the MIT license found in the
9
7
  * LICENSE file in the root directory of this source tree.
10
8
  *
11
- * strict
9
+ *
12
10
  */
11
+ import find from '../polyfills/find';
12
+ import objectValues from '../polyfills/objectValues';
13
13
  import { isAbstractType, isObjectType, isInterfaceType, isUnionType, isInputObjectType, isWrappingType } from './definition';
14
14
  import { GraphQLDirective, isDirective, specifiedDirectives } from './directives';
15
15
  import inspect from '../jsutils/inspect';
16
16
  import { __Schema } from './introspection';
17
17
  import defineToStringTag from '../jsutils/defineToStringTag';
18
- import find from '../jsutils/find';
19
18
  import instanceOf from '../jsutils/instanceOf';
20
19
  import invariant from '../jsutils/invariant';
21
- import objectValues from '../jsutils/objectValues';
22
20
  // eslint-disable-next-line no-redeclare
23
21
  export function isSchema(schema) {
24
22
  return instanceOf(schema, GraphQLSchema);
25
23
  }
24
+ export function assertSchema(schema) {
25
+ !isSchema(schema) ? invariant(0, "Expected ".concat(inspect(schema), " to be a GraphQL schema.")) : void 0;
26
+ return schema;
27
+ }
26
28
  /**
27
29
  * Schema Definition
28
30
  *
@@ -56,35 +58,14 @@ function () {
56
58
  // Used as a cache for validateSchema().
57
59
  // Referenced by validateSchema().
58
60
  function GraphQLSchema(config) {
59
- _defineProperty(this, "astNode", void 0);
60
-
61
- _defineProperty(this, "extensionASTNodes", void 0);
62
-
63
- _defineProperty(this, "_queryType", void 0);
64
-
65
- _defineProperty(this, "_mutationType", void 0);
66
-
67
- _defineProperty(this, "_subscriptionType", void 0);
68
-
69
- _defineProperty(this, "_directives", void 0);
70
-
71
- _defineProperty(this, "_typeMap", void 0);
72
-
73
- _defineProperty(this, "_implementations", void 0);
74
-
75
- _defineProperty(this, "_possibleTypeMap", void 0);
76
-
77
- _defineProperty(this, "__validationErrors", void 0);
78
-
79
- _defineProperty(this, "__allowedLegacyNames", void 0);
80
-
81
61
  // If this schema was built from a source known to be valid, then it may be
82
62
  // marked with assumeValid to avoid an additional type system validation.
83
63
  if (config && config.assumeValid) {
84
64
  this.__validationErrors = [];
85
65
  } else {
86
- // Otherwise check for common mistakes during construction to produce
66
+ this.__validationErrors = undefined; // Otherwise check for common mistakes during construction to produce
87
67
  // clear and early error messages.
68
+
88
69
  !(_typeof(config) === 'object') ? invariant(0, 'Must provide configuration object.') : void 0;
89
70
  !(!config.types || Array.isArray(config.types)) ? invariant(0, "\"types\" must be Array if provided but got: ".concat(inspect(config.types), ".")) : void 0;
90
71
  !(!config.directives || Array.isArray(config.directives)) ? invariant(0, '"directives" must be Array if provided but got: ' + "".concat(inspect(config.directives), ".")) : void 0;
@@ -114,51 +95,67 @@ function () {
114
95
 
115
96
  typeMap = this._directives.reduce(typeMapDirectiveReducer, typeMap); // Storing the resulting map for reference by the schema.
116
97
 
117
- this._typeMap = typeMap; // Keep track of all implementations by interface name.
98
+ this._typeMap = typeMap;
99
+ this._possibleTypeMap = Object.create(null); // Keep track of all implementations by interface name.
118
100
 
119
101
  this._implementations = Object.create(null);
102
+ var _iteratorNormalCompletion = true;
103
+ var _didIteratorError = false;
104
+ var _iteratorError = undefined;
120
105
 
121
- var _arr = Object.keys(this._typeMap);
122
-
123
- for (var _i = 0; _i < _arr.length; _i++) {
124
- var typeName = _arr[_i];
125
- var type = this._typeMap[typeName];
106
+ try {
107
+ for (var _iterator = objectValues(this._typeMap)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
108
+ var type = _step.value;
126
109
 
127
- if (isObjectType(type)) {
128
- var _iteratorNormalCompletion = true;
129
- var _didIteratorError = false;
130
- var _iteratorError = undefined;
110
+ if (isObjectType(type)) {
111
+ var _iteratorNormalCompletion2 = true;
112
+ var _didIteratorError2 = false;
113
+ var _iteratorError2 = undefined;
131
114
 
132
- try {
133
- for (var _iterator = type.getInterfaces()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
134
- var iface = _step.value;
115
+ try {
116
+ for (var _iterator2 = type.getInterfaces()[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
117
+ var iface = _step2.value;
135
118
 
136
- if (isInterfaceType(iface)) {
137
- var impls = this._implementations[iface.name];
119
+ if (isInterfaceType(iface)) {
120
+ var impls = this._implementations[iface.name];
138
121
 
139
- if (impls) {
140
- impls.push(type);
141
- } else {
142
- this._implementations[iface.name] = [type];
122
+ if (impls) {
123
+ impls.push(type);
124
+ } else {
125
+ this._implementations[iface.name] = [type];
126
+ }
143
127
  }
144
128
  }
145
- }
146
- } catch (err) {
147
- _didIteratorError = true;
148
- _iteratorError = err;
149
- } finally {
150
- try {
151
- if (!_iteratorNormalCompletion && _iterator.return != null) {
152
- _iterator.return();
153
- }
129
+ } catch (err) {
130
+ _didIteratorError2 = true;
131
+ _iteratorError2 = err;
154
132
  } finally {
155
- if (_didIteratorError) {
156
- throw _iteratorError;
133
+ try {
134
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
135
+ _iterator2.return();
136
+ }
137
+ } finally {
138
+ if (_didIteratorError2) {
139
+ throw _iteratorError2;
140
+ }
157
141
  }
158
142
  }
143
+ } else if (isAbstractType(type) && !this._implementations[type.name]) {
144
+ this._implementations[type.name] = [];
145
+ }
146
+ }
147
+ } catch (err) {
148
+ _didIteratorError = true;
149
+ _iteratorError = err;
150
+ } finally {
151
+ try {
152
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
153
+ _iterator.return();
154
+ }
155
+ } finally {
156
+ if (_didIteratorError) {
157
+ throw _iteratorError;
159
158
  }
160
- } else if (isAbstractType(type) && !this._implementations[type.name]) {
161
- this._implementations[type.name] = [];
162
159
  }
163
160
  }
164
161
  }
@@ -196,10 +193,6 @@ function () {
196
193
  _proto.isPossibleType = function isPossibleType(abstractType, possibleType) {
197
194
  var possibleTypeMap = this._possibleTypeMap;
198
195
 
199
- if (!possibleTypeMap) {
200
- this._possibleTypeMap = possibleTypeMap = Object.create(null);
201
- }
202
-
203
196
  if (!possibleTypeMap[abstractType.name]) {
204
197
  var possibleTypes = this.getPossibleTypes(abstractType);
205
198
  possibleTypeMap[abstractType.name] = possibleTypes.reduce(function (map, type) {
@@ -251,13 +244,13 @@ function typeMapReducer(map, type) {
251
244
  }
252
245
 
253
246
  if (isObjectType(type) || isInterfaceType(type)) {
254
- var _iteratorNormalCompletion2 = true;
255
- var _didIteratorError2 = false;
256
- var _iteratorError2 = undefined;
247
+ var _iteratorNormalCompletion3 = true;
248
+ var _didIteratorError3 = false;
249
+ var _iteratorError3 = undefined;
257
250
 
258
251
  try {
259
- for (var _iterator2 = objectValues(type.getFields())[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
260
- var field = _step2.value;
252
+ for (var _iterator3 = objectValues(type.getFields())[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
253
+ var field = _step3.value;
261
254
 
262
255
  if (field.args) {
263
256
  var fieldArgTypes = field.args.map(function (arg) {
@@ -269,42 +262,42 @@ function typeMapReducer(map, type) {
269
262
  reducedMap = typeMapReducer(reducedMap, field.type);
270
263
  }
271
264
  } catch (err) {
272
- _didIteratorError2 = true;
273
- _iteratorError2 = err;
265
+ _didIteratorError3 = true;
266
+ _iteratorError3 = err;
274
267
  } finally {
275
268
  try {
276
- if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
277
- _iterator2.return();
269
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
270
+ _iterator3.return();
278
271
  }
279
272
  } finally {
280
- if (_didIteratorError2) {
281
- throw _iteratorError2;
273
+ if (_didIteratorError3) {
274
+ throw _iteratorError3;
282
275
  }
283
276
  }
284
277
  }
285
278
  }
286
279
 
287
280
  if (isInputObjectType(type)) {
288
- var _iteratorNormalCompletion3 = true;
289
- var _didIteratorError3 = false;
290
- var _iteratorError3 = undefined;
281
+ var _iteratorNormalCompletion4 = true;
282
+ var _didIteratorError4 = false;
283
+ var _iteratorError4 = undefined;
291
284
 
292
285
  try {
293
- for (var _iterator3 = objectValues(type.getFields())[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
294
- var _field = _step3.value;
286
+ for (var _iterator4 = objectValues(type.getFields())[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
287
+ var _field = _step4.value;
295
288
  reducedMap = typeMapReducer(reducedMap, _field.type);
296
289
  }
297
290
  } catch (err) {
298
- _didIteratorError3 = true;
299
- _iteratorError3 = err;
291
+ _didIteratorError4 = true;
292
+ _iteratorError4 = err;
300
293
  } finally {
301
294
  try {
302
- if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
303
- _iterator3.return();
295
+ if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
296
+ _iterator4.return();
304
297
  }
305
298
  } finally {
306
- if (_didIteratorError3) {
307
- throw _iteratorError3;
299
+ if (_didIteratorError4) {
300
+ throw _iteratorError4;
308
301
  }
309
302
  }
310
303
  }