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