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,58 +1,29 @@
1
1
  // @flow strict
2
+ import type { GraphQLError } from '../error/GraphQLError';
2
3
 
3
- import { GraphQLError } from '../error/GraphQLError';
4
+ import type { DocumentNode } from '../language/ast';
4
5
 
5
- import { visit } from '../language/visitor';
6
- import { type DocumentNode } from '../language/ast';
6
+ import type { GraphQLSchema } from '../type/schema';
7
7
 
8
- import { getNamedType } from '../type/definition';
9
- import { type GraphQLSchema } from '../type/schema';
10
-
11
- import { TypeInfo, visitWithTypeInfo } from './TypeInfo';
8
+ import { validate } from '../validation/validate';
9
+ import { NoDeprecatedCustomRule } from '../validation/rules/custom/NoDeprecatedCustomRule';
12
10
 
13
11
  /**
14
12
  * A validation rule which reports deprecated usages.
15
13
  *
16
14
  * Returns a list of GraphQLError instances describing each deprecated use.
15
+ *
16
+ * @deprecated Please use `validate` with `NoDeprecatedCustomRule` instead:
17
+ *
18
+ * ```
19
+ * import { validate, NoDeprecatedCustomRule } from 'graphql'
20
+ *
21
+ * const errors = validate(schema, document, [NoDeprecatedCustomRule])
22
+ * ```
17
23
  */
18
24
  export function findDeprecatedUsages(
19
25
  schema: GraphQLSchema,
20
26
  ast: DocumentNode,
21
- ): Array<GraphQLError> {
22
- const errors = [];
23
- const typeInfo = new TypeInfo(schema);
24
-
25
- visit(
26
- ast,
27
- visitWithTypeInfo(typeInfo, {
28
- Field(node) {
29
- const parentType = typeInfo.getParentType();
30
- const fieldDef = typeInfo.getFieldDef();
31
- if (parentType && fieldDef?.deprecationReason != null) {
32
- errors.push(
33
- new GraphQLError(
34
- `The field "${parentType.name}.${fieldDef.name}" is deprecated. ` +
35
- fieldDef.deprecationReason,
36
- node,
37
- ),
38
- );
39
- }
40
- },
41
- EnumValue(node) {
42
- const type = getNamedType(typeInfo.getInputType());
43
- const enumVal = typeInfo.getEnumValue();
44
- if (type && enumVal?.deprecationReason != null) {
45
- errors.push(
46
- new GraphQLError(
47
- `The enum value "${type.name}.${enumVal.name}" is deprecated. ` +
48
- enumVal.deprecationReason,
49
- node,
50
- ),
51
- );
52
- }
53
- },
54
- }),
55
- );
56
-
57
- return errors;
27
+ ): $ReadOnlyArray<GraphQLError> {
28
+ return validate(schema, ast, [NoDeprecatedCustomRule]);
58
29
  }
@@ -1,33 +1,19 @@
1
- import { GraphQLError } from "../error/GraphQLError.mjs";
2
- import { visit } from "../language/visitor.mjs";
3
- import { getNamedType } from "../type/definition.mjs";
4
- import { TypeInfo, visitWithTypeInfo } from "./TypeInfo.mjs";
1
+ import { validate } from "../validation/validate.mjs";
2
+ import { NoDeprecatedCustomRule } from "../validation/rules/custom/NoDeprecatedCustomRule.mjs";
5
3
  /**
6
4
  * A validation rule which reports deprecated usages.
7
5
  *
8
6
  * Returns a list of GraphQLError instances describing each deprecated use.
7
+ *
8
+ * @deprecated Please use `validate` with `NoDeprecatedCustomRule` instead:
9
+ *
10
+ * ```
11
+ * import { validate, NoDeprecatedCustomRule } from 'graphql'
12
+ *
13
+ * const errors = validate(schema, document, [NoDeprecatedCustomRule])
14
+ * ```
9
15
  */
10
16
 
11
17
  export function findDeprecatedUsages(schema, ast) {
12
- var errors = [];
13
- var typeInfo = new TypeInfo(schema);
14
- visit(ast, visitWithTypeInfo(typeInfo, {
15
- Field: function Field(node) {
16
- var parentType = typeInfo.getParentType();
17
- var fieldDef = typeInfo.getFieldDef();
18
-
19
- if (parentType && (fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.deprecationReason) != null) {
20
- errors.push(new GraphQLError("The field \"".concat(parentType.name, ".").concat(fieldDef.name, "\" is deprecated. ") + fieldDef.deprecationReason, node));
21
- }
22
- },
23
- EnumValue: function EnumValue(node) {
24
- var type = getNamedType(typeInfo.getInputType());
25
- var enumVal = typeInfo.getEnumValue();
26
-
27
- if (type && (enumVal === null || enumVal === void 0 ? void 0 : enumVal.deprecationReason) != null) {
28
- errors.push(new GraphQLError("The enum value \"".concat(type.name, ".").concat(enumVal.name, "\" is deprecated. ") + enumVal.deprecationReason, node));
29
- }
30
- }
31
- }));
32
- return errors;
18
+ return validate(schema, ast, [NoDeprecatedCustomRule]);
33
19
  }
@@ -1,6 +1,5 @@
1
1
  // @flow strict
2
-
3
- import { type DirectiveLocationEnum } from '../language/directiveLocation';
2
+ import type { DirectiveLocationEnum } from '../language/directiveLocation';
4
3
 
5
4
  export type IntrospectionOptions = {|
6
5
  // Whether to include descriptions in the introspection result.
@@ -175,7 +174,7 @@ export type IntrospectionScalarType = {|
175
174
  +kind: 'SCALAR',
176
175
  +name: string,
177
176
  +description?: ?string,
178
- +specifiedByUrl: ?string,
177
+ +specifiedByUrl?: ?string,
179
178
  |};
180
179
 
181
180
  export type IntrospectionObjectType = {|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getOperationAST = getOperationAST;
7
7
 
8
- var _kinds = require("../language/kinds");
8
+ var _kinds = require("../language/kinds.js");
9
9
 
10
10
  /**
11
11
  * Returns an operation AST given a document AST and optionally an operation
@@ -1,10 +1,6 @@
1
1
  // @flow strict
2
-
2
+ import type { DocumentNode, OperationDefinitionNode } from '../language/ast';
3
3
  import { Kind } from '../language/kinds';
4
- import {
5
- type DocumentNode,
6
- type OperationDefinitionNode,
7
- } from '../language/ast';
8
4
 
9
5
  /**
10
6
  * Returns an operation AST given a document AST and optionally an operation
@@ -1,10 +1,10 @@
1
1
  import { Kind } from "../language/kinds.mjs";
2
-
3
2
  /**
4
3
  * Returns an operation AST given a document AST and optionally an operation
5
4
  * name. If a name is not provided, an operation is only returned if only one is
6
5
  * provided in the document.
7
6
  */
7
+
8
8
  export function getOperationAST(documentAST, operationName) {
9
9
  var operation = null;
10
10
 
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getOperationRootType = getOperationRootType;
7
7
 
8
- var _GraphQLError = require("../error/GraphQLError");
8
+ var _GraphQLError = require("../error/GraphQLError.js");
9
9
 
10
10
  /**
11
11
  * Extracts the root type of the operation from the schema.
@@ -1,14 +1,13 @@
1
1
  // @flow strict
2
-
3
2
  import { GraphQLError } from '../error/GraphQLError';
4
3
 
5
- import {
6
- type OperationDefinitionNode,
7
- type OperationTypeDefinitionNode,
4
+ import type {
5
+ OperationDefinitionNode,
6
+ OperationTypeDefinitionNode,
8
7
  } from '../language/ast';
9
8
 
10
- import { type GraphQLSchema } from '../type/schema';
11
- import { type GraphQLObjectType } from '../type/definition';
9
+ import type { GraphQLSchema } from '../type/schema';
10
+ import type { GraphQLObjectType } from '../type/definition';
12
11
 
13
12
  /**
14
13
  * Extracts the root type of the operation from the schema.
@@ -112,5 +112,8 @@ export {
112
112
  DangerousChange,
113
113
  } from './findBreakingChanges';
114
114
 
115
- // Report all deprecated usage within a GraphQL document.
115
+ // Wrapper type that contains DocumentNode and types that can be deduced from it.
116
+ export { TypedQueryDocumentNode } from './typedQueryDocumentNode';
117
+
118
+ // @deprecated: Report all deprecated usage within a GraphQL document.
116
119
  export { findDeprecatedUsages } from './findDeprecatedUsages';
@@ -202,46 +202,46 @@ Object.defineProperty(exports, "findDeprecatedUsages", {
202
202
  }
203
203
  });
204
204
 
205
- var _getIntrospectionQuery = require("./getIntrospectionQuery");
205
+ var _getIntrospectionQuery = require("./getIntrospectionQuery.js");
206
206
 
207
- var _getOperationAST = require("./getOperationAST");
207
+ var _getOperationAST = require("./getOperationAST.js");
208
208
 
209
- var _getOperationRootType = require("./getOperationRootType");
209
+ var _getOperationRootType = require("./getOperationRootType.js");
210
210
 
211
- var _introspectionFromSchema = require("./introspectionFromSchema");
211
+ var _introspectionFromSchema = require("./introspectionFromSchema.js");
212
212
 
213
- var _buildClientSchema = require("./buildClientSchema");
213
+ var _buildClientSchema = require("./buildClientSchema.js");
214
214
 
215
- var _buildASTSchema = require("./buildASTSchema");
215
+ var _buildASTSchema = require("./buildASTSchema.js");
216
216
 
217
- var _extendSchema = require("./extendSchema");
217
+ var _extendSchema = require("./extendSchema.js");
218
218
 
219
- var _lexicographicSortSchema = require("./lexicographicSortSchema");
219
+ var _lexicographicSortSchema = require("./lexicographicSortSchema.js");
220
220
 
221
- var _printSchema = require("./printSchema");
221
+ var _printSchema = require("./printSchema.js");
222
222
 
223
- var _typeFromAST = require("./typeFromAST");
223
+ var _typeFromAST = require("./typeFromAST.js");
224
224
 
225
- var _valueFromAST = require("./valueFromAST");
225
+ var _valueFromAST = require("./valueFromAST.js");
226
226
 
227
- var _valueFromASTUntyped = require("./valueFromASTUntyped");
227
+ var _valueFromASTUntyped = require("./valueFromASTUntyped.js");
228
228
 
229
- var _astFromValue = require("./astFromValue");
229
+ var _astFromValue = require("./astFromValue.js");
230
230
 
231
- var _TypeInfo = require("./TypeInfo");
231
+ var _TypeInfo = require("./TypeInfo.js");
232
232
 
233
- var _coerceInputValue = require("./coerceInputValue");
233
+ var _coerceInputValue = require("./coerceInputValue.js");
234
234
 
235
- var _concatAST = require("./concatAST");
235
+ var _concatAST = require("./concatAST.js");
236
236
 
237
- var _separateOperations = require("./separateOperations");
237
+ var _separateOperations = require("./separateOperations.js");
238
238
 
239
- var _stripIgnoredCharacters = require("./stripIgnoredCharacters");
239
+ var _stripIgnoredCharacters = require("./stripIgnoredCharacters.js");
240
240
 
241
- var _typeComparators = require("./typeComparators");
241
+ var _typeComparators = require("./typeComparators.js");
242
242
 
243
- var _assertValidName = require("./assertValidName");
243
+ var _assertValidName = require("./assertValidName.js");
244
244
 
245
- var _findBreakingChanges = require("./findBreakingChanges");
245
+ var _findBreakingChanges = require("./findBreakingChanges.js");
246
246
 
247
- var _findDeprecatedUsages = require("./findDeprecatedUsages");
247
+ var _findDeprecatedUsages = require("./findDeprecatedUsages.js");
@@ -1,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  // Produce the GraphQL query recommended for a full schema introspection.
4
3
  // Accepts optional IntrospectionOptions.
5
4
  export { getIntrospectionQuery } from './getIntrospectionQuery';
@@ -111,5 +110,5 @@ export {
111
110
  } from './findBreakingChanges';
112
111
  export type { BreakingChange, DangerousChange } from './findBreakingChanges';
113
112
 
114
- // Report all deprecated usage within a GraphQL document.
113
+ // @deprecated: Report all deprecated usage within a GraphQL document.
115
114
  export { findDeprecatedUsages } from './findDeprecatedUsages';
@@ -45,5 +45,5 @@ export { isEqualType, isTypeSubTypeOf, doTypesOverlap } from "./typeComparators.
45
45
  export { assertValidName, isValidNameError } from "./assertValidName.mjs"; // Compares two GraphQLSchemas and detects breaking changes.
46
46
 
47
47
  export { BreakingChangeType, DangerousChangeType, findBreakingChanges, findDangerousChanges } from "./findBreakingChanges.mjs";
48
- // Report all deprecated usage within a GraphQL document.
48
+ // @deprecated: Report all deprecated usage within a GraphQL document.
49
49
  export { findDeprecatedUsages } from "./findDeprecatedUsages.mjs";
@@ -5,15 +5,13 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.introspectionFromSchema = introspectionFromSchema;
7
7
 
8
- var _invariant = _interopRequireDefault(require("../jsutils/invariant"));
8
+ var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
9
9
 
10
- var _isPromise = _interopRequireDefault(require("../jsutils/isPromise"));
10
+ var _parser = require("../language/parser.js");
11
11
 
12
- var _parser = require("../language/parser");
12
+ var _execute = require("../execution/execute.js");
13
13
 
14
- var _execute = require("../execution/execute");
15
-
16
- var _getIntrospectionQuery = require("./getIntrospectionQuery");
14
+ var _getIntrospectionQuery = require("./getIntrospectionQuery.js");
17
15
 
18
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
17
 
@@ -39,10 +37,10 @@ function introspectionFromSchema(schema, options) {
39
37
  }, options);
40
38
 
41
39
  var document = (0, _parser.parse)((0, _getIntrospectionQuery.getIntrospectionQuery)(optionsWithDefaults));
42
- var result = (0, _execute.execute)({
40
+ var result = (0, _execute.executeSync)({
43
41
  schema: schema,
44
42
  document: document
45
43
  });
46
- !(0, _isPromise.default)(result) && !result.errors && result.data || (0, _invariant.default)(0);
44
+ !result.errors && result.data || (0, _invariant.default)(0);
47
45
  return result.data;
48
46
  }
@@ -1,17 +1,17 @@
1
1
  // @flow strict
2
-
3
2
  import invariant from '../jsutils/invariant';
4
- import isPromise from '../jsutils/isPromise';
5
3
 
6
4
  import { parse } from '../language/parser';
7
- import { execute } from '../execution/execute';
8
- import { type GraphQLSchema } from '../type/schema';
9
5
 
10
- import {
11
- type IntrospectionQuery,
12
- type IntrospectionOptions,
13
- getIntrospectionQuery,
6
+ import type { GraphQLSchema } from '../type/schema';
7
+
8
+ import { executeSync } from '../execution/execute';
9
+
10
+ import type {
11
+ IntrospectionQuery,
12
+ IntrospectionOptions,
14
13
  } from './getIntrospectionQuery';
14
+ import { getIntrospectionQuery } from './getIntrospectionQuery';
15
15
 
16
16
  /**
17
17
  * Build an IntrospectionQuery from a GraphQLSchema
@@ -33,7 +33,7 @@ export function introspectionFromSchema(
33
33
  };
34
34
 
35
35
  const document = parse(getIntrospectionQuery(optionsWithDefaults));
36
- const result = execute({ schema, document });
37
- invariant(!isPromise(result) && !result.errors && result.data);
36
+ const result = executeSync({ schema, document });
37
+ invariant(!result.errors && result.data);
38
38
  return (result.data: any);
39
39
  }
@@ -5,9 +5,8 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
5
5
  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; }
6
6
 
7
7
  import invariant from "../jsutils/invariant.mjs";
8
- import isPromise from "../jsutils/isPromise.mjs";
9
8
  import { parse } from "../language/parser.mjs";
10
- import { execute } from "../execution/execute.mjs";
9
+ import { executeSync } from "../execution/execute.mjs";
11
10
  import { getIntrospectionQuery } from "./getIntrospectionQuery.mjs";
12
11
  /**
13
12
  * Build an IntrospectionQuery from a GraphQLSchema
@@ -26,10 +25,10 @@ export function introspectionFromSchema(schema, options) {
26
25
  }, options);
27
26
 
28
27
  var document = parse(getIntrospectionQuery(optionsWithDefaults));
29
- var result = execute({
28
+ var result = executeSync({
30
29
  schema: schema,
31
30
  document: document
32
31
  });
33
- !isPromise(result) && !result.errors && result.data || invariant(0);
32
+ !result.errors && result.data || invariant(0);
34
33
  return result.data;
35
34
  }
@@ -5,21 +5,21 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.lexicographicSortSchema = lexicographicSortSchema;
7
7
 
8
- var _objectValues = _interopRequireDefault(require("../polyfills/objectValues"));
8
+ var _objectValues = _interopRequireDefault(require("../polyfills/objectValues.js"));
9
9
 
10
- var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
10
+ var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
11
11
 
12
- var _invariant = _interopRequireDefault(require("../jsutils/invariant"));
12
+ var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
13
13
 
14
- var _keyValMap = _interopRequireDefault(require("../jsutils/keyValMap"));
14
+ var _keyValMap = _interopRequireDefault(require("../jsutils/keyValMap.js"));
15
15
 
16
- var _schema = require("../type/schema");
16
+ var _schema = require("../type/schema.js");
17
17
 
18
- var _directives = require("../type/directives");
18
+ var _directives = require("../type/directives.js");
19
19
 
20
- var _introspection = require("../type/introspection");
20
+ var _introspection = require("../type/introspection.js");
21
21
 
22
- var _definition = require("../type/definition");
22
+ var _definition = require("../type/definition.js");
23
23
 
24
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
25
 
@@ -49,8 +49,10 @@ function lexicographicSortSchema(schema) {
49
49
 
50
50
  function replaceType(type) {
51
51
  if ((0, _definition.isListType)(type)) {
52
+ // $FlowFixMe[incompatible-return]
52
53
  return new _definition.GraphQLList(replaceType(type.ofType));
53
54
  } else if ((0, _definition.isNonNullType)(type)) {
55
+ // $FlowFixMe[incompatible-return]
54
56
  return new _definition.GraphQLNonNull(replaceType(type.ofType));
55
57
  }
56
58
 
@@ -1,24 +1,29 @@
1
1
  // @flow strict
2
-
3
2
  import objectValues from '../polyfills/objectValues';
4
3
 
4
+ import type { ObjMap } from '../jsutils/ObjMap';
5
5
  import inspect from '../jsutils/inspect';
6
6
  import invariant from '../jsutils/invariant';
7
7
  import keyValMap from '../jsutils/keyValMap';
8
- import { type ObjMap } from '../jsutils/ObjMap';
9
8
 
9
+ import type {
10
+ GraphQLType,
11
+ GraphQLNamedType,
12
+ GraphQLFieldConfigMap,
13
+ GraphQLFieldConfigArgumentMap,
14
+ GraphQLInputFieldConfigMap,
15
+ } from '../type/definition';
10
16
  import { GraphQLSchema } from '../type/schema';
11
17
  import { GraphQLDirective } from '../type/directives';
12
18
  import { isIntrospectionType } from '../type/introspection';
13
19
  import {
14
- type GraphQLNamedType,
20
+ GraphQLList,
21
+ GraphQLNonNull,
15
22
  GraphQLObjectType,
16
23
  GraphQLInterfaceType,
17
24
  GraphQLUnionType,
18
25
  GraphQLEnumType,
19
26
  GraphQLInputObjectType,
20
- GraphQLList,
21
- GraphQLNonNull,
22
27
  isListType,
23
28
  isNonNullType,
24
29
  isScalarType,
@@ -51,10 +56,12 @@ export function lexicographicSortSchema(schema: GraphQLSchema): GraphQLSchema {
51
56
  subscription: replaceMaybeType(schemaConfig.subscription),
52
57
  });
53
58
 
54
- function replaceType(type) {
59
+ function replaceType<T: GraphQLType>(type: T): T {
55
60
  if (isListType(type)) {
61
+ // $FlowFixMe[incompatible-return]
56
62
  return new GraphQLList(replaceType(type.ofType));
57
63
  } else if (isNonNullType(type)) {
64
+ // $FlowFixMe[incompatible-return]
58
65
  return new GraphQLNonNull(replaceType(type.ofType));
59
66
  }
60
67
  return replaceNamedType(type);
@@ -64,11 +71,11 @@ export function lexicographicSortSchema(schema: GraphQLSchema): GraphQLSchema {
64
71
  return ((typeMap[type.name]: any): T);
65
72
  }
66
73
 
67
- function replaceMaybeType(maybeType) {
74
+ function replaceMaybeType<T: ?GraphQLNamedType>(maybeType: T): T {
68
75
  return maybeType && replaceNamedType(maybeType);
69
76
  }
70
77
 
71
- function sortDirective(directive) {
78
+ function sortDirective(directive: GraphQLDirective) {
72
79
  const config = directive.toConfig();
73
80
  return new GraphQLDirective({
74
81
  ...config,
@@ -77,14 +84,14 @@ export function lexicographicSortSchema(schema: GraphQLSchema): GraphQLSchema {
77
84
  });
78
85
  }
79
86
 
80
- function sortArgs(args) {
87
+ function sortArgs(args: GraphQLFieldConfigArgumentMap) {
81
88
  return sortObjMap(args, (arg) => ({
82
89
  ...arg,
83
90
  type: replaceType(arg.type),
84
91
  }));
85
92
  }
86
93
 
87
- function sortFields(fieldsMap) {
94
+ function sortFields(fieldsMap: GraphQLFieldConfigMap<mixed, mixed>) {
88
95
  return sortObjMap(fieldsMap, (field) => ({
89
96
  ...field,
90
97
  type: replaceType(field.type),
@@ -92,7 +99,7 @@ export function lexicographicSortSchema(schema: GraphQLSchema): GraphQLSchema {
92
99
  }));
93
100
  }
94
101
 
95
- function sortInputFields(fieldsMap) {
102
+ function sortInputFields(fieldsMap: GraphQLInputFieldConfigMap) {
96
103
  return sortObjMap(fieldsMap, (field) => ({
97
104
  ...field,
98
105
  type: replaceType(field.type),
@@ -103,7 +110,7 @@ export function lexicographicSortSchema(schema: GraphQLSchema): GraphQLSchema {
103
110
  return sortByName(arr).map(replaceNamedType);
104
111
  }
105
112
 
106
- function sortNamedType(type) {
113
+ function sortNamedType<T: GraphQLNamedType>(type: T) {
107
114
  if (isScalarType(type) || isIntrospectionType(type)) {
108
115
  return type;
109
116
  }
@@ -11,7 +11,7 @@ import keyValMap from "../jsutils/keyValMap.mjs";
11
11
  import { GraphQLSchema } from "../type/schema.mjs";
12
12
  import { GraphQLDirective } from "../type/directives.mjs";
13
13
  import { isIntrospectionType } from "../type/introspection.mjs";
14
- import { GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, GraphQLNonNull, isListType, isNonNullType, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType } from "../type/definition.mjs";
14
+ import { GraphQLList, GraphQLNonNull, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, isListType, isNonNullType, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType } from "../type/definition.mjs";
15
15
  /**
16
16
  * Sort GraphQLSchema.
17
17
  *
@@ -33,8 +33,10 @@ export function lexicographicSortSchema(schema) {
33
33
 
34
34
  function replaceType(type) {
35
35
  if (isListType(type)) {
36
+ // $FlowFixMe[incompatible-return]
36
37
  return new GraphQLList(replaceType(type.ofType));
37
38
  } else if (isNonNullType(type)) {
39
+ // $FlowFixMe[incompatible-return]
38
40
  return new GraphQLNonNull(replaceType(type.ofType));
39
41
  }
40
42
 
@@ -7,25 +7,25 @@ exports.printSchema = printSchema;
7
7
  exports.printIntrospectionSchema = printIntrospectionSchema;
8
8
  exports.printType = printType;
9
9
 
10
- var _objectValues = _interopRequireDefault(require("../polyfills/objectValues"));
10
+ var _objectValues = _interopRequireDefault(require("../polyfills/objectValues.js"));
11
11
 
12
- var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
12
+ var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
13
13
 
14
- var _invariant = _interopRequireDefault(require("../jsutils/invariant"));
14
+ var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
15
15
 
16
- var _printer = require("../language/printer");
16
+ var _printer = require("../language/printer.js");
17
17
 
18
- var _blockString = require("../language/blockString");
18
+ var _blockString = require("../language/blockString.js");
19
19
 
20
- var _introspection = require("../type/introspection");
20
+ var _introspection = require("../type/introspection.js");
21
21
 
22
- var _scalars = require("../type/scalars");
22
+ var _scalars = require("../type/scalars.js");
23
23
 
24
- var _directives = require("../type/directives");
24
+ var _directives = require("../type/directives.js");
25
25
 
26
- var _definition = require("../type/definition");
26
+ var _definition = require("../type/definition.js");
27
27
 
28
- var _astFromValue = require("./astFromValue");
28
+ var _astFromValue = require("./astFromValue.js");
29
29
 
30
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
31
 
@@ -179,7 +179,7 @@ function printUnion(type, options) {
179
179
 
180
180
  function printEnum(type, options) {
181
181
  var values = type.getValues().map(function (value, i) {
182
- return printDescription(options, value, ' ', !i) + ' ' + value.name + printDeprecated(value);
182
+ return printDescription(options, value, ' ', !i) + ' ' + value.name + printDeprecated(value.deprecationReason);
183
183
  });
184
184
  return printDescription(options, type) + "enum ".concat(type.name) + printBlock(values);
185
185
  }
@@ -193,7 +193,7 @@ function printInputObject(type, options) {
193
193
 
194
194
  function printFields(options, type) {
195
195
  var fields = (0, _objectValues.default)(type.getFields()).map(function (f, i) {
196
- return printDescription(options, f, ' ', !i) + ' ' + f.name + printArgs(options, f.args, ' ') + ': ' + String(f.type) + printDeprecated(f);
196
+ return printDescription(options, f, ' ', !i) + ' ' + f.name + printArgs(options, f.args, ' ') + ': ' + String(f.type) + printDeprecated(f.deprecationReason);
197
197
  });
198
198
  return printBlock(fields);
199
199
  }
@@ -229,19 +229,18 @@ function printInputValue(arg) {
229
229
  argDecl += " = ".concat((0, _printer.print)(defaultAST));
230
230
  }
231
231
 
232
- return argDecl;
232
+ return argDecl + printDeprecated(arg.deprecationReason);
233
233
  }
234
234
 
235
235
  function printDirective(directive, options) {
236
236
  return printDescription(options, directive) + 'directive @' + directive.name + printArgs(options, directive.args) + (directive.isRepeatable ? ' repeatable' : '') + ' on ' + directive.locations.join(' | ');
237
237
  }
238
238
 
239
- function printDeprecated(fieldOrEnumVal) {
240
- if (!fieldOrEnumVal.isDeprecated) {
239
+ function printDeprecated(reason) {
240
+ if (reason == null) {
241
241
  return '';
242
242
  }
243
243
 
244
- var reason = fieldOrEnumVal.deprecationReason;
245
244
  var reasonAST = (0, _astFromValue.astFromValue)(reason, _scalars.GraphQLString);
246
245
 
247
246
  if (reasonAST && reason !== _directives.DEFAULT_DEPRECATION_REASON) {