graphql 16.14.0 → 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 +11 -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 +412 -54
  106. package/language/ast.js +95 -38
  107. package/language/ast.mjs +95 -38
  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 +28 -8
  112. package/language/directiveLocation.js +9 -6
  113. package/language/directiveLocation.mjs +9 -6
  114. package/language/index.d.ts +6 -0
  115. package/language/index.mjs +6 -0
  116. package/language/kinds.d.ts +57 -18
  117. package/language/kinds.js +9 -6
  118. package/language/kinds.mjs +9 -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 +236 -13
  126. package/language/parser.js +224 -0
  127. package/language/parser.mjs +224 -3
  128. package/language/predicates.d.ts +169 -0
  129. package/language/predicates.js +170 -0
  130. package/language/predicates.mjs +180 -0
  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 +19 -0
  139. package/language/printer.mjs +18 -0
  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 +193 -18
  162. package/type/directives.js +196 -19
  163. package/type/directives.mjs +196 -19
  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 +33 -0
  168. package/type/introspection.mjs +41 -0
  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 +65 -6
  189. package/utilities/buildASTSchema.mjs +65 -6
  190. package/utilities/buildClientSchema.d.ts +15 -0
  191. package/utilities/buildClientSchema.js +16 -0
  192. package/utilities/buildClientSchema.mjs +15 -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 +63 -3
  201. package/utilities/extendSchema.mjs +62 -3
  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 +132 -0
  206. package/utilities/getIntrospectionQuery.js +41 -0
  207. package/utilities/getIntrospectionQuery.mjs +41 -0
  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 +55 -0
  218. package/utilities/introspectionFromSchema.mjs +54 -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 +66 -0
  224. package/utilities/printSchema.mjs +67 -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 +39 -0
  243. package/utilities/valueFromAST.mjs +38 -0
  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 +29 -0
  266. package/validation/rules/KnownDirectivesRule.mjs +28 -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 +29 -0
  323. package/validation/rules/UniqueDirectivesPerLocationRule.mjs +28 -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 +6 -8
  371. package/version.mjs +5 -8
@@ -1,9 +1,30 @@
1
+ /** @category Validation Rules */
1
2
  import type { ASTVisitor } from '../../language/visitor';
2
3
  import type { SDLValidationContext } from '../ValidationContext';
3
4
  /**
4
5
  * Unique directive names
5
6
  *
6
7
  * A GraphQL document is only valid if all defined directives have unique names.
8
+ * @param context - The validation context used while checking the document.
9
+ * @returns A visitor that reports validation errors for this rule.
10
+ * @example
11
+ * ```ts
12
+ * import { buildSchema } from 'graphql';
13
+ * import { UniqueDirectiveNamesRule } from 'graphql/validation';
14
+ *
15
+ * const invalidSDL = `
16
+ * directive @tag on FIELD directive @tag on QUERY type Query { name: String }
17
+ * `;
18
+ *
19
+ * UniqueDirectiveNamesRule.name; // => 'UniqueDirectiveNamesRule'
20
+ * buildSchema(invalidSDL); // throws an error
21
+ *
22
+ * const validSDL = `
23
+ * directive @tag on FIELD type Query { name: String }
24
+ * `;
25
+ *
26
+ * buildSchema(validSDL); // does not throw
27
+ * ```
7
28
  */
8
29
  export declare function UniqueDirectiveNamesRule(
9
30
  context: SDLValidationContext,
@@ -7,10 +7,32 @@ exports.UniqueDirectiveNamesRule = UniqueDirectiveNamesRule;
7
7
 
8
8
  var _GraphQLError = require('../../error/GraphQLError.js');
9
9
 
10
+ /** @category Validation Rules */
11
+
10
12
  /**
11
13
  * Unique directive names
12
14
  *
13
15
  * A GraphQL document is only valid if all defined directives have unique names.
16
+ * @param context - The validation context used while checking the document.
17
+ * @returns A visitor that reports validation errors for this rule.
18
+ * @example
19
+ * ```ts
20
+ * import { buildSchema } from 'graphql';
21
+ * import { UniqueDirectiveNamesRule } from 'graphql/validation';
22
+ *
23
+ * const invalidSDL = `
24
+ * directive @tag on FIELD directive @tag on QUERY type Query { name: String }
25
+ * `;
26
+ *
27
+ * UniqueDirectiveNamesRule.name; // => 'UniqueDirectiveNamesRule'
28
+ * buildSchema(invalidSDL); // throws an error
29
+ *
30
+ * const validSDL = `
31
+ * directive @tag on FIELD type Query { name: String }
32
+ * `;
33
+ *
34
+ * buildSchema(validSDL); // does not throw
35
+ * ```
14
36
  */
15
37
  function UniqueDirectiveNamesRule(context) {
16
38
  const knownDirectiveNames = Object.create(null);
@@ -1,9 +1,30 @@
1
+ /** @category Validation Rules */
1
2
  import { GraphQLError } from '../../error/GraphQLError.mjs';
2
3
 
3
4
  /**
4
5
  * Unique directive names
5
6
  *
6
7
  * A GraphQL document is only valid if all defined directives have unique names.
8
+ * @param context - The validation context used while checking the document.
9
+ * @returns A visitor that reports validation errors for this rule.
10
+ * @example
11
+ * ```ts
12
+ * import { buildSchema } from 'graphql';
13
+ * import { UniqueDirectiveNamesRule } from 'graphql/validation';
14
+ *
15
+ * const invalidSDL = `
16
+ * directive @tag on FIELD directive @tag on QUERY type Query { name: String }
17
+ * `;
18
+ *
19
+ * UniqueDirectiveNamesRule.name; // => 'UniqueDirectiveNamesRule'
20
+ * buildSchema(invalidSDL); // throws an error
21
+ *
22
+ * const validSDL = `
23
+ * directive @tag on FIELD type Query { name: String }
24
+ * `;
25
+ *
26
+ * buildSchema(validSDL); // does not throw
27
+ * ```
7
28
  */
8
29
  export function UniqueDirectiveNamesRule(context) {
9
30
  const knownDirectiveNames = Object.create(null);
@@ -1,3 +1,4 @@
1
+ /** @category Validation Rules */
1
2
  import type { ASTVisitor } from '../../language/visitor';
2
3
  import type {
3
4
  SDLValidationContext,
@@ -10,6 +11,33 @@ import type {
10
11
  * a given location are uniquely named.
11
12
  *
12
13
  * See https://spec.graphql.org/draft/#sec-Directives-Are-Unique-Per-Location
14
+ * @param context - The validation context used while checking the document.
15
+ * @returns A visitor that reports validation errors for this rule.
16
+ * @example
17
+ * ```ts
18
+ * import { buildSchema, parse, validate } from 'graphql';
19
+ * import { UniqueDirectivesPerLocationRule } from 'graphql/validation';
20
+ *
21
+ * const schema = buildSchema(`
22
+ * type Query {
23
+ * name: String
24
+ * }
25
+ * `);
26
+ *
27
+ * const invalidDocument = parse(`
28
+ * { name @include(if: true) @include(if: false) }
29
+ * `);
30
+ * const invalidErrors = validate(schema, invalidDocument, [UniqueDirectivesPerLocationRule]);
31
+ *
32
+ * invalidErrors.length; // => 1
33
+ *
34
+ * const validDocument = parse(`
35
+ * { name @include(if: true) }
36
+ * `);
37
+ * const validErrors = validate(schema, validDocument, [UniqueDirectivesPerLocationRule]);
38
+ *
39
+ * validErrors; // => []
40
+ * ```
13
41
  */
14
42
  export declare function UniqueDirectivesPerLocationRule(
15
43
  context: ValidationContext | SDLValidationContext,
@@ -13,6 +13,8 @@ var _predicates = require('../../language/predicates.js');
13
13
 
14
14
  var _directives = require('../../type/directives.js');
15
15
 
16
+ /** @category Validation Rules */
17
+
16
18
  /**
17
19
  * Unique directive names per location
18
20
  *
@@ -20,6 +22,33 @@ var _directives = require('../../type/directives.js');
20
22
  * a given location are uniquely named.
21
23
  *
22
24
  * See https://spec.graphql.org/draft/#sec-Directives-Are-Unique-Per-Location
25
+ * @param context - The validation context used while checking the document.
26
+ * @returns A visitor that reports validation errors for this rule.
27
+ * @example
28
+ * ```ts
29
+ * import { buildSchema, parse, validate } from 'graphql';
30
+ * import { UniqueDirectivesPerLocationRule } from 'graphql/validation';
31
+ *
32
+ * const schema = buildSchema(`
33
+ * type Query {
34
+ * name: String
35
+ * }
36
+ * `);
37
+ *
38
+ * const invalidDocument = parse(`
39
+ * { name @include(if: true) @include(if: false) }
40
+ * `);
41
+ * const invalidErrors = validate(schema, invalidDocument, [UniqueDirectivesPerLocationRule]);
42
+ *
43
+ * invalidErrors.length; // => 1
44
+ *
45
+ * const validDocument = parse(`
46
+ * { name @include(if: true) }
47
+ * `);
48
+ * const validErrors = validate(schema, validDocument, [UniqueDirectivesPerLocationRule]);
49
+ *
50
+ * validErrors; // => []
51
+ * ```
23
52
  */
24
53
  function UniqueDirectivesPerLocationRule(context) {
25
54
  const uniqueDirectiveMap = Object.create(null);
@@ -1,3 +1,4 @@
1
+ /** @category Validation Rules */
1
2
  import { GraphQLError } from '../../error/GraphQLError.mjs';
2
3
  import { Kind } from '../../language/kinds.mjs';
3
4
  import {
@@ -13,6 +14,33 @@ import { specifiedDirectives } from '../../type/directives.mjs';
13
14
  * a given location are uniquely named.
14
15
  *
15
16
  * See https://spec.graphql.org/draft/#sec-Directives-Are-Unique-Per-Location
17
+ * @param context - The validation context used while checking the document.
18
+ * @returns A visitor that reports validation errors for this rule.
19
+ * @example
20
+ * ```ts
21
+ * import { buildSchema, parse, validate } from 'graphql';
22
+ * import { UniqueDirectivesPerLocationRule } from 'graphql/validation';
23
+ *
24
+ * const schema = buildSchema(`
25
+ * type Query {
26
+ * name: String
27
+ * }
28
+ * `);
29
+ *
30
+ * const invalidDocument = parse(`
31
+ * { name @include(if: true) @include(if: false) }
32
+ * `);
33
+ * const invalidErrors = validate(schema, invalidDocument, [UniqueDirectivesPerLocationRule]);
34
+ *
35
+ * invalidErrors.length; // => 1
36
+ *
37
+ * const validDocument = parse(`
38
+ * { name @include(if: true) }
39
+ * `);
40
+ * const validErrors = validate(schema, validDocument, [UniqueDirectivesPerLocationRule]);
41
+ *
42
+ * validErrors; // => []
43
+ * ```
16
44
  */
17
45
  export function UniqueDirectivesPerLocationRule(context) {
18
46
  const uniqueDirectiveMap = Object.create(null);
@@ -1,9 +1,30 @@
1
+ /** @category Validation Rules */
1
2
  import type { ASTVisitor } from '../../language/visitor';
2
3
  import type { SDLValidationContext } from '../ValidationContext';
3
4
  /**
4
5
  * Unique enum value names
5
6
  *
6
7
  * A GraphQL enum type is only valid if all its values are uniquely named.
8
+ * @param context - The validation context used while checking the document.
9
+ * @returns A visitor that reports validation errors for this rule.
10
+ * @example
11
+ * ```ts
12
+ * import { buildSchema } from 'graphql';
13
+ * import { UniqueEnumValueNamesRule } from 'graphql/validation';
14
+ *
15
+ * const invalidSDL = `
16
+ * enum Status { ACTIVE ACTIVE } type Query { status: Status }
17
+ * `;
18
+ *
19
+ * UniqueEnumValueNamesRule.name; // => 'UniqueEnumValueNamesRule'
20
+ * buildSchema(invalidSDL); // throws an error
21
+ *
22
+ * const validSDL = `
23
+ * enum Status { ACTIVE INACTIVE } type Query { status: Status }
24
+ * `;
25
+ *
26
+ * buildSchema(validSDL); // does not throw
27
+ * ```
7
28
  */
8
29
  export declare function UniqueEnumValueNamesRule(
9
30
  context: SDLValidationContext,
@@ -9,10 +9,32 @@ var _GraphQLError = require('../../error/GraphQLError.js');
9
9
 
10
10
  var _definition = require('../../type/definition.js');
11
11
 
12
+ /** @category Validation Rules */
13
+
12
14
  /**
13
15
  * Unique enum value names
14
16
  *
15
17
  * A GraphQL enum type is only valid if all its values are uniquely named.
18
+ * @param context - The validation context used while checking the document.
19
+ * @returns A visitor that reports validation errors for this rule.
20
+ * @example
21
+ * ```ts
22
+ * import { buildSchema } from 'graphql';
23
+ * import { UniqueEnumValueNamesRule } from 'graphql/validation';
24
+ *
25
+ * const invalidSDL = `
26
+ * enum Status { ACTIVE ACTIVE } type Query { status: Status }
27
+ * `;
28
+ *
29
+ * UniqueEnumValueNamesRule.name; // => 'UniqueEnumValueNamesRule'
30
+ * buildSchema(invalidSDL); // throws an error
31
+ *
32
+ * const validSDL = `
33
+ * enum Status { ACTIVE INACTIVE } type Query { status: Status }
34
+ * `;
35
+ *
36
+ * buildSchema(validSDL); // does not throw
37
+ * ```
16
38
  */
17
39
  function UniqueEnumValueNamesRule(context) {
18
40
  const schema = context.getSchema();
@@ -1,3 +1,4 @@
1
+ /** @category Validation Rules */
1
2
  import { GraphQLError } from '../../error/GraphQLError.mjs';
2
3
  import { isEnumType } from '../../type/definition.mjs';
3
4
 
@@ -5,6 +6,26 @@ import { isEnumType } from '../../type/definition.mjs';
5
6
  * Unique enum value names
6
7
  *
7
8
  * A GraphQL enum type is only valid if all its values are uniquely named.
9
+ * @param context - The validation context used while checking the document.
10
+ * @returns A visitor that reports validation errors for this rule.
11
+ * @example
12
+ * ```ts
13
+ * import { buildSchema } from 'graphql';
14
+ * import { UniqueEnumValueNamesRule } from 'graphql/validation';
15
+ *
16
+ * const invalidSDL = `
17
+ * enum Status { ACTIVE ACTIVE } type Query { status: Status }
18
+ * `;
19
+ *
20
+ * UniqueEnumValueNamesRule.name; // => 'UniqueEnumValueNamesRule'
21
+ * buildSchema(invalidSDL); // throws an error
22
+ *
23
+ * const validSDL = `
24
+ * enum Status { ACTIVE INACTIVE } type Query { status: Status }
25
+ * `;
26
+ *
27
+ * buildSchema(validSDL); // does not throw
28
+ * ```
8
29
  */
9
30
  export function UniqueEnumValueNamesRule(context) {
10
31
  const schema = context.getSchema();
@@ -1,9 +1,30 @@
1
+ /** @category Validation Rules */
1
2
  import type { ASTVisitor } from '../../language/visitor';
2
3
  import type { SDLValidationContext } from '../ValidationContext';
3
4
  /**
4
5
  * Unique field definition names
5
6
  *
6
7
  * A GraphQL complex type is only valid if all its fields are uniquely named.
8
+ * @param context - The validation context used while checking the document.
9
+ * @returns A visitor that reports validation errors for this rule.
10
+ * @example
11
+ * ```ts
12
+ * import { buildSchema } from 'graphql';
13
+ * import { UniqueFieldDefinitionNamesRule } from 'graphql/validation';
14
+ *
15
+ * const invalidSDL = `
16
+ * type Query { name: String name: String }
17
+ * `;
18
+ *
19
+ * UniqueFieldDefinitionNamesRule.name; // => 'UniqueFieldDefinitionNamesRule'
20
+ * buildSchema(invalidSDL); // throws an error
21
+ *
22
+ * const validSDL = `
23
+ * type Query { name: String other: String }
24
+ * `;
25
+ *
26
+ * buildSchema(validSDL); // does not throw
27
+ * ```
7
28
  */
8
29
  export declare function UniqueFieldDefinitionNamesRule(
9
30
  context: SDLValidationContext,
@@ -9,10 +9,32 @@ var _GraphQLError = require('../../error/GraphQLError.js');
9
9
 
10
10
  var _definition = require('../../type/definition.js');
11
11
 
12
+ /** @category Validation Rules */
13
+
12
14
  /**
13
15
  * Unique field definition names
14
16
  *
15
17
  * A GraphQL complex type is only valid if all its fields are uniquely named.
18
+ * @param context - The validation context used while checking the document.
19
+ * @returns A visitor that reports validation errors for this rule.
20
+ * @example
21
+ * ```ts
22
+ * import { buildSchema } from 'graphql';
23
+ * import { UniqueFieldDefinitionNamesRule } from 'graphql/validation';
24
+ *
25
+ * const invalidSDL = `
26
+ * type Query { name: String name: String }
27
+ * `;
28
+ *
29
+ * UniqueFieldDefinitionNamesRule.name; // => 'UniqueFieldDefinitionNamesRule'
30
+ * buildSchema(invalidSDL); // throws an error
31
+ *
32
+ * const validSDL = `
33
+ * type Query { name: String other: String }
34
+ * `;
35
+ *
36
+ * buildSchema(validSDL); // does not throw
37
+ * ```
16
38
  */
17
39
  function UniqueFieldDefinitionNamesRule(context) {
18
40
  const schema = context.getSchema();
@@ -1,3 +1,4 @@
1
+ /** @category Validation Rules */
1
2
  import { GraphQLError } from '../../error/GraphQLError.mjs';
2
3
  import {
3
4
  isInputObjectType,
@@ -9,6 +10,26 @@ import {
9
10
  * Unique field definition names
10
11
  *
11
12
  * A GraphQL complex type is only valid if all its fields are uniquely named.
13
+ * @param context - The validation context used while checking the document.
14
+ * @returns A visitor that reports validation errors for this rule.
15
+ * @example
16
+ * ```ts
17
+ * import { buildSchema } from 'graphql';
18
+ * import { UniqueFieldDefinitionNamesRule } from 'graphql/validation';
19
+ *
20
+ * const invalidSDL = `
21
+ * type Query { name: String name: String }
22
+ * `;
23
+ *
24
+ * UniqueFieldDefinitionNamesRule.name; // => 'UniqueFieldDefinitionNamesRule'
25
+ * buildSchema(invalidSDL); // throws an error
26
+ *
27
+ * const validSDL = `
28
+ * type Query { name: String other: String }
29
+ * `;
30
+ *
31
+ * buildSchema(validSDL); // does not throw
32
+ * ```
12
33
  */
13
34
  export function UniqueFieldDefinitionNamesRule(context) {
14
35
  const schema = context.getSchema();
@@ -1,3 +1,4 @@
1
+ /** @category Validation Rules */
1
2
  import type { ASTVisitor } from '../../language/visitor';
2
3
  import type { ASTValidationContext } from '../ValidationContext';
3
4
  /**
@@ -6,6 +7,33 @@ import type { ASTValidationContext } from '../ValidationContext';
6
7
  * A GraphQL document is only valid if all defined fragments have unique names.
7
8
  *
8
9
  * See https://spec.graphql.org/draft/#sec-Fragment-Name-Uniqueness
10
+ * @param context - The validation context used while checking the document.
11
+ * @returns A visitor that reports validation errors for this rule.
12
+ * @example
13
+ * ```ts
14
+ * import { buildSchema, parse, validate } from 'graphql';
15
+ * import { UniqueFragmentNamesRule } from 'graphql/validation';
16
+ *
17
+ * const schema = buildSchema(`
18
+ * type Query {
19
+ * name: String
20
+ * }
21
+ * `);
22
+ *
23
+ * const invalidDocument = parse(`
24
+ * fragment A on Query { name } fragment A on Query { name } query { ...A }
25
+ * `);
26
+ * const invalidErrors = validate(schema, invalidDocument, [UniqueFragmentNamesRule]);
27
+ *
28
+ * invalidErrors.length; // => 1
29
+ *
30
+ * const validDocument = parse(`
31
+ * fragment A on Query { name } query { ...A }
32
+ * `);
33
+ * const validErrors = validate(schema, validDocument, [UniqueFragmentNamesRule]);
34
+ *
35
+ * validErrors; // => []
36
+ * ```
9
37
  */
10
38
  export declare function UniqueFragmentNamesRule(
11
39
  context: ASTValidationContext,
@@ -7,12 +7,41 @@ exports.UniqueFragmentNamesRule = UniqueFragmentNamesRule;
7
7
 
8
8
  var _GraphQLError = require('../../error/GraphQLError.js');
9
9
 
10
+ /** @category Validation Rules */
11
+
10
12
  /**
11
13
  * Unique fragment names
12
14
  *
13
15
  * A GraphQL document is only valid if all defined fragments have unique names.
14
16
  *
15
17
  * See https://spec.graphql.org/draft/#sec-Fragment-Name-Uniqueness
18
+ * @param context - The validation context used while checking the document.
19
+ * @returns A visitor that reports validation errors for this rule.
20
+ * @example
21
+ * ```ts
22
+ * import { buildSchema, parse, validate } from 'graphql';
23
+ * import { UniqueFragmentNamesRule } from 'graphql/validation';
24
+ *
25
+ * const schema = buildSchema(`
26
+ * type Query {
27
+ * name: String
28
+ * }
29
+ * `);
30
+ *
31
+ * const invalidDocument = parse(`
32
+ * fragment A on Query { name } fragment A on Query { name } query { ...A }
33
+ * `);
34
+ * const invalidErrors = validate(schema, invalidDocument, [UniqueFragmentNamesRule]);
35
+ *
36
+ * invalidErrors.length; // => 1
37
+ *
38
+ * const validDocument = parse(`
39
+ * fragment A on Query { name } query { ...A }
40
+ * `);
41
+ * const validErrors = validate(schema, validDocument, [UniqueFragmentNamesRule]);
42
+ *
43
+ * validErrors; // => []
44
+ * ```
16
45
  */
17
46
  function UniqueFragmentNamesRule(context) {
18
47
  const knownFragmentNames = Object.create(null);
@@ -1,3 +1,4 @@
1
+ /** @category Validation Rules */
1
2
  import { GraphQLError } from '../../error/GraphQLError.mjs';
2
3
 
3
4
  /**
@@ -6,6 +7,33 @@ import { GraphQLError } from '../../error/GraphQLError.mjs';
6
7
  * A GraphQL document is only valid if all defined fragments have unique names.
7
8
  *
8
9
  * See https://spec.graphql.org/draft/#sec-Fragment-Name-Uniqueness
10
+ * @param context - The validation context used while checking the document.
11
+ * @returns A visitor that reports validation errors for this rule.
12
+ * @example
13
+ * ```ts
14
+ * import { buildSchema, parse, validate } from 'graphql';
15
+ * import { UniqueFragmentNamesRule } from 'graphql/validation';
16
+ *
17
+ * const schema = buildSchema(`
18
+ * type Query {
19
+ * name: String
20
+ * }
21
+ * `);
22
+ *
23
+ * const invalidDocument = parse(`
24
+ * fragment A on Query { name } fragment A on Query { name } query { ...A }
25
+ * `);
26
+ * const invalidErrors = validate(schema, invalidDocument, [UniqueFragmentNamesRule]);
27
+ *
28
+ * invalidErrors.length; // => 1
29
+ *
30
+ * const validDocument = parse(`
31
+ * fragment A on Query { name } query { ...A }
32
+ * `);
33
+ * const validErrors = validate(schema, validDocument, [UniqueFragmentNamesRule]);
34
+ *
35
+ * validErrors; // => []
36
+ * ```
9
37
  */
10
38
  export function UniqueFragmentNamesRule(context) {
11
39
  const knownFragmentNames = Object.create(null);
@@ -1,3 +1,4 @@
1
+ /** @category Validation Rules */
1
2
  import type { ASTVisitor } from '../../language/visitor';
2
3
  import type { ASTValidationContext } from '../ValidationContext';
3
4
  /**
@@ -7,6 +8,37 @@ import type { ASTValidationContext } from '../ValidationContext';
7
8
  * uniquely named.
8
9
  *
9
10
  * See https://spec.graphql.org/draft/#sec-Input-Object-Field-Uniqueness
11
+ * @param context - The validation context used while checking the document.
12
+ * @returns A visitor that reports validation errors for this rule.
13
+ * @example
14
+ * ```ts
15
+ * import { buildSchema, parse, validate } from 'graphql';
16
+ * import { UniqueInputFieldNamesRule } from 'graphql/validation';
17
+ *
18
+ * const schema = buildSchema(`
19
+ * input Filter {
20
+ * name: String
21
+ * }
22
+ *
23
+ * type Query {
24
+ * search(filter: Filter): String
25
+ * }
26
+ * `);
27
+ *
28
+ * const invalidDocument = parse(`
29
+ * { search(filter: { name: "a", name: "b" }) }
30
+ * `);
31
+ * const invalidErrors = validate(schema, invalidDocument, [UniqueInputFieldNamesRule]);
32
+ *
33
+ * invalidErrors.length; // => 1
34
+ *
35
+ * const validDocument = parse(`
36
+ * { search(filter: { name: "a" }) }
37
+ * `);
38
+ * const validErrors = validate(schema, validDocument, [UniqueInputFieldNamesRule]);
39
+ *
40
+ * validErrors; // => []
41
+ * ```
10
42
  */
11
43
  export declare function UniqueInputFieldNamesRule(
12
44
  context: ASTValidationContext,
@@ -9,6 +9,8 @@ var _invariant = require('../../jsutils/invariant.js');
9
9
 
10
10
  var _GraphQLError = require('../../error/GraphQLError.js');
11
11
 
12
+ /** @category Validation Rules */
13
+
12
14
  /**
13
15
  * Unique input field names
14
16
  *
@@ -16,6 +18,37 @@ var _GraphQLError = require('../../error/GraphQLError.js');
16
18
  * uniquely named.
17
19
  *
18
20
  * See https://spec.graphql.org/draft/#sec-Input-Object-Field-Uniqueness
21
+ * @param context - The validation context used while checking the document.
22
+ * @returns A visitor that reports validation errors for this rule.
23
+ * @example
24
+ * ```ts
25
+ * import { buildSchema, parse, validate } from 'graphql';
26
+ * import { UniqueInputFieldNamesRule } from 'graphql/validation';
27
+ *
28
+ * const schema = buildSchema(`
29
+ * input Filter {
30
+ * name: String
31
+ * }
32
+ *
33
+ * type Query {
34
+ * search(filter: Filter): String
35
+ * }
36
+ * `);
37
+ *
38
+ * const invalidDocument = parse(`
39
+ * { search(filter: { name: "a", name: "b" }) }
40
+ * `);
41
+ * const invalidErrors = validate(schema, invalidDocument, [UniqueInputFieldNamesRule]);
42
+ *
43
+ * invalidErrors.length; // => 1
44
+ *
45
+ * const validDocument = parse(`
46
+ * { search(filter: { name: "a" }) }
47
+ * `);
48
+ * const validErrors = validate(schema, validDocument, [UniqueInputFieldNamesRule]);
49
+ *
50
+ * validErrors; // => []
51
+ * ```
19
52
  */
20
53
  function UniqueInputFieldNamesRule(context) {
21
54
  const knownNameStack = [];
@@ -1,3 +1,4 @@
1
+ /** @category Validation Rules */
1
2
  import { invariant } from '../../jsutils/invariant.mjs';
2
3
  import { GraphQLError } from '../../error/GraphQLError.mjs';
3
4
 
@@ -8,6 +9,37 @@ import { GraphQLError } from '../../error/GraphQLError.mjs';
8
9
  * uniquely named.
9
10
  *
10
11
  * See https://spec.graphql.org/draft/#sec-Input-Object-Field-Uniqueness
12
+ * @param context - The validation context used while checking the document.
13
+ * @returns A visitor that reports validation errors for this rule.
14
+ * @example
15
+ * ```ts
16
+ * import { buildSchema, parse, validate } from 'graphql';
17
+ * import { UniqueInputFieldNamesRule } from 'graphql/validation';
18
+ *
19
+ * const schema = buildSchema(`
20
+ * input Filter {
21
+ * name: String
22
+ * }
23
+ *
24
+ * type Query {
25
+ * search(filter: Filter): String
26
+ * }
27
+ * `);
28
+ *
29
+ * const invalidDocument = parse(`
30
+ * { search(filter: { name: "a", name: "b" }) }
31
+ * `);
32
+ * const invalidErrors = validate(schema, invalidDocument, [UniqueInputFieldNamesRule]);
33
+ *
34
+ * invalidErrors.length; // => 1
35
+ *
36
+ * const validDocument = parse(`
37
+ * { search(filter: { name: "a" }) }
38
+ * `);
39
+ * const validErrors = validate(schema, validDocument, [UniqueInputFieldNamesRule]);
40
+ *
41
+ * validErrors; // => []
42
+ * ```
11
43
  */
12
44
  export function UniqueInputFieldNamesRule(context) {
13
45
  const knownNameStack = [];