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
package/type/schema.mjs CHANGED
@@ -1,3 +1,4 @@
1
+ /** @category Schema */
1
2
  import { devAssert } from '../jsutils/devAssert.mjs';
2
3
  import { inspect } from '../jsutils/inspect.mjs';
3
4
  import { instanceOf } from '../jsutils/instanceOf.mjs';
@@ -15,11 +16,47 @@ import { isDirective, specifiedDirectives } from './directives.mjs';
15
16
  import { __Schema } from './introspection.mjs';
16
17
  /**
17
18
  * Test if the given value is a GraphQL schema.
19
+ * @param schema - Value to inspect.
20
+ * @returns True when the value is a GraphQLSchema.
21
+ * @example
22
+ * ```ts
23
+ * import { buildSchema } from 'graphql/utilities';
24
+ * import { GraphQLString, isSchema } from 'graphql/type';
25
+ *
26
+ * const schema = buildSchema(`
27
+ * type Query {
28
+ * greeting: String
29
+ * }
30
+ * `);
31
+ *
32
+ * isSchema(schema); // => true
33
+ * isSchema(GraphQLString); // => false
34
+ * ```
18
35
  */
19
36
 
20
37
  export function isSchema(schema) {
21
38
  return instanceOf(schema, GraphQLSchema);
22
39
  }
40
+ /**
41
+ * Returns the value as a GraphQLSchema, or throws if it is not a schema.
42
+ * @param schema - GraphQL schema to use.
43
+ * @returns The value typed as a GraphQLSchema.
44
+ * @example
45
+ * ```ts
46
+ * import { buildSchema } from 'graphql/utilities';
47
+ * import { assertSchema, GraphQLString } from 'graphql/type';
48
+ *
49
+ * const schema = buildSchema(`
50
+ * type Query {
51
+ * greeting: String
52
+ * }
53
+ * `);
54
+ *
55
+ * assertSchema(schema); // => schema
56
+ * assertSchema(GraphQLString); // throws an error
57
+ * ```
58
+ */
59
+
23
60
  export function assertSchema(schema) {
24
61
  if (!isSchema(schema)) {
25
62
  throw new Error(`Expected ${inspect(schema)} to be a GraphQL schema.`);
@@ -29,7 +66,6 @@ export function assertSchema(schema) {
29
66
  }
30
67
  /**
31
68
  * Custom extensions
32
- *
33
69
  * @remarks
34
70
  * Use a unique identifier name for your extension, for example the name of
35
71
  * your library or project. Do not use a shortened identifier as this increases
@@ -43,70 +79,190 @@ export function assertSchema(schema) {
43
79
  * A Schema is created by supplying the root types of each type of operation,
44
80
  * query and mutation (optional). A schema definition is then supplied to the
45
81
  * validator and executor.
82
+ * @example
83
+ * ```ts
84
+ * const MyAppQueryRootType = new GraphQLObjectType({
85
+ * name: 'Query',
86
+ * fields: {
87
+ * greeting: { type: GraphQLString },
88
+ * },
89
+ * });
46
90
  *
47
- * Example:
91
+ * const MyAppMutationRootType = new GraphQLObjectType({
92
+ * name: 'Mutation',
93
+ * fields: {
94
+ * setGreeting: { type: GraphQLString },
95
+ * },
96
+ * });
48
97
  *
49
- * ```ts
50
98
  * const MyAppSchema = new GraphQLSchema({
51
99
  * query: MyAppQueryRootType,
52
100
  * mutation: MyAppMutationRootType,
53
- * })
101
+ * });
54
102
  * ```
55
- *
56
- * Note: When the schema is constructed, by default only the types that are
57
- * reachable by traversing the root types are included, other types must be
58
- * explicitly referenced.
59
- *
60
- * Example:
103
+ * @example
104
+ * When the schema is constructed, by default only the types that are reachable
105
+ * by traversing the root types are included, other types must be explicitly
106
+ * referenced.
61
107
  *
62
108
  * ```ts
63
109
  * const characterInterface = new GraphQLInterfaceType({
64
110
  * name: 'Character',
65
- * ...
111
+ * fields: {
112
+ * name: { type: GraphQLString },
113
+ * },
66
114
  * });
67
115
  *
68
116
  * const humanType = new GraphQLObjectType({
69
117
  * name: 'Human',
70
118
  * interfaces: [characterInterface],
71
- * ...
119
+ * fields: {
120
+ * name: { type: GraphQLString },
121
+ * },
72
122
  * });
73
123
  *
74
124
  * const droidType = new GraphQLObjectType({
75
125
  * name: 'Droid',
76
126
  * interfaces: [characterInterface],
77
- * ...
127
+ * fields: {
128
+ * name: { type: GraphQLString },
129
+ * },
78
130
  * });
79
131
  *
80
132
  * const schema = new GraphQLSchema({
81
133
  * query: new GraphQLObjectType({
82
134
  * name: 'Query',
83
135
  * fields: {
84
- * hero: { type: characterInterface, ... },
85
- * }
136
+ * hero: { type: characterInterface },
137
+ * },
86
138
  * }),
87
- * ...
88
139
  * // Since this schema references only the `Character` interface it's
89
140
  * // necessary to explicitly list the types that implement it if
90
141
  * // you want them to be included in the final schema.
91
142
  * types: [humanType, droidType],
92
- * })
143
+ * });
93
144
  * ```
94
- *
95
- * Note: If an array of `directives` are provided to GraphQLSchema, that will be
96
- * the exact list of directives represented and allowed. If `directives` is not
145
+ * @example
146
+ * If an array of `directives` are provided to GraphQLSchema, that will be the
147
+ * exact list of directives represented and allowed. If `directives` is not
97
148
  * provided then a default set of the specified directives (e.g. `@include` and
98
- * `@skip`) will be used. If you wish to provide *additional* directives to these
99
- * specified directives, you must explicitly declare them. Example:
149
+ * `@skip`) will be used. If you wish to provide *additional* directives to
150
+ * these specified directives, you must explicitly declare them.
100
151
  *
101
152
  * ```ts
102
153
  * const MyAppSchema = new GraphQLSchema({
103
- * ...
104
- * directives: specifiedDirectives.concat([ myCustomDirective ]),
105
- * })
154
+ * query: MyAppQueryRootType,
155
+ * directives: specifiedDirectives.concat([myCustomDirective]),
156
+ * });
106
157
  * ```
107
158
  */
108
159
  export class GraphQLSchema {
109
- // Used as a cache for validateSchema().
160
+ /** Human-readable description for this schema element, if provided. */
161
+
162
+ /** Extension fields to include in the formatted result. */
163
+
164
+ /** AST node from which this schema element was built, if available. */
165
+
166
+ /** AST extension nodes applied to this schema element. */
167
+
168
+ /**
169
+ * Cached schema validation errors, if validation has already run.
170
+ * @internal
171
+ */
172
+
173
+ /**
174
+ * Creates a GraphQLSchema instance.
175
+ * @param config - Configuration describing this object.
176
+ * @example
177
+ * ```ts
178
+ * // Create a schema with the required query root.
179
+ * import {
180
+ * GraphQLObjectType,
181
+ * GraphQLSchema,
182
+ * GraphQLString,
183
+ * } from 'graphql/type';
184
+ *
185
+ * const Query = new GraphQLObjectType({
186
+ * name: 'Query',
187
+ * fields: {
188
+ * greeting: {
189
+ * type: GraphQLString,
190
+ * resolve: () => 'Hello',
191
+ * },
192
+ * },
193
+ * });
194
+ *
195
+ * const schema = new GraphQLSchema({
196
+ * description: 'The application schema.',
197
+ * query: Query,
198
+ * });
199
+ *
200
+ * schema.getQueryType(); // => Query
201
+ * schema.description; // => 'The application schema.'
202
+ * ```
203
+ * @example
204
+ * ```ts
205
+ * // This variant configures every schema option, including directives and extensions.
206
+ * import { DirectiveLocation, parse } from 'graphql/language';
207
+ * import {
208
+ * GraphQLBoolean,
209
+ * GraphQLDirective,
210
+ * GraphQLObjectType,
211
+ * GraphQLSchema,
212
+ * GraphQLString,
213
+ * } from 'graphql/type';
214
+ *
215
+ * const Query = new GraphQLObjectType({
216
+ * name: 'Query',
217
+ * fields: { greeting: { type: GraphQLString } },
218
+ * });
219
+ * const Mutation = new GraphQLObjectType({
220
+ * name: 'Mutation',
221
+ * fields: { setGreeting: { type: GraphQLString } },
222
+ * });
223
+ * const Subscription = new GraphQLObjectType({
224
+ * name: 'Subscription',
225
+ * fields: { greetingChanged: { type: GraphQLString } },
226
+ * });
227
+ * const AuditEvent = new GraphQLObjectType({
228
+ * name: 'AuditEvent',
229
+ * fields: { message: { type: GraphQLString } },
230
+ * });
231
+ * const authDirective = new GraphQLDirective({
232
+ * name: 'auth',
233
+ * locations: [DirectiveLocation.FIELD_DEFINITION],
234
+ * args: { required: { type: GraphQLBoolean } },
235
+ * });
236
+ * const schemaDocument = parse(`
237
+ * schema {
238
+ * query: Query
239
+ * mutation: Mutation
240
+ * subscription: Subscription
241
+ * }
242
+ *
243
+ * extend schema @auth
244
+ * `);
245
+ *
246
+ * const schema = new GraphQLSchema({
247
+ * description: 'Operations exposed by the application.',
248
+ * query: Query,
249
+ * mutation: Mutation,
250
+ * subscription: Subscription,
251
+ * types: [AuditEvent],
252
+ * directives: [authDirective],
253
+ * extensions: { owner: 'platform' },
254
+ * astNode: schemaDocument.definitions[0],
255
+ * extensionASTNodes: [ schemaDocument.definitions[1] ],
256
+ * assumeValid: true,
257
+ * });
258
+ *
259
+ * schema.getMutationType(); // => Mutation
260
+ * schema.getSubscriptionType(); // => Subscription
261
+ * schema.getType('AuditEvent'); // => AuditEvent
262
+ * schema.getDirective('auth'); // => authDirective
263
+ * schema.extensions; // => { owner: 'platform' }
264
+ * ```
265
+ */
110
266
  constructor(config) {
111
267
  var _config$extensionASTN, _config$directives;
112
268
 
@@ -242,22 +398,106 @@ export class GraphQLSchema {
242
398
  }
243
399
  }
244
400
  }
401
+ /**
402
+ * Returns the value used by `Object.prototype.toString`.
403
+ * @returns The built-in string tag for this object.
404
+ */
245
405
 
246
406
  get [Symbol.toStringTag]() {
247
407
  return 'GraphQLSchema';
248
408
  }
409
+ /**
410
+ * Returns the root object type for query operations.
411
+ * @returns The query root type, if this schema defines one.
412
+ * @example
413
+ * ```ts
414
+ * import { buildSchema } from 'graphql/utilities';
415
+ *
416
+ * const schema = buildSchema(`
417
+ * type Query {
418
+ * greeting: String
419
+ * }
420
+ * `);
421
+ *
422
+ * schema.getQueryType()?.name; // => 'Query'
423
+ * ```
424
+ */
249
425
 
250
426
  getQueryType() {
251
427
  return this._queryType;
252
428
  }
429
+ /**
430
+ * Returns the root object type for mutation operations.
431
+ * @returns The mutation root type, if this schema defines one.
432
+ * @example
433
+ * ```ts
434
+ * import { buildSchema } from 'graphql/utilities';
435
+ *
436
+ * const schema = buildSchema(`
437
+ * type Query {
438
+ * greeting: String
439
+ * }
440
+ *
441
+ * type Mutation {
442
+ * setGreeting(value: String!): String
443
+ * }
444
+ * `);
445
+ *
446
+ * schema.getMutationType()?.name; // => 'Mutation'
447
+ * ```
448
+ */
253
449
 
254
450
  getMutationType() {
255
451
  return this._mutationType;
256
452
  }
453
+ /**
454
+ * Returns the root object type for subscription operations.
455
+ * @returns The subscription root type, if this schema defines one.
456
+ * @example
457
+ * ```ts
458
+ * import { buildSchema } from 'graphql/utilities';
459
+ *
460
+ * const schema = buildSchema(`
461
+ * type Query {
462
+ * greeting: String
463
+ * }
464
+ *
465
+ * type Subscription {
466
+ * greetings: String
467
+ * }
468
+ * `);
469
+ *
470
+ * schema.getSubscriptionType()?.name; // => 'Subscription'
471
+ * ```
472
+ */
257
473
 
258
474
  getSubscriptionType() {
259
475
  return this._subscriptionType;
260
476
  }
477
+ /**
478
+ * Returns the root object type for the requested operation kind.
479
+ * @param operation - Operation kind to resolve.
480
+ * @returns The root object type for the operation kind, if this schema defines one.
481
+ * @example
482
+ * ```ts
483
+ * import { OperationTypeNode } from 'graphql/language';
484
+ * import { buildSchema } from 'graphql/utilities';
485
+ *
486
+ * const schema = buildSchema(`
487
+ * type Query {
488
+ * greeting: String
489
+ * }
490
+ *
491
+ * type Mutation {
492
+ * setGreeting(value: String!): String
493
+ * }
494
+ * `);
495
+ *
496
+ * schema.getRootType(OperationTypeNode.QUERY)?.name; // => 'Query'
497
+ * schema.getRootType(OperationTypeNode.MUTATION)?.name; // => 'Mutation'
498
+ * schema.getRootType(OperationTypeNode.SUBSCRIPTION); // => undefined
499
+ * ```
500
+ */
261
501
 
262
502
  getRootType(operation) {
263
503
  switch (operation) {
@@ -271,20 +511,139 @@ export class GraphQLSchema {
271
511
  return this.getSubscriptionType();
272
512
  }
273
513
  }
514
+ /**
515
+ * Returns all named types known to this schema.
516
+ * @returns A map of schema types keyed by type name.
517
+ * @example
518
+ * ```ts
519
+ * import { buildSchema } from 'graphql/utilities';
520
+ *
521
+ * const schema = buildSchema(`
522
+ * type User {
523
+ * name: String
524
+ * }
525
+ *
526
+ * type Query {
527
+ * viewer: User
528
+ * }
529
+ * `);
530
+ *
531
+ * const typeMap = schema.getTypeMap();
532
+ *
533
+ * typeMap.User.name; // => 'User'
534
+ * typeMap.Query.name; // => 'Query'
535
+ * typeMap.String.name; // => 'String'
536
+ * ```
537
+ */
274
538
 
275
539
  getTypeMap() {
276
540
  return this._typeMap;
277
541
  }
542
+ /**
543
+ * Returns the named type with the provided name.
544
+ * @param name - The GraphQL name to look up.
545
+ * @returns The named schema type, if one exists.
546
+ * @example
547
+ * ```ts
548
+ * import { buildSchema } from 'graphql/utilities';
549
+ *
550
+ * const schema = buildSchema(`
551
+ * type User {
552
+ * name: String
553
+ * }
554
+ *
555
+ * type Query {
556
+ * viewer: User
557
+ * }
558
+ * `);
559
+ *
560
+ * schema.getType('User')?.toString(); // => 'User'
561
+ * schema.getType('Missing'); // => undefined
562
+ * ```
563
+ */
278
564
 
279
565
  getType(name) {
280
566
  return this.getTypeMap()[name];
281
567
  }
568
+ /**
569
+ * Returns object types that may be returned for an abstract type.
570
+ * @param abstractType - Interface or union type to inspect.
571
+ * @returns Object types that may satisfy the abstract type.
572
+ * @example
573
+ * ```ts
574
+ * import { buildSchema } from 'graphql/utilities';
575
+ * import { assertInterfaceType, assertUnionType } from 'graphql/type';
576
+ *
577
+ * const schema = buildSchema(`
578
+ * interface Node {
579
+ * id: ID!
580
+ * }
581
+ *
582
+ * type User implements Node {
583
+ * id: ID!
584
+ * }
585
+ *
586
+ * type Organization implements Node {
587
+ * id: ID!
588
+ * }
589
+ *
590
+ * union SearchResult = User | Organization
591
+ *
592
+ * type Query {
593
+ * node: Node
594
+ * search: [SearchResult]
595
+ * }
596
+ * `);
597
+ *
598
+ * const Node = assertInterfaceType(schema.getType('Node'));
599
+ * const SearchResult = assertUnionType(schema.getType('SearchResult'));
600
+ *
601
+ * schema.getPossibleTypes(Node).map((type) => type.name); // => ['User', 'Organization']
602
+ * schema.getPossibleTypes(SearchResult).map((type) => type.name); // => ['User', 'Organization']
603
+ * ```
604
+ */
282
605
 
283
606
  getPossibleTypes(abstractType) {
284
607
  return isUnionType(abstractType)
285
608
  ? abstractType.getTypes()
286
609
  : this.getImplementations(abstractType).objects;
287
610
  }
611
+ /**
612
+ * Returns objects and interfaces that implement an interface type.
613
+ * @param interfaceType - Interface type to inspect.
614
+ * @returns Object and interface implementations of the interface.
615
+ * @example
616
+ * ```ts
617
+ * import { buildSchema } from 'graphql/utilities';
618
+ * import { assertInterfaceType } from 'graphql/type';
619
+ *
620
+ * const schema = buildSchema(`
621
+ * interface Resource {
622
+ * url: String!
623
+ * }
624
+ *
625
+ * interface Image implements Resource {
626
+ * url: String!
627
+ * width: Int
628
+ * }
629
+ *
630
+ * type Photo implements Resource & Image {
631
+ * url: String!
632
+ * width: Int
633
+ * }
634
+ *
635
+ * type Query {
636
+ * resource: Resource
637
+ * }
638
+ * `);
639
+ *
640
+ * const Resource = assertInterfaceType(schema.getType('Resource'));
641
+ * const implementations = schema.getImplementations(Resource);
642
+ *
643
+ * implementations.interfaces.map((type) => type.name); // => ['Image']
644
+ * implementations.objects.map((type) => type.name); // => ['Photo']
645
+ * ```
646
+ */
288
647
 
289
648
  getImplementations(interfaceType) {
290
649
  const implementations = this._implementationsMap[interfaceType.name];
@@ -295,6 +654,43 @@ export class GraphQLSchema {
295
654
  interfaces: [],
296
655
  };
297
656
  }
657
+ /**
658
+ * Returns whether one type is a possible runtime subtype of an abstract type.
659
+ * @param abstractType - Interface or union type to inspect.
660
+ * @param maybeSubType - Object or interface type to test as a possible subtype.
661
+ * @returns True when the subtype may satisfy the abstract type.
662
+ * @example
663
+ * ```ts
664
+ * import { buildSchema } from 'graphql/utilities';
665
+ * import { assertInterfaceType, assertObjectType } from 'graphql/type';
666
+ *
667
+ * const schema = buildSchema(`
668
+ * interface Node {
669
+ * id: ID!
670
+ * }
671
+ *
672
+ * type User implements Node {
673
+ * id: ID!
674
+ * }
675
+ *
676
+ * type Review {
677
+ * body: String
678
+ * }
679
+ *
680
+ * type Query {
681
+ * node: Node
682
+ * review: Review
683
+ * }
684
+ * `);
685
+ *
686
+ * const Node = assertInterfaceType(schema.getType('Node'));
687
+ * const User = assertObjectType(schema.getType('User'));
688
+ * const Review = assertObjectType(schema.getType('Review'));
689
+ *
690
+ * schema.isSubType(Node, User); // => true
691
+ * schema.isSubType(Node, Review); // => false
692
+ * ```
693
+ */
298
694
 
299
695
  isSubType(abstractType, maybeSubType) {
300
696
  let map = this._subTypeMap[abstractType.name];
@@ -323,14 +719,76 @@ export class GraphQLSchema {
323
719
 
324
720
  return map[maybeSubType.name] !== undefined;
325
721
  }
722
+ /**
723
+ * Returns directives available in this schema.
724
+ * @returns Directives available in this schema.
725
+ * @example
726
+ * ```ts
727
+ * import { buildSchema } from 'graphql/utilities';
728
+ *
729
+ * const schema = buildSchema(`
730
+ * directive @upper on FIELD_DEFINITION
731
+ *
732
+ * type Query {
733
+ * greeting: String @upper
734
+ * }
735
+ * `);
736
+ *
737
+ * schema.getDirectives().map((directive) => directive.name); // => ['include', 'skip', 'deprecated', 'specifiedBy', 'oneOf', 'upper']
738
+ * ```
739
+ */
326
740
 
327
741
  getDirectives() {
328
742
  return this._directives;
329
743
  }
744
+ /**
745
+ * Returns the current directive definition.
746
+ * @param name - The GraphQL name to look up.
747
+ * @returns The current directive definition, if known.
748
+ * @example
749
+ * ```ts
750
+ * import { buildSchema } from 'graphql/utilities';
751
+ *
752
+ * const schema = buildSchema(`
753
+ * directive @upper on FIELD_DEFINITION
754
+ *
755
+ * type Query {
756
+ * greeting: String @upper
757
+ * }
758
+ * `);
759
+ *
760
+ * schema.getDirective('upper')?.name; // => 'upper'
761
+ * schema.getDirective('missing'); // => undefined
762
+ * ```
763
+ */
330
764
 
331
765
  getDirective(name) {
332
766
  return this.getDirectives().find((directive) => directive.name === name);
333
767
  }
768
+ /**
769
+ * Returns a normalized configuration object for this object.
770
+ *
771
+ * The returned config preserves the original `assumeValid` flag so the schema
772
+ * can be recreated with the same validation behavior.
773
+ * @returns A configuration object that can be used to recreate this object.
774
+ * @example
775
+ * ```ts
776
+ * import { buildSchema } from 'graphql/utilities';
777
+ * import { GraphQLSchema } from 'graphql/type';
778
+ *
779
+ * const schema = buildSchema(`
780
+ * type Query {
781
+ * greeting: String
782
+ * }
783
+ * `);
784
+ *
785
+ * const config = schema.toConfig();
786
+ * const schemaCopy = new GraphQLSchema(config);
787
+ *
788
+ * config.query?.name; // => 'Query'
789
+ * schemaCopy.getQueryType()?.name; // => 'Query'
790
+ * ```
791
+ */
334
792
 
335
793
  toConfig() {
336
794
  return {
@@ -1,3 +1,4 @@
1
+ /** @category Validation */
1
2
  import { GraphQLError } from '../error/GraphQLError';
2
3
  import type { GraphQLSchema } from './schema';
3
4
  /**
@@ -6,6 +7,22 @@ import type { GraphQLSchema } from './schema';
6
7
  *
7
8
  * Validation runs synchronously, returning an array of encountered errors, or
8
9
  * an empty array if no errors were encountered and the Schema is valid.
10
+ * @param schema - GraphQL schema to use.
11
+ * @returns Schema validation errors, or an empty array when the schema is valid.
12
+ * @example
13
+ * ```ts
14
+ * import { validateSchema } from 'graphql/type';
15
+ * import { buildSchema } from 'graphql/utilities';
16
+ *
17
+ * const schema = buildSchema(`
18
+ * type Query {
19
+ * name: String
20
+ * }
21
+ * `);
22
+ * const errors = validateSchema(schema);
23
+ *
24
+ * errors; // => []
25
+ * ```
9
26
  */
10
27
  export declare function validateSchema(
11
28
  schema: GraphQLSchema,
@@ -13,5 +30,19 @@ export declare function validateSchema(
13
30
  /**
14
31
  * Utility function which asserts a schema is valid by throwing an error if
15
32
  * it is invalid.
33
+ * @param schema - GraphQL schema to use.
34
+ * @example
35
+ * ```ts
36
+ * import { assertValidSchema } from 'graphql/type';
37
+ * import { buildSchema } from 'graphql/utilities';
38
+ *
39
+ * const schema = buildSchema(`
40
+ * type Query {
41
+ * name: String
42
+ * }
43
+ * `);
44
+ *
45
+ * assertValidSchema(schema); // does not throw
46
+ * ```
16
47
  */
17
48
  export declare function assertValidSchema(schema: GraphQLSchema): void;