graphql 15.1.0 → 15.4.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 (343) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +10 -12
  3. package/error/GraphQLError.js +5 -5
  4. package/error/GraphQLError.js.flow +5 -5
  5. package/error/GraphQLError.mjs +1 -1
  6. package/error/formatError.js +1 -1
  7. package/error/formatError.js.flow +2 -3
  8. package/error/index.js +4 -4
  9. package/error/index.js.flow +0 -1
  10. package/error/locatedError.d.ts +2 -2
  11. package/error/locatedError.js +10 -5
  12. package/error/locatedError.js.flow +11 -5
  13. package/error/locatedError.mjs +6 -4
  14. package/error/syntaxError.js +1 -1
  15. package/error/syntaxError.js.flow +1 -2
  16. package/execution/execute.d.ts +24 -16
  17. package/execution/execute.js +123 -105
  18. package/execution/execute.js.flow +169 -153
  19. package/execution/execute.mjs +101 -82
  20. package/execution/index.d.ts +2 -0
  21. package/execution/index.js +9 -3
  22. package/execution/index.js.flow +12 -3
  23. package/execution/index.mjs +1 -1
  24. package/execution/values.js +11 -11
  25. package/execution/values.js.flow +10 -14
  26. package/graphql.js +5 -5
  27. package/graphql.js.flow +9 -9
  28. package/index.d.ts +19 -1
  29. package/index.js +27 -9
  30. package/index.js.flow +10 -3
  31. package/index.mjs +4 -3
  32. package/jsutils/ObjMap.js.flow +0 -1
  33. package/jsutils/Path.d.ts +6 -1
  34. package/jsutils/Path.js +3 -2
  35. package/jsutils/Path.js.flow +3 -2
  36. package/jsutils/Path.mjs +3 -2
  37. package/jsutils/PromiseOrValue.js.flow +0 -1
  38. package/jsutils/defineInspect.js +2 -2
  39. package/jsutils/defineInspect.js.flow +0 -1
  40. package/jsutils/devAssert.js.flow +0 -1
  41. package/jsutils/didYouMean.js.flow +0 -1
  42. package/jsutils/identityFunc.js.flow +0 -1
  43. package/jsutils/inspect.js +1 -2
  44. package/jsutils/inspect.js.flow +10 -8
  45. package/jsutils/inspect.mjs +1 -1
  46. package/jsutils/instanceOf.js.flow +2 -3
  47. package/jsutils/invariant.js.flow +0 -1
  48. package/jsutils/isAsyncIterable.js +19 -0
  49. package/jsutils/isAsyncIterable.js.flow +18 -0
  50. package/jsutils/isAsyncIterable.mjs +16 -0
  51. package/jsutils/isCollection.js +1 -1
  52. package/jsutils/isCollection.js.flow +0 -1
  53. package/jsutils/isObjectLike.js.flow +0 -1
  54. package/jsutils/isPromise.js.flow +0 -1
  55. package/jsutils/keyMap.js.flow +1 -2
  56. package/jsutils/keyValMap.js.flow +1 -2
  57. package/jsutils/mapValue.js +1 -1
  58. package/jsutils/mapValue.js.flow +1 -2
  59. package/jsutils/memoize3.js +2 -5
  60. package/jsutils/memoize3.js.flow +2 -5
  61. package/jsutils/memoize3.mjs +2 -5
  62. package/jsutils/nodejsCustomInspectSymbol.js.flow +0 -1
  63. package/jsutils/printPathArray.js.flow +0 -1
  64. package/jsutils/promiseForObject.js.flow +1 -2
  65. package/jsutils/promiseReduce.js +1 -1
  66. package/jsutils/promiseReduce.js.flow +1 -1
  67. package/jsutils/promiseReduce.mjs +1 -1
  68. package/jsutils/suggestionList.js.flow +1 -2
  69. package/jsutils/toObjMap.js +1 -1
  70. package/jsutils/toObjMap.js.flow +5 -6
  71. package/language/ast.js +1 -1
  72. package/language/ast.js.flow +2 -3
  73. package/language/blockString.d.ts +1 -1
  74. package/language/blockString.js +53 -32
  75. package/language/blockString.js.flow +49 -34
  76. package/language/blockString.mjs +54 -33
  77. package/language/directiveLocation.js.flow +0 -1
  78. package/language/experimentalOnlineParser/grammar.d.ts +1006 -0
  79. package/language/experimentalOnlineParser/grammar.js +987 -0
  80. package/language/experimentalOnlineParser/grammar.js.flow +1000 -0
  81. package/language/experimentalOnlineParser/grammar.mjs +980 -0
  82. package/language/experimentalOnlineParser/index.d.ts +6 -0
  83. package/language/experimentalOnlineParser/index.js +31 -0
  84. package/language/experimentalOnlineParser/index.js.flow +7 -0
  85. package/language/experimentalOnlineParser/index.mjs +1 -0
  86. package/language/experimentalOnlineParser/onlineParser.d.ts +125 -0
  87. package/language/experimentalOnlineParser/onlineParser.js +604 -0
  88. package/language/experimentalOnlineParser/onlineParser.js.flow +723 -0
  89. package/language/experimentalOnlineParser/onlineParser.mjs +587 -0
  90. package/language/index.js +12 -12
  91. package/language/index.js.flow +0 -1
  92. package/language/kinds.js.flow +0 -1
  93. package/language/lexer.js +242 -183
  94. package/language/lexer.js.flow +191 -186
  95. package/language/lexer.mjs +239 -180
  96. package/language/location.js.flow +1 -2
  97. package/language/parser.js +73 -68
  98. package/language/parser.js.flow +112 -106
  99. package/language/parser.mjs +66 -62
  100. package/language/predicates.js +1 -1
  101. package/language/predicates.js.flow +1 -2
  102. package/language/printLocation.js +1 -1
  103. package/language/printLocation.js.flow +4 -4
  104. package/language/printer.js +20 -13
  105. package/language/printer.js.flow +27 -25
  106. package/language/printer.mjs +18 -11
  107. package/language/source.d.ts +12 -6
  108. package/language/source.js +25 -9
  109. package/language/source.js.flow +25 -8
  110. package/language/source.mjs +19 -7
  111. package/language/tokenKind.js.flow +0 -1
  112. package/language/visitor.d.ts +3 -3
  113. package/language/visitor.js +5 -5
  114. package/language/visitor.js.flow +5 -5
  115. package/language/visitor.mjs +3 -3
  116. package/package.json +1 -1
  117. package/polyfills/arrayFrom.js +2 -2
  118. package/polyfills/arrayFrom.js.flow +1 -2
  119. package/polyfills/arrayFrom.mjs +1 -1
  120. package/polyfills/find.js +1 -1
  121. package/polyfills/find.js.flow +1 -2
  122. package/polyfills/find.mjs +1 -1
  123. package/polyfills/isFinite.js +1 -1
  124. package/polyfills/isFinite.js.flow +1 -2
  125. package/polyfills/isFinite.mjs +1 -1
  126. package/polyfills/isInteger.js +1 -1
  127. package/polyfills/isInteger.js.flow +1 -2
  128. package/polyfills/isInteger.mjs +1 -1
  129. package/polyfills/objectEntries.js +1 -1
  130. package/polyfills/objectEntries.js.flow +2 -3
  131. package/polyfills/objectEntries.mjs +1 -1
  132. package/polyfills/objectValues.js +1 -1
  133. package/polyfills/objectValues.js.flow +2 -3
  134. package/polyfills/objectValues.mjs +1 -1
  135. package/polyfills/symbols.js +3 -5
  136. package/polyfills/symbols.js.flow +9 -6
  137. package/polyfills/symbols.mjs +3 -5
  138. package/subscription/index.js +1 -1
  139. package/subscription/index.js.flow +0 -1
  140. package/subscription/mapAsyncIterator.js +2 -2
  141. package/subscription/mapAsyncIterator.js.flow +9 -10
  142. package/subscription/mapAsyncIterator.mjs +1 -1
  143. package/subscription/subscribe.js +61 -73
  144. package/subscription/subscribe.js.flow +74 -88
  145. package/subscription/subscribe.mjs +53 -65
  146. package/type/definition.d.ts +181 -31
  147. package/type/definition.js +37 -32
  148. package/type/definition.js.flow +66 -51
  149. package/type/definition.mjs +20 -18
  150. package/type/directives.d.ts +17 -3
  151. package/type/directives.js +17 -16
  152. package/type/directives.js.flow +20 -21
  153. package/type/directives.mjs +6 -5
  154. package/type/index.d.ts +12 -0
  155. package/type/index.js +6 -6
  156. package/type/index.js.flow +0 -1
  157. package/type/introspection.js +86 -68
  158. package/type/introspection.js.flow +85 -54
  159. package/type/introspection.mjs +79 -61
  160. package/type/scalars.js +9 -9
  161. package/type/scalars.js.flow +3 -3
  162. package/type/scalars.mjs +1 -1
  163. package/type/schema.d.ts +17 -4
  164. package/type/schema.js +13 -13
  165. package/type/schema.js.flow +18 -16
  166. package/type/schema.mjs +1 -1
  167. package/type/validate.js +52 -19
  168. package/type/validate.js.flow +67 -18
  169. package/type/validate.mjs +44 -10
  170. package/utilities/TypeInfo.js +7 -7
  171. package/utilities/TypeInfo.js.flow +16 -18
  172. package/utilities/TypeInfo.mjs +1 -1
  173. package/utilities/assertValidName.js +2 -2
  174. package/utilities/assertValidName.js.flow +0 -1
  175. package/utilities/astFromValue.js +10 -10
  176. package/utilities/astFromValue.js.flow +2 -3
  177. package/utilities/buildASTSchema.js +17 -27
  178. package/utilities/buildASTSchema.js.flow +11 -28
  179. package/utilities/buildASTSchema.mjs +11 -21
  180. package/utilities/buildClientSchema.js +14 -14
  181. package/utilities/buildClientSchema.js.flow +41 -29
  182. package/utilities/buildClientSchema.mjs +5 -5
  183. package/utilities/coerceInputValue.js +14 -14
  184. package/utilities/coerceInputValue.js.flow +7 -6
  185. package/utilities/coerceInputValue.mjs +2 -2
  186. package/utilities/concatAST.js +9 -8
  187. package/utilities/concatAST.js.flow +9 -9
  188. package/utilities/concatAST.mjs +9 -6
  189. package/utilities/extendSchema.js +26 -19
  190. package/utilities/extendSchema.js.flow +58 -45
  191. package/utilities/extendSchema.mjs +9 -2
  192. package/utilities/findBreakingChanges.js +9 -9
  193. package/utilities/findBreakingChanges.js.flow +12 -11
  194. package/utilities/findDeprecatedUsages.d.ts +9 -1
  195. package/utilities/findDeprecatedUsages.js +11 -27
  196. package/utilities/findDeprecatedUsages.js.flow +15 -44
  197. package/utilities/findDeprecatedUsages.mjs +11 -25
  198. package/utilities/getIntrospectionQuery.js.flow +2 -3
  199. package/utilities/getOperationAST.js +1 -1
  200. package/utilities/getOperationAST.js.flow +1 -5
  201. package/utilities/getOperationAST.mjs +1 -1
  202. package/utilities/getOperationRootType.js +1 -1
  203. package/utilities/getOperationRootType.js.flow +5 -6
  204. package/utilities/index.d.ts +4 -1
  205. package/utilities/index.js +22 -22
  206. package/utilities/index.js.flow +1 -2
  207. package/utilities/index.mjs +1 -1
  208. package/utilities/introspectionFromSchema.js +6 -8
  209. package/utilities/introspectionFromSchema.js.flow +10 -10
  210. package/utilities/introspectionFromSchema.mjs +3 -4
  211. package/utilities/lexicographicSortSchema.js +10 -8
  212. package/utilities/lexicographicSortSchema.js.flow +19 -12
  213. package/utilities/lexicographicSortSchema.mjs +3 -1
  214. package/utilities/printSchema.js +15 -16
  215. package/utilities/printSchema.js.flow +34 -25
  216. package/utilities/printSchema.mjs +6 -7
  217. package/utilities/separateOperations.js +2 -2
  218. package/utilities/separateOperations.js.flow +2 -6
  219. package/utilities/separateOperations.mjs +1 -1
  220. package/utilities/stripIgnoredCharacters.js +6 -16
  221. package/utilities/stripIgnoredCharacters.js.flow +4 -13
  222. package/utilities/stripIgnoredCharacters.mjs +3 -10
  223. package/utilities/typeComparators.js +1 -1
  224. package/utilities/typeComparators.js.flow +2 -4
  225. package/utilities/typeFromAST.js +6 -6
  226. package/utilities/typeFromAST.js.flow +11 -14
  227. package/utilities/typeFromAST.mjs +2 -2
  228. package/utilities/typedQueryDocumentNode.d.ts +20 -0
  229. package/utilities/valueFromAST.js +6 -6
  230. package/utilities/valueFromAST.js.flow +7 -5
  231. package/utilities/valueFromASTUntyped.js +4 -4
  232. package/utilities/valueFromASTUntyped.js.flow +2 -3
  233. package/validation/ValidationContext.d.ts +3 -0
  234. package/validation/ValidationContext.js +7 -3
  235. package/validation/ValidationContext.js.flow +28 -22
  236. package/validation/ValidationContext.mjs +4 -0
  237. package/validation/index.d.ts +4 -0
  238. package/validation/index.js +52 -36
  239. package/validation/index.js.flow +4 -1
  240. package/validation/index.mjs +4 -1
  241. package/validation/rules/ExecutableDefinitions.js +1 -1
  242. package/validation/rules/ExecutableDefinitions.js.flow +0 -1
  243. package/validation/rules/ExecutableDefinitionsRule.js +3 -3
  244. package/validation/rules/ExecutableDefinitionsRule.js.flow +2 -3
  245. package/validation/rules/FieldsOnCorrectTypeRule.js +5 -5
  246. package/validation/rules/FieldsOnCorrectTypeRule.js.flow +9 -8
  247. package/validation/rules/FragmentsOnCompositeTypesRule.js +4 -4
  248. package/validation/rules/FragmentsOnCompositeTypesRule.js.flow +2 -3
  249. package/validation/rules/KnownArgumentNamesRule.js +5 -5
  250. package/validation/rules/KnownArgumentNamesRule.js.flow +5 -5
  251. package/validation/rules/KnownDirectivesRule.js +6 -6
  252. package/validation/rules/KnownDirectivesRule.js.flow +10 -11
  253. package/validation/rules/KnownFragmentNamesRule.js +1 -1
  254. package/validation/rules/KnownFragmentNamesRule.js.flow +3 -3
  255. package/validation/rules/KnownTypeNamesRule.js +12 -10
  256. package/validation/rules/KnownTypeNamesRule.js.flow +14 -11
  257. package/validation/rules/KnownTypeNamesRule.mjs +6 -5
  258. package/validation/rules/LoneAnonymousOperationRule.js +2 -2
  259. package/validation/rules/LoneAnonymousOperationRule.js.flow +2 -3
  260. package/validation/rules/LoneSchemaDefinition.js +1 -1
  261. package/validation/rules/LoneSchemaDefinition.js.flow +0 -1
  262. package/validation/rules/LoneSchemaDefinitionRule.js +1 -1
  263. package/validation/rules/LoneSchemaDefinitionRule.js.flow +2 -3
  264. package/validation/rules/NoFragmentCyclesRule.js +1 -1
  265. package/validation/rules/NoFragmentCyclesRule.js.flow +4 -5
  266. package/validation/rules/NoUndefinedVariablesRule.js +1 -1
  267. package/validation/rules/NoUndefinedVariablesRule.js.flow +3 -3
  268. package/validation/rules/NoUnusedFragmentsRule.js +1 -1
  269. package/validation/rules/NoUnusedFragmentsRule.js.flow +3 -3
  270. package/validation/rules/NoUnusedVariablesRule.js +1 -1
  271. package/validation/rules/NoUnusedVariablesRule.js.flow +3 -3
  272. package/validation/rules/OverlappingFieldsCanBeMergedRule.js +20 -20
  273. package/validation/rules/OverlappingFieldsCanBeMergedRule.js.flow +29 -27
  274. package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +12 -12
  275. package/validation/rules/PossibleFragmentSpreadsRule.js +5 -5
  276. package/validation/rules/PossibleFragmentSpreadsRule.js.flow +7 -4
  277. package/validation/rules/PossibleTypeExtensions.js +1 -1
  278. package/validation/rules/PossibleTypeExtensions.js.flow +0 -1
  279. package/validation/rules/PossibleTypeExtensionsRule.js +8 -8
  280. package/validation/rules/PossibleTypeExtensionsRule.js.flow +8 -6
  281. package/validation/rules/ProvidedRequiredArgumentsRule.js +7 -7
  282. package/validation/rules/ProvidedRequiredArgumentsRule.js.flow +7 -6
  283. package/validation/rules/ScalarLeafsRule.js +3 -3
  284. package/validation/rules/ScalarLeafsRule.js.flow +3 -4
  285. package/validation/rules/SingleFieldSubscriptionsRule.js +1 -1
  286. package/validation/rules/SingleFieldSubscriptionsRule.js.flow +3 -4
  287. package/validation/rules/UniqueArgumentNamesRule.js +1 -1
  288. package/validation/rules/UniqueArgumentNamesRule.js.flow +2 -3
  289. package/validation/rules/UniqueDirectiveNames.js +1 -1
  290. package/validation/rules/UniqueDirectiveNames.js.flow +0 -1
  291. package/validation/rules/UniqueDirectiveNamesRule.js +1 -1
  292. package/validation/rules/UniqueDirectiveNamesRule.js.flow +2 -3
  293. package/validation/rules/UniqueDirectivesPerLocationRule.js +4 -4
  294. package/validation/rules/UniqueDirectivesPerLocationRule.js.flow +4 -5
  295. package/validation/rules/UniqueEnumValueNames.js +1 -1
  296. package/validation/rules/UniqueEnumValueNames.js.flow +0 -1
  297. package/validation/rules/UniqueEnumValueNamesRule.js +2 -2
  298. package/validation/rules/UniqueEnumValueNamesRule.js.flow +11 -4
  299. package/validation/rules/UniqueFieldDefinitionNames.js +1 -1
  300. package/validation/rules/UniqueFieldDefinitionNames.js.flow +0 -1
  301. package/validation/rules/UniqueFieldDefinitionNamesRule.js +3 -3
  302. package/validation/rules/UniqueFieldDefinitionNamesRule.js.flow +17 -6
  303. package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +1 -1
  304. package/validation/rules/UniqueFragmentNamesRule.js +1 -1
  305. package/validation/rules/UniqueFragmentNamesRule.js.flow +3 -3
  306. package/validation/rules/UniqueInputFieldNamesRule.js +1 -1
  307. package/validation/rules/UniqueInputFieldNamesRule.js.flow +3 -3
  308. package/validation/rules/UniqueOperationNamesRule.js +1 -1
  309. package/validation/rules/UniqueOperationNamesRule.js.flow +3 -3
  310. package/validation/rules/UniqueOperationTypes.js +1 -1
  311. package/validation/rules/UniqueOperationTypes.js.flow +0 -1
  312. package/validation/rules/UniqueOperationTypesRule.js +1 -1
  313. package/validation/rules/UniqueOperationTypesRule.js.flow +10 -4
  314. package/validation/rules/UniqueTypeNames.js +1 -1
  315. package/validation/rules/UniqueTypeNames.js.flow +0 -1
  316. package/validation/rules/UniqueTypeNamesRule.js +1 -1
  317. package/validation/rules/UniqueTypeNamesRule.js.flow +3 -4
  318. package/validation/rules/UniqueVariableNamesRule.js +1 -1
  319. package/validation/rules/UniqueVariableNamesRule.js.flow +3 -4
  320. package/validation/rules/ValuesOfCorrectTypeRule.js +8 -8
  321. package/validation/rules/ValuesOfCorrectTypeRule.js.flow +3 -4
  322. package/validation/rules/VariablesAreInputTypesRule.js +4 -4
  323. package/validation/rules/VariablesAreInputTypesRule.js.flow +3 -4
  324. package/validation/rules/VariablesInAllowedPositionRule.js +6 -6
  325. package/validation/rules/VariablesInAllowedPositionRule.js.flow +6 -6
  326. package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +14 -0
  327. package/validation/rules/custom/NoDeprecatedCustomRule.js +79 -0
  328. package/validation/rules/custom/NoDeprecatedCustomRule.js.flow +94 -0
  329. package/validation/rules/custom/NoDeprecatedCustomRule.mjs +68 -0
  330. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +16 -0
  331. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +34 -0
  332. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js.flow +38 -0
  333. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs +25 -0
  334. package/validation/specifiedRules.js +33 -33
  335. package/validation/specifiedRules.js.flow +0 -1
  336. package/validation/validate.js +7 -7
  337. package/validation/validate.js.flow +4 -9
  338. package/version.js +2 -2
  339. package/version.js.flow +2 -3
  340. package/version.mjs +2 -2
  341. package/polyfills/flatMap.js +0 -30
  342. package/polyfills/flatMap.js.flow +0 -28
  343. package/polyfills/flatMap.mjs +0 -23
@@ -1,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  import isFinite from '../polyfills/isFinite';
4
3
  import isInteger from '../polyfills/isInteger';
5
4
 
@@ -11,7 +10,8 @@ import { print } from '../language/printer';
11
10
 
12
11
  import { GraphQLError } from '../error/GraphQLError';
13
12
 
14
- import { type GraphQLNamedType, GraphQLScalarType } from './definition';
13
+ import type { GraphQLNamedType } from './definition';
14
+ import { GraphQLScalarType } from './definition';
15
15
 
16
16
  // As per the GraphQL Spec, Integers are only treated as valid when a valid
17
17
  // 32-bit signed integer, providing the broadest support across platforms.
@@ -143,7 +143,7 @@ function serializeObject(outputValue: mixed): mixed {
143
143
  }
144
144
  }
145
145
  if (typeof outputValue.toJSON === 'function') {
146
- // $FlowFixMe(>=0.90.0)
146
+ // $FlowFixMe[incompatible-use]
147
147
  return outputValue.toJSON();
148
148
  }
149
149
  }
package/type/scalars.mjs CHANGED
@@ -125,7 +125,7 @@ function serializeObject(outputValue) {
125
125
  }
126
126
 
127
127
  if (typeof outputValue.toJSON === 'function') {
128
- // $FlowFixMe(>=0.90.0)
128
+ // $FlowFixMe[incompatible-use]
129
129
  return outputValue.toJSON();
130
130
  }
131
131
  }
package/type/schema.d.ts CHANGED
@@ -19,6 +19,19 @@ import {
19
19
  export function isSchema(schema: any): schema is GraphQLSchema;
20
20
  export function assertSchema(schema: any): GraphQLSchema;
21
21
 
22
+ /**
23
+ * Custom extensions
24
+ *
25
+ * @remarks
26
+ * Use a unique identifier name for your extension, for example the name of
27
+ * your library or project. Do not use a shortened identifier as this increases
28
+ * the risk of conflicts. We recommend you add at most one extension field,
29
+ * an object which can contain all the values you need.
30
+ */
31
+ export interface GraphQLSchemaExtensions {
32
+ [attributeName: string]: any;
33
+ }
34
+
22
35
  /**
23
36
  * Schema Definition
24
37
  *
@@ -47,7 +60,7 @@ export function assertSchema(schema: any): GraphQLSchema;
47
60
  */
48
61
  export class GraphQLSchema {
49
62
  description: Maybe<string>;
50
- extensions: Maybe<Readonly<Record<string, any>>>;
63
+ extensions: Maybe<Readonly<GraphQLSchemaExtensions>>;
51
64
  astNode: Maybe<SchemaDefinitionNode>;
52
65
  extensionASTNodes: Maybe<ReadonlyArray<SchemaExtensionNode>>;
53
66
 
@@ -83,7 +96,7 @@ export class GraphQLSchema {
83
96
  toConfig(): GraphQLSchemaConfig & {
84
97
  types: Array<GraphQLNamedType>;
85
98
  directives: Array<GraphQLDirective>;
86
- extensions: Maybe<Readonly<Record<string, any>>>;
99
+ extensions: Maybe<Readonly<GraphQLSchemaExtensions>>;
87
100
  extensionASTNodes: ReadonlyArray<SchemaExtensionNode>;
88
101
  assumeValid: boolean;
89
102
  };
@@ -116,7 +129,7 @@ export interface GraphQLSchemaConfig extends GraphQLSchemaValidationOptions {
116
129
  subscription?: Maybe<GraphQLObjectType>;
117
130
  types?: Maybe<Array<GraphQLNamedType>>;
118
131
  directives?: Maybe<Array<GraphQLDirective>>;
119
- extensions?: Maybe<Readonly<Record<string, any>>>;
132
+ extensions?: Maybe<Readonly<GraphQLSchemaExtensions>>;
120
133
  astNode?: Maybe<SchemaDefinitionNode>;
121
134
  extensionASTNodes?: Maybe<ReadonlyArray<SchemaExtensionNode>>;
122
135
  }
@@ -128,7 +141,7 @@ export interface GraphQLSchemaNormalizedConfig extends GraphQLSchemaConfig {
128
141
  description: Maybe<string>;
129
142
  types: Array<GraphQLNamedType>;
130
143
  directives: Array<GraphQLDirective>;
131
- extensions: Maybe<Readonly<Record<string, any>>>;
144
+ extensions: Maybe<Readonly<GraphQLSchemaExtensions>>;
132
145
  extensionASTNodes: Maybe<ReadonlyArray<SchemaExtensionNode>>;
133
146
  assumeValid: boolean;
134
147
  }
package/type/schema.js CHANGED
@@ -7,29 +7,29 @@ exports.isSchema = isSchema;
7
7
  exports.assertSchema = assertSchema;
8
8
  exports.GraphQLSchema = void 0;
9
9
 
10
- var _find = _interopRequireDefault(require("../polyfills/find"));
10
+ var _find = _interopRequireDefault(require("../polyfills/find.js"));
11
11
 
12
- var _arrayFrom3 = _interopRequireDefault(require("../polyfills/arrayFrom"));
12
+ var _arrayFrom3 = _interopRequireDefault(require("../polyfills/arrayFrom.js"));
13
13
 
14
- var _objectValues5 = _interopRequireDefault(require("../polyfills/objectValues"));
14
+ var _objectValues5 = _interopRequireDefault(require("../polyfills/objectValues.js"));
15
15
 
16
- var _symbols = require("../polyfills/symbols");
16
+ var _symbols = require("../polyfills/symbols.js");
17
17
 
18
- var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
18
+ var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
19
19
 
20
- var _toObjMap = _interopRequireDefault(require("../jsutils/toObjMap"));
20
+ var _toObjMap = _interopRequireDefault(require("../jsutils/toObjMap.js"));
21
21
 
22
- var _devAssert = _interopRequireDefault(require("../jsutils/devAssert"));
22
+ var _devAssert = _interopRequireDefault(require("../jsutils/devAssert.js"));
23
23
 
24
- var _instanceOf = _interopRequireDefault(require("../jsutils/instanceOf"));
24
+ var _instanceOf = _interopRequireDefault(require("../jsutils/instanceOf.js"));
25
25
 
26
- var _isObjectLike = _interopRequireDefault(require("../jsutils/isObjectLike"));
26
+ var _isObjectLike = _interopRequireDefault(require("../jsutils/isObjectLike.js"));
27
27
 
28
- var _introspection = require("./introspection");
28
+ var _introspection = require("./introspection.js");
29
29
 
30
- var _directives = require("./directives");
30
+ var _directives = require("./directives.js");
31
31
 
32
- var _definition = require("./definition");
32
+ var _definition = require("./definition.js");
33
33
 
34
34
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
35
 
@@ -331,7 +331,7 @@ var GraphQLSchema = /*#__PURE__*/function () {
331
331
  extensionASTNodes: (_this$extensionASTNod = this.extensionASTNodes) !== null && _this$extensionASTNod !== void 0 ? _this$extensionASTNod : [],
332
332
  assumeValid: this.__validationErrors !== undefined
333
333
  };
334
- } // $FlowFixMe Flow doesn't support computed properties yet
334
+ } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet
335
335
  ;
336
336
 
337
337
  _createClass(GraphQLSchema, [{
@@ -1,27 +1,34 @@
1
1
  // @flow strict
2
-
3
2
  import find from '../polyfills/find';
4
3
  import arrayFrom from '../polyfills/arrayFrom';
5
4
  import objectValues from '../polyfills/objectValues';
6
5
  import { SYMBOL_TO_STRING_TAG } from '../polyfills/symbols';
7
6
 
7
+ import type {
8
+ ObjMap,
9
+ ReadOnlyObjMap,
10
+ ReadOnlyObjMapLike,
11
+ } from '../jsutils/ObjMap';
8
12
  import inspect from '../jsutils/inspect';
9
13
  import toObjMap from '../jsutils/toObjMap';
10
14
  import devAssert from '../jsutils/devAssert';
11
15
  import instanceOf from '../jsutils/instanceOf';
12
16
  import isObjectLike from '../jsutils/isObjectLike';
13
- import {
14
- type ObjMap,
15
- type ReadOnlyObjMap,
16
- type ReadOnlyObjMapLike,
17
- } from '../jsutils/ObjMap';
18
17
 
19
- import { type GraphQLError } from '../error/GraphQLError';
20
- import {
21
- type SchemaDefinitionNode,
22
- type SchemaExtensionNode,
18
+ import type { GraphQLError } from '../error/GraphQLError';
19
+
20
+ import type {
21
+ SchemaDefinitionNode,
22
+ SchemaExtensionNode,
23
23
  } from '../language/ast';
24
24
 
25
+ import type {
26
+ GraphQLType,
27
+ GraphQLNamedType,
28
+ GraphQLAbstractType,
29
+ GraphQLObjectType,
30
+ GraphQLInterfaceType,
31
+ } from './definition';
25
32
  import { __Schema } from './introspection';
26
33
  import {
27
34
  GraphQLDirective,
@@ -29,11 +36,6 @@ import {
29
36
  specifiedDirectives,
30
37
  } from './directives';
31
38
  import {
32
- type GraphQLType,
33
- type GraphQLNamedType,
34
- type GraphQLAbstractType,
35
- type GraphQLObjectType,
36
- type GraphQLInterfaceType,
37
39
  isObjectType,
38
40
  isInterfaceType,
39
41
  isUnionType,
@@ -354,7 +356,7 @@ export class GraphQLSchema {
354
356
  };
355
357
  }
356
358
 
357
- // $FlowFixMe Flow doesn't support computed properties yet
359
+ // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet
358
360
  get [SYMBOL_TO_STRING_TAG]() {
359
361
  return 'GraphQLSchema';
360
362
  }
package/type/schema.mjs CHANGED
@@ -310,7 +310,7 @@ export var GraphQLSchema = /*#__PURE__*/function () {
310
310
  extensionASTNodes: (_this$extensionASTNod = this.extensionASTNodes) !== null && _this$extensionASTNod !== void 0 ? _this$extensionASTNod : [],
311
311
  assumeValid: this.__validationErrors !== undefined
312
312
  };
313
- } // $FlowFixMe Flow doesn't support computed properties yet
313
+ } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet
314
314
  ;
315
315
 
316
316
  _createClass(GraphQLSchema, [{
package/type/validate.js CHANGED
@@ -6,29 +6,27 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.validateSchema = validateSchema;
7
7
  exports.assertValidSchema = assertValidSchema;
8
8
 
9
- var _find = _interopRequireDefault(require("../polyfills/find"));
9
+ var _find = _interopRequireDefault(require("../polyfills/find.js"));
10
10
 
11
- var _flatMap = _interopRequireDefault(require("../polyfills/flatMap"));
11
+ var _objectValues5 = _interopRequireDefault(require("../polyfills/objectValues.js"));
12
12
 
13
- var _objectValues5 = _interopRequireDefault(require("../polyfills/objectValues"));
13
+ var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
14
14
 
15
- var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
15
+ var _GraphQLError = require("../error/GraphQLError.js");
16
16
 
17
- var _GraphQLError = require("../error/GraphQLError");
17
+ var _locatedError = require("../error/locatedError.js");
18
18
 
19
- var _locatedError = require("../error/locatedError");
19
+ var _assertValidName = require("../utilities/assertValidName.js");
20
20
 
21
- var _assertValidName = require("../utilities/assertValidName");
21
+ var _typeComparators = require("../utilities/typeComparators.js");
22
22
 
23
- var _typeComparators = require("../utilities/typeComparators");
23
+ var _schema = require("./schema.js");
24
24
 
25
- var _directives = require("./directives");
25
+ var _introspection = require("./introspection.js");
26
26
 
27
- var _introspection = require("./introspection");
27
+ var _directives = require("./directives.js");
28
28
 
29
- var _schema = require("./schema");
30
-
31
- var _definition = require("./definition");
29
+ var _definition = require("./definition.js");
32
30
 
33
31
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
34
32
 
@@ -166,6 +164,13 @@ function validateDirectives(context) {
166
164
  if (!(0, _definition.isInputType)(arg.type)) {
167
165
  context.reportError("The type of @".concat(directive.name, "(").concat(arg.name, ":) must be Input Type ") + "but got: ".concat((0, _inspect.default)(arg.type), "."), arg.astNode);
168
166
  }
167
+
168
+ if ((0, _definition.isRequiredArgument)(arg) && arg.deprecationReason != null) {
169
+ var _arg$astNode;
170
+
171
+ context.reportError("Required argument @".concat(directive.name, "(").concat(arg.name, ":) cannot be deprecated."), [getDeprecatedDirectiveNode(arg.astNode), // istanbul ignore next (TODO need to write coverage tests)
172
+ (_arg$astNode = arg.astNode) === null || _arg$astNode === void 0 ? void 0 : _arg$astNode.type]);
173
+ }
169
174
  }
170
175
  }
171
176
  }
@@ -248,9 +253,16 @@ function validateFields(context, type) {
248
253
  validateName(context, arg); // Ensure the type is an input type
249
254
 
250
255
  if (!(0, _definition.isInputType)(arg.type)) {
251
- var _arg$astNode;
256
+ var _arg$astNode2;
252
257
 
253
- context.reportError("The type of ".concat(type.name, ".").concat(field.name, "(").concat(argName, ":) must be Input ") + "Type but got: ".concat((0, _inspect.default)(arg.type), "."), (_arg$astNode = arg.astNode) === null || _arg$astNode === void 0 ? void 0 : _arg$astNode.type);
258
+ context.reportError("The type of ".concat(type.name, ".").concat(field.name, "(").concat(argName, ":) must be Input ") + "Type but got: ".concat((0, _inspect.default)(arg.type), "."), (_arg$astNode2 = arg.astNode) === null || _arg$astNode2 === void 0 ? void 0 : _arg$astNode2.type);
259
+ }
260
+
261
+ if ((0, _definition.isRequiredArgument)(arg) && arg.deprecationReason != null) {
262
+ var _arg$astNode3;
263
+
264
+ context.reportError("Required argument ".concat(type.name, ".").concat(field.name, "(").concat(argName, ":) cannot be deprecated."), [getDeprecatedDirectiveNode(arg.astNode), // istanbul ignore next (TODO need to write coverage tests)
265
+ (_arg$astNode3 = arg.astNode) === null || _arg$astNode3 === void 0 ? void 0 : _arg$astNode3.type]);
254
266
  }
255
267
  }
256
268
  }
@@ -431,6 +443,13 @@ function validateInputFields(context, inputObj) {
431
443
 
432
444
  context.reportError("The type of ".concat(inputObj.name, ".").concat(field.name, " must be Input Type ") + "but got: ".concat((0, _inspect.default)(field.type), "."), (_field$astNode2 = field.astNode) === null || _field$astNode2 === void 0 ? void 0 : _field$astNode2.type);
433
445
  }
446
+
447
+ if ((0, _definition.isRequiredInputField)(field) && field.deprecationReason != null) {
448
+ var _field$astNode3;
449
+
450
+ context.reportError("Required input field ".concat(inputObj.name, ".").concat(field.name, " cannot be deprecated."), [getDeprecatedDirectiveNode(field.astNode), // istanbul ignore next (TODO need to write coverage tests)
451
+ (_field$astNode3 = field.astNode) === null || _field$astNode3 === void 0 ? void 0 : _field$astNode3.type]);
452
+ }
434
453
  }
435
454
  }
436
455
 
@@ -491,12 +510,17 @@ function getAllNodes(object) {
491
510
  }
492
511
 
493
512
  function getAllSubNodes(object, getter) {
494
- // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
495
- return (0, _flatMap.default)(getAllNodes(object), function (item) {
513
+ var subNodes = [];
514
+
515
+ for (var _i32 = 0, _getAllNodes2 = getAllNodes(object); _i32 < _getAllNodes2.length; _i32++) {
496
516
  var _getter;
497
517
 
498
- return (_getter = getter(item)) !== null && _getter !== void 0 ? _getter : [];
499
- });
518
+ var node = _getAllNodes2[_i32];
519
+ // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
520
+ subNodes = subNodes.concat((_getter = getter(node)) !== null && _getter !== void 0 ? _getter : []);
521
+ }
522
+
523
+ return subNodes;
500
524
  }
501
525
 
502
526
  function getAllImplementsInterfaceNodes(type, iface) {
@@ -514,3 +538,12 @@ function getUnionMemberTypeNodes(union, typeName) {
514
538
  return typeNode.name.value === typeName;
515
539
  });
516
540
  }
541
+
542
+ function getDeprecatedDirectiveNode(definitionNode) {
543
+ var _definitionNode$direc;
544
+
545
+ // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
546
+ return definitionNode === null || definitionNode === void 0 ? void 0 : (_definitionNode$direc = definitionNode.directives) === null || _definitionNode$direc === void 0 ? void 0 : _definitionNode$direc.find(function (node) {
547
+ return node.name.value === _directives.GraphQLDeprecatedDirective.name;
548
+ });
549
+ }
@@ -1,7 +1,5 @@
1
1
  // @flow strict
2
-
3
2
  import find from '../polyfills/find';
4
- import flatMap from '../polyfills/flatMap';
5
3
  import objectValues from '../polyfills/objectValues';
6
4
 
7
5
  import inspect from '../jsutils/inspect';
@@ -9,24 +7,28 @@ import inspect from '../jsutils/inspect';
9
7
  import { GraphQLError } from '../error/GraphQLError';
10
8
  import { locatedError } from '../error/locatedError';
11
9
 
12
- import {
13
- type ASTNode,
14
- type NamedTypeNode,
15
- type OperationTypeNode,
10
+ import type {
11
+ ASTNode,
12
+ NamedTypeNode,
13
+ DirectiveNode,
14
+ OperationTypeNode,
16
15
  } from '../language/ast';
17
16
 
18
17
  import { isValidNameError } from '../utilities/assertValidName';
19
18
  import { isEqualType, isTypeSubTypeOf } from '../utilities/typeComparators';
20
19
 
21
- import { isDirective } from './directives';
20
+ import type { GraphQLSchema } from './schema';
21
+ import type {
22
+ GraphQLObjectType,
23
+ GraphQLInterfaceType,
24
+ GraphQLUnionType,
25
+ GraphQLEnumType,
26
+ GraphQLInputObjectType,
27
+ } from './definition';
28
+ import { assertSchema } from './schema';
22
29
  import { isIntrospectionType } from './introspection';
23
- import { type GraphQLSchema, assertSchema } from './schema';
30
+ import { isDirective, GraphQLDeprecatedDirective } from './directives';
24
31
  import {
25
- type GraphQLObjectType,
26
- type GraphQLInterfaceType,
27
- type GraphQLUnionType,
28
- type GraphQLEnumType,
29
- type GraphQLInputObjectType,
30
32
  isObjectType,
31
33
  isInterfaceType,
32
34
  isUnionType,
@@ -37,6 +39,7 @@ import {
37
39
  isInputType,
38
40
  isOutputType,
39
41
  isRequiredArgument,
42
+ isRequiredInputField,
40
43
  } from './definition';
41
44
 
42
45
  /**
@@ -107,7 +110,7 @@ class SchemaValidationContext {
107
110
  }
108
111
  }
109
112
 
110
- function validateRootTypes(context) {
113
+ function validateRootTypes(context: SchemaValidationContext): void {
111
114
  const schema = context.schema;
112
115
  const queryType = schema.getQueryType();
113
116
  if (!queryType) {
@@ -182,6 +185,17 @@ function validateDirectives(context: SchemaValidationContext): void {
182
185
  arg.astNode,
183
186
  );
184
187
  }
188
+
189
+ if (isRequiredArgument(arg) && arg.deprecationReason != null) {
190
+ context.reportError(
191
+ `Required argument @${directive.name}(${arg.name}:) cannot be deprecated.`,
192
+ [
193
+ getDeprecatedDirectiveNode(arg.astNode),
194
+ // istanbul ignore next (TODO need to write coverage tests)
195
+ arg.astNode?.type,
196
+ ],
197
+ );
198
+ }
185
199
  }
186
200
  }
187
201
  }
@@ -287,6 +301,17 @@ function validateFields(
287
301
  arg.astNode?.type,
288
302
  );
289
303
  }
304
+
305
+ if (isRequiredArgument(arg) && arg.deprecationReason != null) {
306
+ context.reportError(
307
+ `Required argument ${type.name}.${field.name}(${argName}:) cannot be deprecated.`,
308
+ [
309
+ getDeprecatedDirectiveNode(arg.astNode),
310
+ // istanbul ignore next (TODO need to write coverage tests)
311
+ arg.astNode?.type,
312
+ ],
313
+ );
314
+ }
290
315
  }
291
316
  }
292
317
  }
@@ -522,12 +547,23 @@ function validateInputFields(
522
547
  field.astNode?.type,
523
548
  );
524
549
  }
550
+
551
+ if (isRequiredInputField(field) && field.deprecationReason != null) {
552
+ context.reportError(
553
+ `Required input field ${inputObj.name}.${field.name} cannot be deprecated.`,
554
+ [
555
+ getDeprecatedDirectiveNode(field.astNode),
556
+ // istanbul ignore next (TODO need to write coverage tests)
557
+ field.astNode?.type,
558
+ ],
559
+ );
560
+ }
525
561
  }
526
562
  }
527
563
 
528
564
  function createInputObjectCircularRefsValidator(
529
565
  context: SchemaValidationContext,
530
- ) {
566
+ ): (GraphQLInputObjectType) => void {
531
567
  // Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js'.
532
568
  // Tracks already visited types to maintain O(N) and to ensure that cycles
533
569
  // are not redundantly reported.
@@ -544,7 +580,7 @@ function createInputObjectCircularRefsValidator(
544
580
  // This does a straight-forward DFS to find cycles.
545
581
  // It does not terminate when a cycle was found but continues to explore
546
582
  // the graph to find all possible cycles.
547
- function detectCycleRecursive(inputObj: GraphQLInputObjectType) {
583
+ function detectCycleRecursive(inputObj: GraphQLInputObjectType): void {
548
584
  if (visitedTypes[inputObj.name]) {
549
585
  return;
550
586
  }
@@ -598,8 +634,12 @@ function getAllSubNodes<T: ASTNode, K: ASTNode, L: ASTNode>(
598
634
  object: SDLDefinedObject<T, K>,
599
635
  getter: (T | K) => ?(L | $ReadOnlyArray<L>),
600
636
  ): $ReadOnlyArray<L> {
601
- // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
602
- return flatMap(getAllNodes(object), (item) => getter(item) ?? []);
637
+ let subNodes = [];
638
+ for (const node of getAllNodes(object)) {
639
+ // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
640
+ subNodes = subNodes.concat(getter(node) ?? []);
641
+ }
642
+ return subNodes;
603
643
  }
604
644
 
605
645
  function getAllImplementsInterfaceNodes(
@@ -619,3 +659,12 @@ function getUnionMemberTypeNodes(
619
659
  (typeNode) => typeNode.name.value === typeName,
620
660
  );
621
661
  }
662
+
663
+ function getDeprecatedDirectiveNode(
664
+ definitionNode: ?{ +directives?: $ReadOnlyArray<DirectiveNode>, ... },
665
+ ): ?DirectiveNode {
666
+ // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
667
+ return definitionNode?.directives?.find(
668
+ (node) => node.name.value === GraphQLDeprecatedDirective.name,
669
+ );
670
+ }
package/type/validate.mjs CHANGED
@@ -1,15 +1,14 @@
1
1
  import find from "../polyfills/find.mjs";
2
- import flatMap from "../polyfills/flatMap.mjs";
3
2
  import objectValues from "../polyfills/objectValues.mjs";
4
3
  import inspect from "../jsutils/inspect.mjs";
5
4
  import { GraphQLError } from "../error/GraphQLError.mjs";
6
5
  import { locatedError } from "../error/locatedError.mjs";
7
6
  import { isValidNameError } from "../utilities/assertValidName.mjs";
8
7
  import { isEqualType, isTypeSubTypeOf } from "../utilities/typeComparators.mjs";
9
- import { isDirective } from "./directives.mjs";
10
- import { isIntrospectionType } from "./introspection.mjs";
11
8
  import { assertSchema } from "./schema.mjs";
12
- import { isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isNamedType, isNonNullType, isInputType, isOutputType, isRequiredArgument } from "./definition.mjs";
9
+ import { isIntrospectionType } from "./introspection.mjs";
10
+ import { isDirective, GraphQLDeprecatedDirective } from "./directives.mjs";
11
+ import { isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType, isNamedType, isNonNullType, isInputType, isOutputType, isRequiredArgument, isRequiredInputField } from "./definition.mjs";
13
12
  /**
14
13
  * Implements the "Type Validation" sub-sections of the specification's
15
14
  * "Type System" section.
@@ -144,6 +143,13 @@ function validateDirectives(context) {
144
143
  if (!isInputType(arg.type)) {
145
144
  context.reportError("The type of @".concat(directive.name, "(").concat(arg.name, ":) must be Input Type ") + "but got: ".concat(inspect(arg.type), "."), arg.astNode);
146
145
  }
146
+
147
+ if (isRequiredArgument(arg) && arg.deprecationReason != null) {
148
+ var _arg$astNode;
149
+
150
+ context.reportError("Required argument @".concat(directive.name, "(").concat(arg.name, ":) cannot be deprecated."), [getDeprecatedDirectiveNode(arg.astNode), // istanbul ignore next (TODO need to write coverage tests)
151
+ (_arg$astNode = arg.astNode) === null || _arg$astNode === void 0 ? void 0 : _arg$astNode.type]);
152
+ }
147
153
  }
148
154
  }
149
155
  }
@@ -226,9 +232,16 @@ function validateFields(context, type) {
226
232
  validateName(context, arg); // Ensure the type is an input type
227
233
 
228
234
  if (!isInputType(arg.type)) {
229
- var _arg$astNode;
235
+ var _arg$astNode2;
236
+
237
+ context.reportError("The type of ".concat(type.name, ".").concat(field.name, "(").concat(argName, ":) must be Input ") + "Type but got: ".concat(inspect(arg.type), "."), (_arg$astNode2 = arg.astNode) === null || _arg$astNode2 === void 0 ? void 0 : _arg$astNode2.type);
238
+ }
230
239
 
231
- context.reportError("The type of ".concat(type.name, ".").concat(field.name, "(").concat(argName, ":) must be Input ") + "Type but got: ".concat(inspect(arg.type), "."), (_arg$astNode = arg.astNode) === null || _arg$astNode === void 0 ? void 0 : _arg$astNode.type);
240
+ if (isRequiredArgument(arg) && arg.deprecationReason != null) {
241
+ var _arg$astNode3;
242
+
243
+ context.reportError("Required argument ".concat(type.name, ".").concat(field.name, "(").concat(argName, ":) cannot be deprecated."), [getDeprecatedDirectiveNode(arg.astNode), // istanbul ignore next (TODO need to write coverage tests)
244
+ (_arg$astNode3 = arg.astNode) === null || _arg$astNode3 === void 0 ? void 0 : _arg$astNode3.type]);
232
245
  }
233
246
  }
234
247
  }
@@ -409,6 +422,13 @@ function validateInputFields(context, inputObj) {
409
422
 
410
423
  context.reportError("The type of ".concat(inputObj.name, ".").concat(field.name, " must be Input Type ") + "but got: ".concat(inspect(field.type), "."), (_field$astNode2 = field.astNode) === null || _field$astNode2 === void 0 ? void 0 : _field$astNode2.type);
411
424
  }
425
+
426
+ if (isRequiredInputField(field) && field.deprecationReason != null) {
427
+ var _field$astNode3;
428
+
429
+ context.reportError("Required input field ".concat(inputObj.name, ".").concat(field.name, " cannot be deprecated."), [getDeprecatedDirectiveNode(field.astNode), // istanbul ignore next (TODO need to write coverage tests)
430
+ (_field$astNode3 = field.astNode) === null || _field$astNode3 === void 0 ? void 0 : _field$astNode3.type]);
431
+ }
412
432
  }
413
433
  }
414
434
 
@@ -469,12 +489,17 @@ function getAllNodes(object) {
469
489
  }
470
490
 
471
491
  function getAllSubNodes(object, getter) {
472
- // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
473
- return flatMap(getAllNodes(object), function (item) {
492
+ var subNodes = [];
493
+
494
+ for (var _i32 = 0, _getAllNodes2 = getAllNodes(object); _i32 < _getAllNodes2.length; _i32++) {
474
495
  var _getter;
475
496
 
476
- return (_getter = getter(item)) !== null && _getter !== void 0 ? _getter : [];
477
- });
497
+ var node = _getAllNodes2[_i32];
498
+ // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
499
+ subNodes = subNodes.concat((_getter = getter(node)) !== null && _getter !== void 0 ? _getter : []);
500
+ }
501
+
502
+ return subNodes;
478
503
  }
479
504
 
480
505
  function getAllImplementsInterfaceNodes(type, iface) {
@@ -492,3 +517,12 @@ function getUnionMemberTypeNodes(union, typeName) {
492
517
  return typeNode.name.value === typeName;
493
518
  });
494
519
  }
520
+
521
+ function getDeprecatedDirectiveNode(definitionNode) {
522
+ var _definitionNode$direc;
523
+
524
+ // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203')
525
+ return definitionNode === null || definitionNode === void 0 ? void 0 : (_definitionNode$direc = definitionNode.directives) === null || _definitionNode$direc === void 0 ? void 0 : _definitionNode$direc.find(function (node) {
526
+ return node.name.value === GraphQLDeprecatedDirective.name;
527
+ });
528
+ }
@@ -6,19 +6,19 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.visitWithTypeInfo = visitWithTypeInfo;
7
7
  exports.TypeInfo = void 0;
8
8
 
9
- var _find = _interopRequireDefault(require("../polyfills/find"));
9
+ var _find = _interopRequireDefault(require("../polyfills/find.js"));
10
10
 
11
- var _kinds = require("../language/kinds");
11
+ var _kinds = require("../language/kinds.js");
12
12
 
13
- var _visitor = require("../language/visitor");
13
+ var _ast = require("../language/ast.js");
14
14
 
15
- var _ast = require("../language/ast");
15
+ var _visitor = require("../language/visitor.js");
16
16
 
17
- var _definition = require("../type/definition");
17
+ var _definition = require("../type/definition.js");
18
18
 
19
- var _introspection = require("../type/introspection");
19
+ var _introspection = require("../type/introspection.js");
20
20
 
21
- var _typeFromAST = require("./typeFromAST");
21
+ var _typeFromAST = require("./typeFromAST.js");
22
22
 
23
23
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
24