graphql 16.13.2 → 16.14.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 (371) hide show
  1. package/error/GraphQLError.d.ts +151 -15
  2. package/error/GraphQLError.js +143 -12
  3. package/error/GraphQLError.mjs +143 -12
  4. package/error/index.d.ts +6 -0
  5. package/error/index.mjs +6 -0
  6. package/error/locatedError.d.ts +20 -0
  7. package/error/locatedError.js +21 -0
  8. package/error/locatedError.mjs +20 -0
  9. package/error/syntaxError.d.ts +15 -0
  10. package/error/syntaxError.js +16 -0
  11. package/error/syntaxError.mjs +15 -0
  12. package/execution/collectFields.js +6 -0
  13. package/execution/collectFields.mjs +6 -0
  14. package/execution/execute.d.ts +211 -12
  15. package/execution/execute.js +214 -23
  16. package/execution/execute.mjs +213 -23
  17. package/execution/index.d.ts +6 -0
  18. package/execution/index.mjs +6 -0
  19. package/execution/mapAsyncIterator.d.ts +2 -0
  20. package/execution/mapAsyncIterator.js +2 -0
  21. package/execution/mapAsyncIterator.mjs +2 -0
  22. package/execution/subscribe.d.ts +195 -5
  23. package/execution/subscribe.js +154 -11
  24. package/execution/subscribe.mjs +153 -11
  25. package/execution/values.d.ts +167 -10
  26. package/execution/values.js +149 -5
  27. package/execution/values.mjs +148 -5
  28. package/graphql.d.ts +163 -41
  29. package/graphql.js +126 -4
  30. package/graphql.mjs +131 -41
  31. package/index.d.ts +12 -17
  32. package/index.mjs +13 -19
  33. package/jsutils/Maybe.d.ts +5 -1
  34. package/jsutils/ObjMap.d.ts +4 -0
  35. package/jsutils/Path.d.ts +30 -0
  36. package/jsutils/Path.js +29 -0
  37. package/jsutils/Path.mjs +29 -0
  38. package/jsutils/PromiseOrValue.d.ts +1 -0
  39. package/jsutils/devAssert.d.ts +1 -0
  40. package/jsutils/devAssert.js +1 -0
  41. package/jsutils/devAssert.mjs +1 -0
  42. package/jsutils/didYouMean.d.ts +4 -1
  43. package/jsutils/didYouMean.js +4 -1
  44. package/jsutils/didYouMean.mjs +4 -1
  45. package/jsutils/groupBy.d.ts +2 -0
  46. package/jsutils/groupBy.js +2 -0
  47. package/jsutils/groupBy.mjs +2 -0
  48. package/jsutils/identityFunc.d.ts +2 -0
  49. package/jsutils/identityFunc.js +2 -0
  50. package/jsutils/identityFunc.mjs +2 -0
  51. package/jsutils/inspect.d.ts +2 -0
  52. package/jsutils/inspect.js +2 -0
  53. package/jsutils/inspect.mjs +2 -0
  54. package/jsutils/instanceOf.d.ts +2 -0
  55. package/jsutils/instanceOf.js +2 -0
  56. package/jsutils/instanceOf.mjs +2 -0
  57. package/jsutils/invariant.d.ts +1 -0
  58. package/jsutils/invariant.js +1 -0
  59. package/jsutils/invariant.mjs +1 -0
  60. package/jsutils/isAsyncIterable.d.ts +2 -0
  61. package/jsutils/isAsyncIterable.js +2 -0
  62. package/jsutils/isAsyncIterable.mjs +2 -0
  63. package/jsutils/isIterableObject.d.ts +6 -5
  64. package/jsutils/isIterableObject.js +6 -5
  65. package/jsutils/isIterableObject.mjs +6 -5
  66. package/jsutils/isObjectLike.d.ts +2 -0
  67. package/jsutils/isObjectLike.js +2 -0
  68. package/jsutils/isObjectLike.mjs +2 -0
  69. package/jsutils/isPromise.d.ts +2 -0
  70. package/jsutils/isPromise.js +2 -0
  71. package/jsutils/isPromise.mjs +2 -0
  72. package/jsutils/keyMap.d.ts +7 -14
  73. package/jsutils/keyMap.js +7 -14
  74. package/jsutils/keyMap.mjs +7 -14
  75. package/jsutils/keyValMap.d.ts +9 -6
  76. package/jsutils/keyValMap.js +9 -6
  77. package/jsutils/keyValMap.mjs +9 -6
  78. package/jsutils/mapValue.d.ts +2 -0
  79. package/jsutils/mapValue.js +2 -0
  80. package/jsutils/mapValue.mjs +2 -0
  81. package/jsutils/memoize3.d.ts +2 -0
  82. package/jsutils/memoize3.js +2 -0
  83. package/jsutils/memoize3.mjs +2 -0
  84. package/jsutils/naturalCompare.d.ts +2 -0
  85. package/jsutils/naturalCompare.js +2 -0
  86. package/jsutils/naturalCompare.mjs +2 -0
  87. package/jsutils/printPathArray.d.ts +2 -0
  88. package/jsutils/printPathArray.js +2 -0
  89. package/jsutils/printPathArray.mjs +2 -0
  90. package/jsutils/promiseForObject.d.ts +2 -0
  91. package/jsutils/promiseForObject.js +2 -0
  92. package/jsutils/promiseForObject.mjs +2 -0
  93. package/jsutils/promiseReduce.d.ts +2 -0
  94. package/jsutils/promiseReduce.js +2 -0
  95. package/jsutils/promiseReduce.mjs +2 -0
  96. package/jsutils/suggestionList.d.ts +2 -0
  97. package/jsutils/suggestionList.js +4 -0
  98. package/jsutils/suggestionList.mjs +4 -0
  99. package/jsutils/toError.d.ts +2 -0
  100. package/jsutils/toError.js +2 -0
  101. package/jsutils/toError.mjs +2 -0
  102. package/jsutils/toObjMap.d.ts +1 -0
  103. package/jsutils/toObjMap.js +1 -0
  104. package/jsutils/toObjMap.mjs +1 -0
  105. package/language/ast.d.ts +422 -55
  106. package/language/ast.js +103 -39
  107. package/language/ast.mjs +103 -39
  108. package/language/blockString.d.ts +1 -3
  109. package/language/blockString.js +1 -3
  110. package/language/blockString.mjs +1 -3
  111. package/language/directiveLocation.d.ts +29 -8
  112. package/language/directiveLocation.js +10 -6
  113. package/language/directiveLocation.mjs +10 -6
  114. package/language/index.d.ts +7 -0
  115. package/language/index.mjs +6 -0
  116. package/language/kinds.d.ts +58 -18
  117. package/language/kinds.js +10 -6
  118. package/language/kinds.mjs +10 -6
  119. package/language/lexer.d.ts +47 -14
  120. package/language/lexer.js +71 -13
  121. package/language/lexer.mjs +70 -13
  122. package/language/location.d.ts +16 -3
  123. package/language/location.js +14 -3
  124. package/language/location.mjs +14 -3
  125. package/language/parser.d.ts +248 -11
  126. package/language/parser.js +257 -0
  127. package/language/parser.mjs +257 -3
  128. package/language/predicates.d.ts +169 -0
  129. package/language/predicates.js +173 -1
  130. package/language/predicates.mjs +185 -1
  131. package/language/printLocation.d.ts +28 -0
  132. package/language/printLocation.js +29 -0
  133. package/language/printLocation.mjs +28 -0
  134. package/language/printString.d.ts +2 -0
  135. package/language/printString.js +5 -1
  136. package/language/printString.mjs +5 -1
  137. package/language/printer.d.ts +12 -0
  138. package/language/printer.js +32 -1
  139. package/language/printer.mjs +31 -1
  140. package/language/schemaCoordinateLexer.d.ts +8 -6
  141. package/language/schemaCoordinateLexer.js +10 -6
  142. package/language/schemaCoordinateLexer.mjs +10 -6
  143. package/language/source.d.ts +28 -0
  144. package/language/source.js +32 -0
  145. package/language/source.mjs +31 -0
  146. package/language/tokenKind.d.ts +30 -3
  147. package/language/tokenKind.js +8 -3
  148. package/language/tokenKind.mjs +8 -3
  149. package/language/visitor.d.ts +200 -72
  150. package/language/visitor.js +122 -50
  151. package/language/visitor.mjs +122 -54
  152. package/package.json +1 -1
  153. package/subscription/index.d.ts +9 -3
  154. package/subscription/index.mjs +9 -3
  155. package/type/assertName.d.ts +18 -1
  156. package/type/assertName.js +19 -1
  157. package/type/assertName.mjs +18 -1
  158. package/type/definition.d.ts +2540 -79
  159. package/type/definition.js +2214 -61
  160. package/type/definition.mjs +2241 -60
  161. package/type/directives.d.ts +202 -19
  162. package/type/directives.js +206 -20
  163. package/type/directives.mjs +206 -20
  164. package/type/index.d.ts +6 -0
  165. package/type/index.mjs +6 -0
  166. package/type/introspection.d.ts +36 -0
  167. package/type/introspection.js +57 -1
  168. package/type/introspection.mjs +65 -1
  169. package/type/scalars.d.ts +29 -2
  170. package/type/scalars.js +37 -2
  171. package/type/scalars.mjs +36 -2
  172. package/type/schema.d.ts +490 -28
  173. package/type/schema.js +484 -26
  174. package/type/schema.mjs +484 -26
  175. package/type/validate.d.ts +31 -0
  176. package/type/validate.js +32 -0
  177. package/type/validate.mjs +31 -0
  178. package/utilities/TypeInfo.d.ts +441 -1
  179. package/utilities/TypeInfo.js +444 -1
  180. package/utilities/TypeInfo.mjs +443 -1
  181. package/utilities/assertValidName.d.ts +27 -2
  182. package/utilities/assertValidName.js +28 -2
  183. package/utilities/assertValidName.mjs +27 -2
  184. package/utilities/astFromValue.d.ts +33 -3
  185. package/utilities/astFromValue.js +36 -3
  186. package/utilities/astFromValue.mjs +35 -3
  187. package/utilities/buildASTSchema.d.ts +65 -6
  188. package/utilities/buildASTSchema.js +69 -6
  189. package/utilities/buildASTSchema.mjs +69 -6
  190. package/utilities/buildClientSchema.d.ts +15 -0
  191. package/utilities/buildClientSchema.js +17 -0
  192. package/utilities/buildClientSchema.mjs +16 -0
  193. package/utilities/coerceInputValue.d.ts +46 -0
  194. package/utilities/coerceInputValue.js +47 -0
  195. package/utilities/coerceInputValue.mjs +46 -0
  196. package/utilities/concatAST.d.ts +12 -0
  197. package/utilities/concatAST.js +13 -0
  198. package/utilities/concatAST.mjs +12 -0
  199. package/utilities/extendSchema.d.ts +56 -3
  200. package/utilities/extendSchema.js +121 -6
  201. package/utilities/extendSchema.mjs +120 -6
  202. package/utilities/findBreakingChanges.d.ts +95 -0
  203. package/utilities/findBreakingChanges.js +68 -0
  204. package/utilities/findBreakingChanges.mjs +70 -0
  205. package/utilities/getIntrospectionQuery.d.ts +148 -0
  206. package/utilities/getIntrospectionQuery.js +72 -38
  207. package/utilities/getIntrospectionQuery.mjs +72 -38
  208. package/utilities/getOperationAST.d.ts +15 -0
  209. package/utilities/getOperationAST.js +16 -0
  210. package/utilities/getOperationAST.mjs +15 -0
  211. package/utilities/getOperationRootType.d.ts +18 -1
  212. package/utilities/getOperationRootType.js +19 -1
  213. package/utilities/getOperationRootType.mjs +18 -1
  214. package/utilities/index.d.ts +7 -0
  215. package/utilities/index.mjs +7 -0
  216. package/utilities/introspectionFromSchema.d.ts +54 -0
  217. package/utilities/introspectionFromSchema.js +56 -0
  218. package/utilities/introspectionFromSchema.mjs +55 -0
  219. package/utilities/lexicographicSortSchema.d.ts +35 -0
  220. package/utilities/lexicographicSortSchema.js +36 -0
  221. package/utilities/lexicographicSortSchema.mjs +35 -0
  222. package/utilities/printSchema.d.ts +63 -0
  223. package/utilities/printSchema.js +67 -0
  224. package/utilities/printSchema.mjs +68 -0
  225. package/utilities/resolveSchemaCoordinate.d.ts +62 -0
  226. package/utilities/resolveSchemaCoordinate.js +64 -0
  227. package/utilities/resolveSchemaCoordinate.mjs +63 -0
  228. package/utilities/separateOperations.d.ts +30 -0
  229. package/utilities/separateOperations.js +31 -0
  230. package/utilities/separateOperations.mjs +30 -0
  231. package/utilities/stripIgnoredCharacters.d.ts +13 -6
  232. package/utilities/stripIgnoredCharacters.js +16 -6
  233. package/utilities/stripIgnoredCharacters.mjs +15 -6
  234. package/utilities/typeComparators.d.ts +84 -0
  235. package/utilities/typeComparators.js +85 -0
  236. package/utilities/typeComparators.mjs +84 -0
  237. package/utilities/typeFromAST.d.ts +86 -0
  238. package/utilities/typeFromAST.js +3 -0
  239. package/utilities/typeFromAST.mjs +3 -0
  240. package/utilities/typedQueryDocumentNode.d.ts +4 -0
  241. package/utilities/valueFromAST.d.ts +38 -0
  242. package/utilities/valueFromAST.js +51 -2
  243. package/utilities/valueFromAST.mjs +50 -2
  244. package/utilities/valueFromASTUntyped.d.ts +15 -2
  245. package/utilities/valueFromASTUntyped.js +16 -2
  246. package/utilities/valueFromASTUntyped.mjs +15 -2
  247. package/validation/ValidationContext.d.ts +399 -0
  248. package/validation/ValidationContext.js +400 -0
  249. package/validation/ValidationContext.mjs +401 -0
  250. package/validation/index.d.ts +6 -0
  251. package/validation/index.mjs +6 -0
  252. package/validation/rules/ExecutableDefinitionsRule.d.ts +28 -0
  253. package/validation/rules/ExecutableDefinitionsRule.js +29 -0
  254. package/validation/rules/ExecutableDefinitionsRule.mjs +28 -0
  255. package/validation/rules/FieldsOnCorrectTypeRule.d.ts +28 -0
  256. package/validation/rules/FieldsOnCorrectTypeRule.js +33 -0
  257. package/validation/rules/FieldsOnCorrectTypeRule.mjs +32 -0
  258. package/validation/rules/FragmentsOnCompositeTypesRule.d.ts +28 -0
  259. package/validation/rules/FragmentsOnCompositeTypesRule.js +29 -0
  260. package/validation/rules/FragmentsOnCompositeTypesRule.mjs +28 -0
  261. package/validation/rules/KnownArgumentNamesRule.d.ts +29 -3
  262. package/validation/rules/KnownArgumentNamesRule.js +30 -3
  263. package/validation/rules/KnownArgumentNamesRule.mjs +29 -3
  264. package/validation/rules/KnownDirectivesRule.d.ts +28 -0
  265. package/validation/rules/KnownDirectivesRule.js +33 -0
  266. package/validation/rules/KnownDirectivesRule.mjs +32 -0
  267. package/validation/rules/KnownFragmentNamesRule.d.ts +28 -0
  268. package/validation/rules/KnownFragmentNamesRule.js +29 -0
  269. package/validation/rules/KnownFragmentNamesRule.mjs +28 -0
  270. package/validation/rules/KnownTypeNamesRule.d.ts +28 -0
  271. package/validation/rules/KnownTypeNamesRule.js +29 -0
  272. package/validation/rules/KnownTypeNamesRule.mjs +28 -0
  273. package/validation/rules/LoneAnonymousOperationRule.d.ts +28 -0
  274. package/validation/rules/LoneAnonymousOperationRule.js +29 -0
  275. package/validation/rules/LoneAnonymousOperationRule.mjs +28 -0
  276. package/validation/rules/LoneSchemaDefinitionRule.d.ts +21 -0
  277. package/validation/rules/LoneSchemaDefinitionRule.js +22 -0
  278. package/validation/rules/LoneSchemaDefinitionRule.mjs +21 -0
  279. package/validation/rules/MaxIntrospectionDepthRule.d.ts +31 -0
  280. package/validation/rules/MaxIntrospectionDepthRule.js +33 -0
  281. package/validation/rules/MaxIntrospectionDepthRule.mjs +34 -0
  282. package/validation/rules/NoFragmentCyclesRule.d.ts +28 -0
  283. package/validation/rules/NoFragmentCyclesRule.js +29 -0
  284. package/validation/rules/NoFragmentCyclesRule.mjs +28 -0
  285. package/validation/rules/NoUndefinedVariablesRule.d.ts +28 -0
  286. package/validation/rules/NoUndefinedVariablesRule.js +29 -0
  287. package/validation/rules/NoUndefinedVariablesRule.mjs +28 -0
  288. package/validation/rules/NoUnusedFragmentsRule.d.ts +28 -0
  289. package/validation/rules/NoUnusedFragmentsRule.js +29 -0
  290. package/validation/rules/NoUnusedFragmentsRule.mjs +28 -0
  291. package/validation/rules/NoUnusedVariablesRule.d.ts +29 -0
  292. package/validation/rules/NoUnusedVariablesRule.js +30 -0
  293. package/validation/rules/NoUnusedVariablesRule.mjs +29 -0
  294. package/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +33 -0
  295. package/validation/rules/OverlappingFieldsCanBeMergedRule.js +45 -6
  296. package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +45 -6
  297. package/validation/rules/PossibleFragmentSpreadsRule.d.ts +36 -0
  298. package/validation/rules/PossibleFragmentSpreadsRule.js +37 -0
  299. package/validation/rules/PossibleFragmentSpreadsRule.mjs +36 -0
  300. package/validation/rules/PossibleTypeExtensionsRule.d.ts +21 -0
  301. package/validation/rules/PossibleTypeExtensionsRule.js +22 -0
  302. package/validation/rules/PossibleTypeExtensionsRule.mjs +21 -0
  303. package/validation/rules/ProvidedRequiredArgumentsRule.d.ts +29 -3
  304. package/validation/rules/ProvidedRequiredArgumentsRule.js +30 -3
  305. package/validation/rules/ProvidedRequiredArgumentsRule.mjs +29 -3
  306. package/validation/rules/ScalarLeafsRule.d.ts +28 -0
  307. package/validation/rules/ScalarLeafsRule.js +29 -0
  308. package/validation/rules/ScalarLeafsRule.mjs +28 -0
  309. package/validation/rules/SingleFieldSubscriptionsRule.d.ts +33 -0
  310. package/validation/rules/SingleFieldSubscriptionsRule.js +34 -0
  311. package/validation/rules/SingleFieldSubscriptionsRule.mjs +33 -0
  312. package/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts +21 -0
  313. package/validation/rules/UniqueArgumentDefinitionNamesRule.js +22 -0
  314. package/validation/rules/UniqueArgumentDefinitionNamesRule.mjs +21 -0
  315. package/validation/rules/UniqueArgumentNamesRule.d.ts +28 -0
  316. package/validation/rules/UniqueArgumentNamesRule.js +29 -0
  317. package/validation/rules/UniqueArgumentNamesRule.mjs +28 -0
  318. package/validation/rules/UniqueDirectiveNamesRule.d.ts +21 -0
  319. package/validation/rules/UniqueDirectiveNamesRule.js +22 -0
  320. package/validation/rules/UniqueDirectiveNamesRule.mjs +21 -0
  321. package/validation/rules/UniqueDirectivesPerLocationRule.d.ts +28 -0
  322. package/validation/rules/UniqueDirectivesPerLocationRule.js +41 -0
  323. package/validation/rules/UniqueDirectivesPerLocationRule.mjs +40 -0
  324. package/validation/rules/UniqueEnumValueNamesRule.d.ts +21 -0
  325. package/validation/rules/UniqueEnumValueNamesRule.js +22 -0
  326. package/validation/rules/UniqueEnumValueNamesRule.mjs +21 -0
  327. package/validation/rules/UniqueFieldDefinitionNamesRule.d.ts +21 -0
  328. package/validation/rules/UniqueFieldDefinitionNamesRule.js +22 -0
  329. package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +21 -0
  330. package/validation/rules/UniqueFragmentNamesRule.d.ts +28 -0
  331. package/validation/rules/UniqueFragmentNamesRule.js +29 -0
  332. package/validation/rules/UniqueFragmentNamesRule.mjs +28 -0
  333. package/validation/rules/UniqueInputFieldNamesRule.d.ts +32 -0
  334. package/validation/rules/UniqueInputFieldNamesRule.js +33 -0
  335. package/validation/rules/UniqueInputFieldNamesRule.mjs +32 -0
  336. package/validation/rules/UniqueOperationNamesRule.d.ts +28 -0
  337. package/validation/rules/UniqueOperationNamesRule.js +29 -0
  338. package/validation/rules/UniqueOperationNamesRule.mjs +28 -0
  339. package/validation/rules/UniqueOperationTypesRule.d.ts +21 -0
  340. package/validation/rules/UniqueOperationTypesRule.js +22 -0
  341. package/validation/rules/UniqueOperationTypesRule.mjs +21 -0
  342. package/validation/rules/UniqueTypeNamesRule.d.ts +21 -0
  343. package/validation/rules/UniqueTypeNamesRule.js +22 -0
  344. package/validation/rules/UniqueTypeNamesRule.mjs +21 -0
  345. package/validation/rules/UniqueVariableNamesRule.d.ts +28 -0
  346. package/validation/rules/UniqueVariableNamesRule.js +29 -0
  347. package/validation/rules/UniqueVariableNamesRule.mjs +28 -0
  348. package/validation/rules/ValuesOfCorrectTypeRule.d.ts +28 -0
  349. package/validation/rules/ValuesOfCorrectTypeRule.js +31 -0
  350. package/validation/rules/ValuesOfCorrectTypeRule.mjs +30 -0
  351. package/validation/rules/VariablesAreInputTypesRule.d.ts +32 -0
  352. package/validation/rules/VariablesAreInputTypesRule.js +33 -0
  353. package/validation/rules/VariablesAreInputTypesRule.mjs +32 -0
  354. package/validation/rules/VariablesInAllowedPositionRule.d.ts +28 -0
  355. package/validation/rules/VariablesInAllowedPositionRule.js +35 -1
  356. package/validation/rules/VariablesInAllowedPositionRule.mjs +34 -1
  357. package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +41 -0
  358. package/validation/rules/custom/NoDeprecatedCustomRule.js +42 -0
  359. package/validation/rules/custom/NoDeprecatedCustomRule.mjs +41 -0
  360. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +28 -0
  361. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +29 -0
  362. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs +28 -0
  363. package/validation/specifiedRules.d.ts +2 -3
  364. package/validation/specifiedRules.js +2 -3
  365. package/validation/specifiedRules.mjs +2 -3
  366. package/validation/validate.d.ts +70 -9
  367. package/validation/validate.js +63 -7
  368. package/validation/validate.mjs +63 -7
  369. package/version.d.ts +3 -6
  370. package/version.js +7 -9
  371. package/version.mjs +6 -9
@@ -1,3 +1,4 @@
1
+ /** @category Directives */
1
2
  import { devAssert } from '../jsutils/devAssert.mjs';
2
3
  import { inspect } from '../jsutils/inspect.mjs';
3
4
  import { instanceOf } from '../jsutils/instanceOf.mjs';
@@ -13,11 +14,45 @@ import {
13
14
  import { GraphQLBoolean, GraphQLString } from './scalars.mjs';
14
15
  /**
15
16
  * Test if the given value is a GraphQL directive.
17
+ * @param directive - Value to inspect.
18
+ * @returns True when the value is a GraphQLDirective.
19
+ * @example
20
+ * ```ts
21
+ * import { DirectiveLocation } from 'graphql/language';
22
+ * import { GraphQLDirective, GraphQLString, isDirective } from 'graphql/type';
23
+ *
24
+ * const upper = new GraphQLDirective({
25
+ * name: 'upper',
26
+ * locations: [DirectiveLocation.FIELD_DEFINITION],
27
+ * });
28
+ *
29
+ * isDirective(upper); // => true
30
+ * isDirective(GraphQLString); // => false
31
+ * ```
16
32
  */
17
33
 
18
34
  export function isDirective(directive) {
19
35
  return instanceOf(directive, GraphQLDirective);
20
36
  }
37
+ /**
38
+ * Returns the value as a GraphQLDirective, or throws if it is not a directive.
39
+ * @param directive - Value to inspect.
40
+ * @returns The value typed as a GraphQLDirective.
41
+ * @example
42
+ * ```ts
43
+ * import { DirectiveLocation } from 'graphql/language';
44
+ * import { assertDirective, GraphQLDirective, GraphQLString } from 'graphql/type';
45
+ *
46
+ * const upper = new GraphQLDirective({
47
+ * name: 'upper',
48
+ * locations: [DirectiveLocation.FIELD_DEFINITION],
49
+ * });
50
+ *
51
+ * assertDirective(upper); // => upper
52
+ * assertDirective(GraphQLString); // throws an error
53
+ * ```
54
+ */
55
+
21
56
  export function assertDirective(directive) {
22
57
  if (!isDirective(directive)) {
23
58
  throw new Error(
@@ -29,7 +64,6 @@ export function assertDirective(directive) {
29
64
  }
30
65
  /**
31
66
  * Custom extensions
32
- *
33
67
  * @remarks
34
68
  * Use a unique identifier name for your extension, for example the name of
35
69
  * your library or project. Do not use a shortened identifier as this increases
@@ -42,8 +76,77 @@ export function assertDirective(directive) {
42
76
  * behavior. Type system creators will usually not create these directly.
43
77
  */
44
78
  export class GraphQLDirective {
79
+ /** The GraphQL name for this schema element. */
80
+
81
+ /** Human-readable description for this schema element, if provided. */
82
+
83
+ /** Locations where this directive may be applied. */
84
+
85
+ /** Arguments accepted by this field or directive. */
86
+
87
+ /** Whether this directive may appear more than once at the same location. */
88
+
89
+ /** Reason this element is deprecated, if one was provided. */
90
+
91
+ /** Extension fields to include in the formatted result. */
92
+
93
+ /** AST node from which this schema element was built, if available. */
94
+
95
+ /** AST extension nodes applied to this schema element. */
96
+
97
+ /**
98
+ * Creates a GraphQLDirective instance.
99
+ * @param config - Configuration describing this object.
100
+ * @example
101
+ * ```ts
102
+ * import { DirectiveLocation, parse } from 'graphql/language';
103
+ * import {
104
+ * GraphQLBoolean,
105
+ * GraphQLDirective,
106
+ * GraphQLInt,
107
+ * GraphQLNonNull,
108
+ * } from 'graphql/type';
109
+ *
110
+ * const document = parse(`
111
+ * directive @cacheControl(maxAge: Int) repeatable on FIELD_DEFINITION
112
+ * extend directive @cacheControl(maxAge: Int) on FIELD_DEFINITION
113
+ * `);
114
+ * const definition = document.definitions[0];
115
+ *
116
+ * const cacheControl = new GraphQLDirective({
117
+ * name: 'cacheControl',
118
+ * description: 'Controls HTTP cache hints for a field.',
119
+ * locations: [DirectiveLocation.FIELD_DEFINITION],
120
+ * args: {
121
+ * inheritMaxAge: {
122
+ * description: 'Inherit the parent cache hint.',
123
+ * type: new GraphQLNonNull(GraphQLBoolean),
124
+ * defaultValue: false,
125
+ * deprecationReason: 'Use maxAge instead.',
126
+ * extensions: { scope: 'cache' },
127
+ * },
128
+ * maxAge: {
129
+ * type: GraphQLInt,
130
+ * astNode: definition.arguments[0],
131
+ * },
132
+ * },
133
+ * isRepeatable: true,
134
+ * deprecationReason: 'Use @cache instead.',
135
+ * extensions: { scope: 'cache' },
136
+ * astNode: definition,
137
+ * extensionASTNodes: [ document.definitions[1] ],
138
+ * });
139
+ *
140
+ * cacheControl.name; // => 'cacheControl'
141
+ * cacheControl.description; // => 'Controls HTTP cache hints for a field.'
142
+ * cacheControl.args[0].name; // => 'inheritMaxAge'
143
+ * cacheControl.args[0].defaultValue; // => false
144
+ * cacheControl.isRepeatable; // => true
145
+ * cacheControl.extensions; // => { scope: 'cache' }
146
+ * ```
147
+ */
45
148
  constructor(config) {
46
- var _config$isRepeatable, _config$args;
149
+ var _config$isRepeatable, _config$extensionASTN, _config$args;
47
150
 
48
151
  this.name = assertName(config.name);
49
152
  this.description = config.description;
@@ -53,8 +156,14 @@ export class GraphQLDirective {
53
156
  _config$isRepeatable !== void 0
54
157
  ? _config$isRepeatable
55
158
  : false;
159
+ this.deprecationReason = config.deprecationReason;
56
160
  this.extensions = toObjMap(config.extensions);
57
161
  this.astNode = config.astNode;
162
+ this.extensionASTNodes =
163
+ (_config$extensionASTN = config.extensionASTNodes) !== null &&
164
+ _config$extensionASTN !== void 0
165
+ ? _config$extensionASTN
166
+ : [];
58
167
  Array.isArray(config.locations) ||
59
168
  devAssert(false, `@${config.name} locations must be an Array.`);
60
169
  const args =
@@ -68,10 +177,37 @@ export class GraphQLDirective {
68
177
  );
69
178
  this.args = defineArguments(args);
70
179
  }
180
+ /**
181
+ * Returns the value used by `Object.prototype.toString`.
182
+ * @returns The built-in string tag for this object.
183
+ */
71
184
 
72
185
  get [Symbol.toStringTag]() {
73
186
  return 'GraphQLDirective';
74
187
  }
188
+ /**
189
+ * Returns a normalized configuration object for this object.
190
+ * @returns A configuration object that can be used to recreate this object.
191
+ * @example
192
+ * ```ts
193
+ * import { DirectiveLocation } from 'graphql/language';
194
+ * import { GraphQLDirective, GraphQLString } from 'graphql/type';
195
+ *
196
+ * const tag = new GraphQLDirective({
197
+ * name: 'tag',
198
+ * locations: [DirectiveLocation.FIELD_DEFINITION],
199
+ * args: {
200
+ * name: { type: GraphQLString },
201
+ * },
202
+ * });
203
+ *
204
+ * const config = tag.toConfig();
205
+ * const tagCopy = new GraphQLDirective(config);
206
+ *
207
+ * config.args.name.type; // => GraphQLString
208
+ * tagCopy.args[0].name; // => 'name'
209
+ * ```
210
+ */
75
211
 
76
212
  toConfig() {
77
213
  return {
@@ -80,23 +216,57 @@ export class GraphQLDirective {
80
216
  locations: this.locations,
81
217
  args: argsToArgsConfig(this.args),
82
218
  isRepeatable: this.isRepeatable,
219
+ deprecationReason: this.deprecationReason,
83
220
  extensions: this.extensions,
84
221
  astNode: this.astNode,
222
+ extensionASTNodes: this.extensionASTNodes,
85
223
  };
86
224
  }
225
+ /**
226
+ * Returns the schema coordinate identifying this directive.
227
+ * @returns The directive schema coordinate.
228
+ * @example
229
+ * ```ts
230
+ * import { DirectiveLocation } from 'graphql/language';
231
+ * import { GraphQLDirective } from 'graphql/type';
232
+ *
233
+ * const tag = new GraphQLDirective({
234
+ * name: 'tag',
235
+ * locations: [DirectiveLocation.FIELD_DEFINITION],
236
+ * });
237
+ *
238
+ * tag.toString(); // => '@tag'
239
+ * ```
240
+ */
87
241
 
88
242
  toString() {
89
243
  return '@' + this.name;
90
244
  }
245
+ /**
246
+ * Returns the JSON representation used when this object is serialized.
247
+ * @returns The JSON-serializable representation.
248
+ * @example
249
+ * ```ts
250
+ * import { DirectiveLocation } from 'graphql/language';
251
+ * import { GraphQLDirective } from 'graphql/type';
252
+ *
253
+ * const tag = new GraphQLDirective({
254
+ * name: 'tag',
255
+ * locations: [DirectiveLocation.FIELD_DEFINITION],
256
+ * });
257
+ *
258
+ * tag.toJSON(); // => '@tag'
259
+ * JSON.stringify({ directive: tag }); // => '{"directive":"@tag"}'
260
+ * ```
261
+ */
91
262
 
92
263
  toJSON() {
93
264
  return this.toString();
94
265
  }
95
266
  }
267
+ /** Configuration used to construct a GraphQLDirective. */
96
268
 
97
- /**
98
- * Used to conditionally include fields or fragments.
99
- */
269
+ /** Used to conditionally include fields or fragments. */
100
270
  export const GraphQLIncludeDirective = new GraphQLDirective({
101
271
  name: 'include',
102
272
  description:
@@ -113,9 +283,7 @@ export const GraphQLIncludeDirective = new GraphQLDirective({
113
283
  },
114
284
  },
115
285
  });
116
- /**
117
- * Used to conditionally skip (exclude) fields or fragments.
118
- */
286
+ /** Used to conditionally skip (exclude) fields or fragments. */
119
287
 
120
288
  export const GraphQLSkipDirective = new GraphQLDirective({
121
289
  name: 'skip',
@@ -133,13 +301,13 @@ export const GraphQLSkipDirective = new GraphQLDirective({
133
301
  },
134
302
  },
135
303
  });
136
- /**
137
- * Constant string used for default reason for a deprecation.
138
- */
304
+ /** Constant string used for default reason for a deprecation. */
139
305
 
140
306
  export const DEFAULT_DEPRECATION_REASON = 'No longer supported';
141
307
  /**
142
308
  * Used to declare element of a GraphQL schema as deprecated.
309
+ *
310
+ * The optional `reason` argument defaults to `DEFAULT_DEPRECATION_REASON`.
143
311
  */
144
312
 
145
313
  export const GraphQLDeprecatedDirective = new GraphQLDirective({
@@ -150,6 +318,7 @@ export const GraphQLDeprecatedDirective = new GraphQLDirective({
150
318
  DirectiveLocation.ARGUMENT_DEFINITION,
151
319
  DirectiveLocation.INPUT_FIELD_DEFINITION,
152
320
  DirectiveLocation.ENUM_VALUE,
321
+ DirectiveLocation.DIRECTIVE_DEFINITION,
153
322
  ],
154
323
  args: {
155
324
  reason: {
@@ -160,9 +329,7 @@ export const GraphQLDeprecatedDirective = new GraphQLDirective({
160
329
  },
161
330
  },
162
331
  });
163
- /**
164
- * Used to provide a URL for specifying the behavior of custom scalar definitions.
165
- */
332
+ /** Used to provide a URL for specifying the behavior of custom scalar definitions. */
166
333
 
167
334
  export const GraphQLSpecifiedByDirective = new GraphQLDirective({
168
335
  name: 'specifiedBy',
@@ -175,9 +342,7 @@ export const GraphQLSpecifiedByDirective = new GraphQLDirective({
175
342
  },
176
343
  },
177
344
  });
178
- /**
179
- * Used to indicate an Input Object is a OneOf Input Object.
180
- */
345
+ /** Used to indicate an Input Object is a OneOf Input Object. */
181
346
 
182
347
  export const GraphQLOneOfDirective = new GraphQLDirective({
183
348
  name: 'oneOf',
@@ -186,9 +351,7 @@ export const GraphQLOneOfDirective = new GraphQLDirective({
186
351
  locations: [DirectiveLocation.INPUT_OBJECT],
187
352
  args: {},
188
353
  });
189
- /**
190
- * The full list of specified directives.
191
- */
354
+ /** Full list of stable directives specified by GraphQL.js. */
192
355
 
193
356
  export const specifiedDirectives = Object.freeze([
194
357
  GraphQLIncludeDirective,
@@ -197,6 +360,29 @@ export const specifiedDirectives = Object.freeze([
197
360
  GraphQLSpecifiedByDirective,
198
361
  GraphQLOneOfDirective,
199
362
  ]);
363
+ /**
364
+ * Returns true when the directive is one of the directives specified by GraphQL.
365
+ * @param directive - Directive to inspect.
366
+ * @returns True when the directive is specified by GraphQL.
367
+ * @example
368
+ * ```ts
369
+ * import {
370
+ * GraphQLDirective,
371
+ * GraphQLIncludeDirective,
372
+ * isSpecifiedDirective,
373
+ * } from 'graphql/type';
374
+ * import { DirectiveLocation } from 'graphql/language';
375
+ *
376
+ * const customDirective = new GraphQLDirective({
377
+ * name: 'auth',
378
+ * locations: [DirectiveLocation.FIELD_DEFINITION],
379
+ * });
380
+ *
381
+ * isSpecifiedDirective(GraphQLIncludeDirective); // => true
382
+ * isSpecifiedDirective(customDirective); // => false
383
+ * ```
384
+ */
385
+
200
386
  export function isSpecifiedDirective(directive) {
201
387
  return specifiedDirectives.some(({ name }) => name === directive.name);
202
388
  }
package/type/index.d.ts CHANGED
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Create and inspect GraphQL type definitions and schemas.
3
+ *
4
+ * These exports are also available from the root `graphql` package.
5
+ * @packageDocumentation
6
+ */
1
7
  export type { Path as ResponsePath } from '../jsutils/Path';
2
8
  export { isSchema, assertSchema, GraphQLSchema } from './schema';
3
9
  export type { GraphQLSchemaConfig, GraphQLSchemaExtensions } from './schema';
package/type/index.mjs CHANGED
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Create and inspect GraphQL type definitions and schemas.
3
+ *
4
+ * These exports are also available from the root `graphql` package.
5
+ * @packageDocumentation
6
+ */
1
7
  export {
2
8
  // Predicate
3
9
  isSchema, // Assertion
@@ -1,30 +1,66 @@
1
+ /** @category Introspection */
1
2
  import type { GraphQLField, GraphQLNamedType } from './definition';
2
3
  import { GraphQLEnumType, GraphQLObjectType } from './definition';
4
+ /** The introspection type describing a GraphQL schema. */
3
5
  export declare const __Schema: GraphQLObjectType;
6
+ /** The introspection type describing a GraphQL directive. */
4
7
  export declare const __Directive: GraphQLObjectType;
8
+ /** The introspection enum describing directive locations. */
5
9
  export declare const __DirectiveLocation: GraphQLEnumType;
10
+ /** The introspection type describing GraphQL types. */
6
11
  export declare const __Type: GraphQLObjectType;
12
+ /** The introspection type describing object and interface fields. */
7
13
  export declare const __Field: GraphQLObjectType;
14
+ /** The introspection type describing arguments and input fields. */
8
15
  export declare const __InputValue: GraphQLObjectType;
16
+ /** The introspection type describing enum values. */
9
17
  export declare const __EnumValue: GraphQLObjectType;
18
+ /**
19
+ * The introspection enum describing the different kinds of GraphQL types.
20
+ * @category Introspection
21
+ */
10
22
  declare enum TypeKind {
23
+ /** A scalar type. */
11
24
  SCALAR = 'SCALAR',
25
+ /** An object type. */
12
26
  OBJECT = 'OBJECT',
27
+ /** An interface type. */
13
28
  INTERFACE = 'INTERFACE',
29
+ /** A union type. */
14
30
  UNION = 'UNION',
31
+ /** An enum type. */
15
32
  ENUM = 'ENUM',
33
+ /** An input object type. */
16
34
  INPUT_OBJECT = 'INPUT_OBJECT',
35
+ /** A list wrapper type. */
17
36
  LIST = 'LIST',
37
+ /** A non-null wrapper type. */
18
38
  NON_NULL = 'NON_NULL',
19
39
  }
20
40
  export { TypeKind };
41
+ /** The introspection enum describing GraphQL type kinds. */
21
42
  export declare const __TypeKind: GraphQLEnumType;
22
43
  /**
23
44
  * Note that these are GraphQLField and not GraphQLFieldConfig,
24
45
  * so the format for args is different.
25
46
  */
26
47
  export declare const SchemaMetaFieldDef: GraphQLField<unknown, unknown>;
48
+ /** The `__type` meta field definition used by introspection. */
27
49
  export declare const TypeMetaFieldDef: GraphQLField<unknown, unknown>;
50
+ /** The `__typename` meta field definition used by execution and introspection. */
28
51
  export declare const TypeNameMetaFieldDef: GraphQLField<unknown, unknown>;
52
+ /** All introspection types defined by the GraphQL specification. */
29
53
  export declare const introspectionTypes: ReadonlyArray<GraphQLNamedType>;
54
+ /**
55
+ * Returns true when the type is one of the built-in introspection types.
56
+ * @param type - The GraphQL type to inspect.
57
+ * @returns True when the type is one of the built-in introspection types.
58
+ * @example
59
+ * ```ts
60
+ * import { GraphQLString, isIntrospectionType, __Type } from 'graphql/type';
61
+ *
62
+ * isIntrospectionType(__Type); // => true
63
+ * isIntrospectionType(GraphQLString); // => false
64
+ * ```
65
+ */
30
66
  export declare function isIntrospectionType(type: GraphQLNamedType): boolean;
@@ -33,6 +33,9 @@ var _definition = require('./definition.js');
33
33
 
34
34
  var _scalars = require('./scalars.js');
35
35
 
36
+ /** @category Introspection */
37
+
38
+ /** The introspection type describing a GraphQL schema. */
36
39
  const __Schema = new _definition.GraphQLObjectType({
37
40
  name: '__Schema',
38
41
  description:
@@ -76,10 +79,22 @@ const __Schema = new _definition.GraphQLObjectType({
76
79
  new _definition.GraphQLNonNull(__Directive),
77
80
  ),
78
81
  ),
79
- resolve: (schema) => schema.getDirectives(),
82
+ args: {
83
+ includeDeprecated: {
84
+ type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),
85
+ defaultValue: false,
86
+ },
87
+ },
88
+ resolve: (schema, { includeDeprecated }) =>
89
+ includeDeprecated
90
+ ? schema.getDirectives()
91
+ : schema
92
+ .getDirectives()
93
+ .filter((directive) => directive.deprecationReason == null),
80
94
  },
81
95
  }),
82
96
  });
97
+ /** The introspection type describing a GraphQL directive. */
83
98
 
84
99
  exports.__Schema = __Schema;
85
100
 
@@ -127,8 +142,17 @@ const __Directive = new _definition.GraphQLObjectType({
127
142
  : field.args.filter((arg) => arg.deprecationReason == null);
128
143
  },
129
144
  },
145
+ isDeprecated: {
146
+ type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),
147
+ resolve: (directive) => directive.deprecationReason != null,
148
+ },
149
+ deprecationReason: {
150
+ type: _scalars.GraphQLString,
151
+ resolve: (directive) => directive.deprecationReason,
152
+ },
130
153
  }),
131
154
  });
155
+ /** The introspection enum describing directive locations. */
132
156
 
133
157
  exports.__Directive = __Directive;
134
158
 
@@ -213,8 +237,13 @@ const __DirectiveLocation = new _definition.GraphQLEnumType({
213
237
  value: _directiveLocation.DirectiveLocation.INPUT_FIELD_DEFINITION,
214
238
  description: 'Location adjacent to an input object field definition.',
215
239
  },
240
+ DIRECTIVE_DEFINITION: {
241
+ value: _directiveLocation.DirectiveLocation.DIRECTIVE_DEFINITION,
242
+ description: 'Location adjacent to a directive definition.',
243
+ },
216
244
  },
217
245
  });
246
+ /** The introspection type describing GraphQL types. */
218
247
 
219
248
  exports.__DirectiveLocation = __DirectiveLocation;
220
249
 
@@ -383,6 +412,7 @@ const __Type = new _definition.GraphQLObjectType({
383
412
  },
384
413
  }),
385
414
  });
415
+ /** The introspection type describing object and interface fields. */
386
416
 
387
417
  exports.__Type = __Type;
388
418
 
@@ -432,6 +462,7 @@ const __Field = new _definition.GraphQLObjectType({
432
462
  },
433
463
  }),
434
464
  });
465
+ /** The introspection type describing arguments and input fields. */
435
466
 
436
467
  exports.__Field = __Field;
437
468
 
@@ -473,6 +504,7 @@ const __InputValue = new _definition.GraphQLObjectType({
473
504
  },
474
505
  }),
475
506
  });
507
+ /** The introspection type describing enum values. */
476
508
 
477
509
  exports.__InputValue = __InputValue;
478
510
 
@@ -499,6 +531,10 @@ const __EnumValue = new _definition.GraphQLObjectType({
499
531
  },
500
532
  }),
501
533
  });
534
+ /**
535
+ * The introspection enum describing the different kinds of GraphQL types.
536
+ * @category Introspection
537
+ */
502
538
 
503
539
  exports.__EnumValue = __EnumValue;
504
540
  var TypeKind;
@@ -515,6 +551,7 @@ exports.TypeKind = TypeKind;
515
551
  TypeKind['NON_NULL'] = 'NON_NULL';
516
552
  })(TypeKind || (exports.TypeKind = TypeKind = {}));
517
553
 
554
+ /** The introspection enum describing GraphQL type kinds. */
518
555
  const __TypeKind = new _definition.GraphQLEnumType({
519
556
  name: '__TypeKind',
520
557
  description: 'An enum describing what kind of type a given `__Type` is.',
@@ -575,6 +612,8 @@ const SchemaMetaFieldDef = {
575
612
  extensions: Object.create(null),
576
613
  astNode: undefined,
577
614
  };
615
+ /** The `__type` meta field definition used by introspection. */
616
+
578
617
  exports.SchemaMetaFieldDef = SchemaMetaFieldDef;
579
618
  const TypeMetaFieldDef = {
580
619
  name: '__type',
@@ -596,6 +635,8 @@ const TypeMetaFieldDef = {
596
635
  extensions: Object.create(null),
597
636
  astNode: undefined,
598
637
  };
638
+ /** The `__typename` meta field definition used by execution and introspection. */
639
+
599
640
  exports.TypeMetaFieldDef = TypeMetaFieldDef;
600
641
  const TypeNameMetaFieldDef = {
601
642
  name: '__typename',
@@ -607,6 +648,8 @@ const TypeNameMetaFieldDef = {
607
648
  extensions: Object.create(null),
608
649
  astNode: undefined,
609
650
  };
651
+ /** All introspection types defined by the GraphQL specification. */
652
+
610
653
  exports.TypeNameMetaFieldDef = TypeNameMetaFieldDef;
611
654
  const introspectionTypes = Object.freeze([
612
655
  __Schema,
@@ -618,6 +661,19 @@ const introspectionTypes = Object.freeze([
618
661
  __EnumValue,
619
662
  __TypeKind,
620
663
  ]);
664
+ /**
665
+ * Returns true when the type is one of the built-in introspection types.
666
+ * @param type - The GraphQL type to inspect.
667
+ * @returns True when the type is one of the built-in introspection types.
668
+ * @example
669
+ * ```ts
670
+ * import { GraphQLString, isIntrospectionType, __Type } from 'graphql/type';
671
+ *
672
+ * isIntrospectionType(__Type); // => true
673
+ * isIntrospectionType(GraphQLString); // => false
674
+ * ```
675
+ */
676
+
621
677
  exports.introspectionTypes = introspectionTypes;
622
678
 
623
679
  function isIntrospectionType(type) {