graphql 0.0.1-test.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 (390) hide show
  1. package/LICENSE +21 -0
  2. package/NotSupportedTSVersion.d.ts +1 -0
  3. package/README.md +158 -0
  4. package/error/GraphQLError.d.ts +142 -0
  5. package/error/GraphQLError.js +267 -0
  6. package/error/GraphQLError.mjs +253 -0
  7. package/error/index.d.ts +7 -0
  8. package/error/index.js +41 -0
  9. package/error/index.mjs +3 -0
  10. package/error/locatedError.d.ts +13 -0
  11. package/error/locatedError.js +40 -0
  12. package/error/locatedError.mjs +32 -0
  13. package/error/syntaxError.d.ts +11 -0
  14. package/error/syntaxError.js +21 -0
  15. package/error/syntaxError.mjs +11 -0
  16. package/execution/collectFields.d.ts +45 -0
  17. package/execution/collectFields.js +229 -0
  18. package/execution/collectFields.mjs +213 -0
  19. package/execution/execute.d.ts +185 -0
  20. package/execution/execute.js +1016 -0
  21. package/execution/execute.mjs +988 -0
  22. package/execution/index.d.ts +14 -0
  23. package/execution/index.js +67 -0
  24. package/execution/index.mjs +9 -0
  25. package/execution/mapAsyncIterator.d.ts +9 -0
  26. package/execution/mapAsyncIterator.js +68 -0
  27. package/execution/mapAsyncIterator.mjs +61 -0
  28. package/execution/subscribe.d.ts +68 -0
  29. package/execution/subscribe.js +261 -0
  30. package/execution/subscribe.mjs +239 -0
  31. package/execution/values.d.ts +81 -0
  32. package/execution/values.js +292 -0
  33. package/execution/values.mjs +255 -0
  34. package/graphql.d.ts +67 -0
  35. package/graphql.js +96 -0
  36. package/graphql.mjs +122 -0
  37. package/index.d.ts +411 -0
  38. package/index.js +1263 -0
  39. package/index.mjs +254 -0
  40. package/jsutils/Maybe.d.ts +2 -0
  41. package/jsutils/Maybe.js +5 -0
  42. package/jsutils/Maybe.mjs +1 -0
  43. package/jsutils/ObjMap.d.ts +16 -0
  44. package/jsutils/ObjMap.js +5 -0
  45. package/jsutils/ObjMap.mjs +1 -0
  46. package/jsutils/Path.d.ts +20 -0
  47. package/jsutils/Path.js +33 -0
  48. package/jsutils/Path.mjs +25 -0
  49. package/jsutils/PromiseOrValue.d.ts +1 -0
  50. package/jsutils/PromiseOrValue.js +5 -0
  51. package/jsutils/PromiseOrValue.mjs +1 -0
  52. package/jsutils/devAssert.d.ts +1 -0
  53. package/jsutils/devAssert.js +14 -0
  54. package/jsutils/devAssert.mjs +7 -0
  55. package/jsutils/didYouMean.d.ts +8 -0
  56. package/jsutils/didYouMean.js +38 -0
  57. package/jsutils/didYouMean.mjs +32 -0
  58. package/jsutils/groupBy.d.ts +7 -0
  59. package/jsutils/groupBy.js +26 -0
  60. package/jsutils/groupBy.mjs +19 -0
  61. package/jsutils/identityFunc.d.ts +4 -0
  62. package/jsutils/identityFunc.js +13 -0
  63. package/jsutils/identityFunc.mjs +6 -0
  64. package/jsutils/inspect.d.ts +4 -0
  65. package/jsutils/inspect.js +121 -0
  66. package/jsutils/inspect.mjs +115 -0
  67. package/jsutils/instanceOf.d.ts +16 -0
  68. package/jsutils/instanceOf.js +60 -0
  69. package/jsutils/instanceOf.mjs +52 -0
  70. package/jsutils/invariant.d.ts +4 -0
  71. package/jsutils/invariant.js +16 -0
  72. package/jsutils/invariant.mjs +9 -0
  73. package/jsutils/isAsyncIterable.d.ts +7 -0
  74. package/jsutils/isAsyncIterable.js +18 -0
  75. package/jsutils/isAsyncIterable.mjs +11 -0
  76. package/jsutils/isIterableObject.d.ts +20 -0
  77. package/jsutils/isIterableObject.js +32 -0
  78. package/jsutils/isIterableObject.mjs +25 -0
  79. package/jsutils/isObjectLike.d.ts +7 -0
  80. package/jsutils/isObjectLike.js +14 -0
  81. package/jsutils/isObjectLike.mjs +7 -0
  82. package/jsutils/isPromise.d.ts +5 -0
  83. package/jsutils/isPromise.js +17 -0
  84. package/jsutils/isPromise.mjs +10 -0
  85. package/jsutils/keyMap.d.ts +32 -0
  86. package/jsutils/keyMap.js +43 -0
  87. package/jsutils/keyMap.mjs +36 -0
  88. package/jsutils/keyValMap.d.ts +23 -0
  89. package/jsutils/keyValMap.js +33 -0
  90. package/jsutils/keyValMap.mjs +26 -0
  91. package/jsutils/mapValue.d.ts +9 -0
  92. package/jsutils/mapValue.js +20 -0
  93. package/jsutils/mapValue.mjs +13 -0
  94. package/jsutils/memoize3.d.ts +9 -0
  95. package/jsutils/memoize3.js +41 -0
  96. package/jsutils/memoize3.mjs +34 -0
  97. package/jsutils/naturalCompare.d.ts +8 -0
  98. package/jsutils/naturalCompare.js +69 -0
  99. package/jsutils/naturalCompare.mjs +61 -0
  100. package/jsutils/printPathArray.d.ts +6 -0
  101. package/jsutils/printPathArray.js +17 -0
  102. package/jsutils/printPathArray.mjs +10 -0
  103. package/jsutils/promiseForObject.d.ts +11 -0
  104. package/jsutils/promiseForObject.js +25 -0
  105. package/jsutils/promiseForObject.mjs +18 -0
  106. package/jsutils/promiseReduce.d.ts +13 -0
  107. package/jsutils/promiseReduce.js +27 -0
  108. package/jsutils/promiseReduce.mjs +20 -0
  109. package/jsutils/suggestionList.d.ts +8 -0
  110. package/jsutils/suggestionList.js +139 -0
  111. package/jsutils/suggestionList.mjs +130 -0
  112. package/jsutils/toError.d.ts +4 -0
  113. package/jsutils/toError.js +25 -0
  114. package/jsutils/toError.mjs +18 -0
  115. package/jsutils/toObjMap.d.ts +5 -0
  116. package/jsutils/toObjMap.js +24 -0
  117. package/jsutils/toObjMap.mjs +17 -0
  118. package/language/ast.d.ts +536 -0
  119. package/language/ast.js +224 -0
  120. package/language/ast.mjs +206 -0
  121. package/language/blockString.d.ts +28 -0
  122. package/language/blockString.js +195 -0
  123. package/language/blockString.mjs +178 -0
  124. package/language/characterClasses.d.ts +47 -0
  125. package/language/characterClasses.js +75 -0
  126. package/language/characterClasses.mjs +64 -0
  127. package/language/directiveLocation.d.ts +32 -0
  128. package/language/directiveLocation.js +40 -0
  129. package/language/directiveLocation.mjs +31 -0
  130. package/language/index.d.ts +97 -0
  131. package/language/index.js +215 -0
  132. package/language/index.mjs +29 -0
  133. package/language/kinds.d.ts +65 -0
  134. package/language/kinds.js +64 -0
  135. package/language/kinds.mjs +55 -0
  136. package/language/lexer.d.ts +45 -0
  137. package/language/lexer.js +1006 -0
  138. package/language/lexer.mjs +902 -0
  139. package/language/location.d.ts +16 -0
  140. package/language/location.js +38 -0
  141. package/language/location.mjs +30 -0
  142. package/language/parser.d.ts +554 -0
  143. package/language/parser.js +1567 -0
  144. package/language/parser.mjs +1524 -0
  145. package/language/predicates.d.ts +33 -0
  146. package/language/predicates.js +109 -0
  147. package/language/predicates.mjs +81 -0
  148. package/language/printLocation.d.ts +14 -0
  149. package/language/printLocation.js +74 -0
  150. package/language/printLocation.mjs +66 -0
  151. package/language/printString.d.ts +5 -0
  152. package/language/printString.js +183 -0
  153. package/language/printString.mjs +176 -0
  154. package/language/printer.d.ts +6 -0
  155. package/language/printer.js +351 -0
  156. package/language/printer.mjs +339 -0
  157. package/language/source.d.ts +25 -0
  158. package/language/source.js +65 -0
  159. package/language/source.mjs +50 -0
  160. package/language/tokenKind.d.ts +34 -0
  161. package/language/tokenKind.js +44 -0
  162. package/language/tokenKind.mjs +35 -0
  163. package/language/visitor.d.ts +194 -0
  164. package/language/visitor.js +377 -0
  165. package/language/visitor.mjs +361 -0
  166. package/package.json +40 -0
  167. package/subscription/index.d.ts +19 -0
  168. package/subscription/index.js +19 -0
  169. package/subscription/index.mjs +19 -0
  170. package/type/assertName.d.ts +10 -0
  171. package/type/assertName.js +59 -0
  172. package/type/assertName.mjs +44 -0
  173. package/type/definition.d.ts +917 -0
  174. package/type/definition.js +1329 -0
  175. package/type/definition.mjs +1167 -0
  176. package/type/directives.d.ts +86 -0
  177. package/type/directives.js +224 -0
  178. package/type/directives.mjs +190 -0
  179. package/type/index.d.ts +150 -0
  180. package/type/index.js +547 -0
  181. package/type/index.mjs +103 -0
  182. package/type/introspection.d.ts +29 -0
  183. package/type/introspection.js +617 -0
  184. package/type/introspection.mjs +550 -0
  185. package/type/scalars.d.ts +19 -0
  186. package/type/scalars.js +359 -0
  187. package/type/scalars.mjs +299 -0
  188. package/type/schema.d.ts +170 -0
  189. package/type/schema.js +402 -0
  190. package/type/schema.mjs +381 -0
  191. package/type/validate.d.ts +17 -0
  192. package/type/validate.js +672 -0
  193. package/type/validate.mjs +647 -0
  194. package/utilities/TypeInfo.d.ts +67 -0
  195. package/utilities/TypeInfo.js +418 -0
  196. package/utilities/TypeInfo.mjs +395 -0
  197. package/utilities/assertValidName.d.ts +13 -0
  198. package/utilities/assertValidName.js +51 -0
  199. package/utilities/assertValidName.mjs +40 -0
  200. package/utilities/astFromValue.d.ts +28 -0
  201. package/utilities/astFromValue.js +190 -0
  202. package/utilities/astFromValue.mjs +177 -0
  203. package/utilities/buildASTSchema.d.ts +35 -0
  204. package/utilities/buildASTSchema.js +115 -0
  205. package/utilities/buildASTSchema.mjs +97 -0
  206. package/utilities/buildClientSchema.d.ts +19 -0
  207. package/utilities/buildClientSchema.js +386 -0
  208. package/utilities/buildClientSchema.mjs +363 -0
  209. package/utilities/coerceInputValue.d.ts +16 -0
  210. package/utilities/coerceInputValue.js +191 -0
  211. package/utilities/coerceInputValue.mjs +172 -0
  212. package/utilities/concatAST.d.ts +9 -0
  213. package/utilities/concatAST.js +26 -0
  214. package/utilities/concatAST.mjs +19 -0
  215. package/utilities/extendSchema.d.ts +40 -0
  216. package/utilities/extendSchema.js +798 -0
  217. package/utilities/extendSchema.mjs +789 -0
  218. package/utilities/findBreakingChanges.d.ts +51 -0
  219. package/utilities/findBreakingChanges.js +547 -0
  220. package/utilities/findBreakingChanges.mjs +516 -0
  221. package/utilities/getIntrospectionQuery.d.ts +182 -0
  222. package/utilities/getIntrospectionQuery.js +134 -0
  223. package/utilities/getIntrospectionQuery.mjs +127 -0
  224. package/utilities/getOperationAST.d.ts +11 -0
  225. package/utilities/getOperationAST.js +43 -0
  226. package/utilities/getOperationAST.mjs +36 -0
  227. package/utilities/getOperationRootType.d.ts +15 -0
  228. package/utilities/getOperationRootType.js +59 -0
  229. package/utilities/getOperationRootType.mjs +52 -0
  230. package/utilities/index.d.ts +61 -0
  231. package/utilities/index.js +233 -0
  232. package/utilities/index.mjs +55 -0
  233. package/utilities/introspectionFromSchema.d.ts +18 -0
  234. package/utilities/introspectionFromSchema.js +42 -0
  235. package/utilities/introspectionFromSchema.mjs +30 -0
  236. package/utilities/lexicographicSortSchema.d.ts +9 -0
  237. package/utilities/lexicographicSortSchema.js +177 -0
  238. package/utilities/lexicographicSortSchema.mjs +172 -0
  239. package/utilities/printSchema.d.ts +5 -0
  240. package/utilities/printSchema.js +333 -0
  241. package/utilities/printSchema.mjs +309 -0
  242. package/utilities/separateOperations.d.ts +11 -0
  243. package/utilities/separateOperations.js +88 -0
  244. package/utilities/separateOperations.mjs +80 -0
  245. package/utilities/sortValueNode.d.ts +9 -0
  246. package/utilities/sortValueNode.js +47 -0
  247. package/utilities/sortValueNode.mjs +39 -0
  248. package/utilities/stripIgnoredCharacters.d.ts +62 -0
  249. package/utilities/stripIgnoredCharacters.js +121 -0
  250. package/utilities/stripIgnoredCharacters.mjs +104 -0
  251. package/utilities/typeComparators.d.ts +32 -0
  252. package/utilities/typeComparators.js +116 -0
  253. package/utilities/typeComparators.mjs +106 -0
  254. package/utilities/typeFromAST.d.ts +32 -0
  255. package/utilities/typeFromAST.js +27 -0
  256. package/utilities/typeFromAST.mjs +18 -0
  257. package/utilities/typedQueryDocumentNode.d.ts +22 -0
  258. package/utilities/typedQueryDocumentNode.js +5 -0
  259. package/utilities/typedQueryDocumentNode.mjs +1 -0
  260. package/utilities/valueFromAST.d.ts +29 -0
  261. package/utilities/valueFromAST.js +185 -0
  262. package/utilities/valueFromAST.mjs +172 -0
  263. package/utilities/valueFromASTUntyped.d.ts +23 -0
  264. package/utilities/valueFromASTUntyped.js +61 -0
  265. package/utilities/valueFromASTUntyped.mjs +53 -0
  266. package/validation/ValidationContext.d.ts +95 -0
  267. package/validation/ValidationContext.js +232 -0
  268. package/validation/ValidationContext.mjs +212 -0
  269. package/validation/index.d.ts +40 -0
  270. package/validation/index.js +317 -0
  271. package/validation/index.mjs +68 -0
  272. package/validation/rules/ExecutableDefinitionsRule.d.ts +13 -0
  273. package/validation/rules/ExecutableDefinitionsRule.js +44 -0
  274. package/validation/rules/ExecutableDefinitionsRule.mjs +35 -0
  275. package/validation/rules/FieldsOnCorrectTypeRule.d.ts +13 -0
  276. package/validation/rules/FieldsOnCorrectTypeRule.js +143 -0
  277. package/validation/rules/FieldsOnCorrectTypeRule.mjs +125 -0
  278. package/validation/rules/FragmentsOnCompositeTypesRule.d.ts +14 -0
  279. package/validation/rules/FragmentsOnCompositeTypesRule.js +65 -0
  280. package/validation/rules/FragmentsOnCompositeTypesRule.mjs +49 -0
  281. package/validation/rules/KnownArgumentNamesRule.d.ts +23 -0
  282. package/validation/rules/KnownArgumentNamesRule.js +116 -0
  283. package/validation/rules/KnownArgumentNamesRule.mjs +98 -0
  284. package/validation/rules/KnownDirectivesRule.d.ts +16 -0
  285. package/validation/rules/KnownDirectivesRule.js +163 -0
  286. package/validation/rules/KnownDirectivesRule.mjs +146 -0
  287. package/validation/rules/KnownFragmentNamesRule.d.ts +13 -0
  288. package/validation/rules/KnownFragmentNamesRule.js +34 -0
  289. package/validation/rules/KnownFragmentNamesRule.mjs +24 -0
  290. package/validation/rules/KnownTypeNamesRule.d.ts +16 -0
  291. package/validation/rules/KnownTypeNamesRule.js +87 -0
  292. package/validation/rules/KnownTypeNamesRule.mjs +75 -0
  293. package/validation/rules/LoneAnonymousOperationRule.d.ts +13 -0
  294. package/validation/rules/LoneAnonymousOperationRule.js +40 -0
  295. package/validation/rules/LoneAnonymousOperationRule.mjs +32 -0
  296. package/validation/rules/LoneSchemaDefinitionRule.d.ts +10 -0
  297. package/validation/rules/LoneSchemaDefinitionRule.js +63 -0
  298. package/validation/rules/LoneSchemaDefinitionRule.mjs +53 -0
  299. package/validation/rules/NoFragmentCyclesRule.d.ts +13 -0
  300. package/validation/rules/NoFragmentCyclesRule.js +83 -0
  301. package/validation/rules/NoFragmentCyclesRule.mjs +76 -0
  302. package/validation/rules/NoUndefinedVariablesRule.d.ts +13 -0
  303. package/validation/rules/NoUndefinedVariablesRule.js +50 -0
  304. package/validation/rules/NoUndefinedVariablesRule.mjs +43 -0
  305. package/validation/rules/NoUnusedFragmentsRule.d.ts +13 -0
  306. package/validation/rules/NoUnusedFragmentsRule.js +59 -0
  307. package/validation/rules/NoUnusedFragmentsRule.mjs +52 -0
  308. package/validation/rules/NoUnusedVariablesRule.d.ts +13 -0
  309. package/validation/rules/NoUnusedVariablesRule.js +55 -0
  310. package/validation/rules/NoUnusedVariablesRule.mjs +48 -0
  311. package/validation/rules/OverlappingFieldsCanBeMergedRule-old.js +805 -0
  312. package/validation/rules/OverlappingFieldsCanBeMergedRule-old.mjs +788 -0
  313. package/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +14 -0
  314. package/validation/rules/OverlappingFieldsCanBeMergedRule.js +805 -0
  315. package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +788 -0
  316. package/validation/rules/PossibleFragmentSpreadsRule.d.ts +12 -0
  317. package/validation/rules/PossibleFragmentSpreadsRule.js +91 -0
  318. package/validation/rules/PossibleFragmentSpreadsRule.mjs +69 -0
  319. package/validation/rules/PossibleTypeExtensionsRule.d.ts +10 -0
  320. package/validation/rules/PossibleTypeExtensionsRule.js +167 -0
  321. package/validation/rules/PossibleTypeExtensionsRule.mjs +147 -0
  322. package/validation/rules/ProvidedRequiredArgumentsRule.d.ts +20 -0
  323. package/validation/rules/ProvidedRequiredArgumentsRule.js +158 -0
  324. package/validation/rules/ProvidedRequiredArgumentsRule.mjs +138 -0
  325. package/validation/rules/ScalarLeafsRule.d.ts +9 -0
  326. package/validation/rules/ScalarLeafsRule.js +51 -0
  327. package/validation/rules/ScalarLeafsRule.mjs +42 -0
  328. package/validation/rules/SingleFieldSubscriptionsRule.d.ts +13 -0
  329. package/validation/rules/SingleFieldSubscriptionsRule.js +82 -0
  330. package/validation/rules/SingleFieldSubscriptionsRule.mjs +73 -0
  331. package/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts +11 -0
  332. package/validation/rules/UniqueArgumentDefinitionNamesRule.js +90 -0
  333. package/validation/rules/UniqueArgumentDefinitionNamesRule.mjs +79 -0
  334. package/validation/rules/UniqueArgumentNamesRule.d.ts +13 -0
  335. package/validation/rules/UniqueArgumentNamesRule.js +53 -0
  336. package/validation/rules/UniqueArgumentNamesRule.mjs +42 -0
  337. package/validation/rules/UniqueDirectiveNamesRule.d.ts +10 -0
  338. package/validation/rules/UniqueDirectiveNamesRule.js +50 -0
  339. package/validation/rules/UniqueDirectiveNamesRule.mjs +43 -0
  340. package/validation/rules/UniqueDirectivesPerLocationRule.d.ts +16 -0
  341. package/validation/rules/UniqueDirectivesPerLocationRule.js +93 -0
  342. package/validation/rules/UniqueDirectivesPerLocationRule.mjs +83 -0
  343. package/validation/rules/UniqueEnumValueNamesRule.d.ts +10 -0
  344. package/validation/rules/UniqueEnumValueNamesRule.js +71 -0
  345. package/validation/rules/UniqueEnumValueNamesRule.mjs +60 -0
  346. package/validation/rules/UniqueFieldDefinitionNamesRule.d.ts +10 -0
  347. package/validation/rules/UniqueFieldDefinitionNamesRule.js +83 -0
  348. package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +75 -0
  349. package/validation/rules/UniqueFragmentNamesRule.d.ts +12 -0
  350. package/validation/rules/UniqueFragmentNamesRule.js +39 -0
  351. package/validation/rules/UniqueFragmentNamesRule.mjs +32 -0
  352. package/validation/rules/UniqueInputFieldNamesRule.d.ts +13 -0
  353. package/validation/rules/UniqueInputFieldNamesRule.js +52 -0
  354. package/validation/rules/UniqueInputFieldNamesRule.mjs +44 -0
  355. package/validation/rules/UniqueOperationNamesRule.d.ts +12 -0
  356. package/validation/rules/UniqueOperationNamesRule.js +41 -0
  357. package/validation/rules/UniqueOperationNamesRule.mjs +34 -0
  358. package/validation/rules/UniqueOperationTypesRule.d.ts +10 -0
  359. package/validation/rules/UniqueOperationTypesRule.js +67 -0
  360. package/validation/rules/UniqueOperationTypesRule.mjs +60 -0
  361. package/validation/rules/UniqueTypeNamesRule.d.ts +10 -0
  362. package/validation/rules/UniqueTypeNamesRule.js +53 -0
  363. package/validation/rules/UniqueTypeNamesRule.mjs +46 -0
  364. package/validation/rules/UniqueVariableNamesRule.d.ts +10 -0
  365. package/validation/rules/UniqueVariableNamesRule.js +47 -0
  366. package/validation/rules/UniqueVariableNamesRule.mjs +39 -0
  367. package/validation/rules/ValuesOfCorrectTypeRule.d.ts +13 -0
  368. package/validation/rules/ValuesOfCorrectTypeRule.js +183 -0
  369. package/validation/rules/ValuesOfCorrectTypeRule.mjs +164 -0
  370. package/validation/rules/VariablesAreInputTypesRule.d.ts +13 -0
  371. package/validation/rules/VariablesAreInputTypesRule.js +44 -0
  372. package/validation/rules/VariablesAreInputTypesRule.mjs +31 -0
  373. package/validation/rules/VariablesInAllowedPositionRule.d.ts +12 -0
  374. package/validation/rules/VariablesInAllowedPositionRule.js +114 -0
  375. package/validation/rules/VariablesInAllowedPositionRule.mjs +95 -0
  376. package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +15 -0
  377. package/validation/rules/custom/NoDeprecatedCustomRule.js +121 -0
  378. package/validation/rules/custom/NoDeprecatedCustomRule.mjs +107 -0
  379. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +15 -0
  380. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +39 -0
  381. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs +30 -0
  382. package/validation/specifiedRules.d.ts +12 -0
  383. package/validation/specifiedRules.js +160 -0
  384. package/validation/specifiedRules.mjs +123 -0
  385. package/validation/validate.d.ts +61 -0
  386. package/validation/validate.js +151 -0
  387. package/validation/validate.mjs +133 -0
  388. package/version.d.ts +13 -0
  389. package/version.js +25 -0
  390. package/version.mjs +17 -0
@@ -0,0 +1,395 @@
1
+ import { isNode } from '../language/ast.mjs';
2
+ import { Kind } from '../language/kinds.mjs';
3
+ import { getEnterLeaveForKind } from '../language/visitor.mjs';
4
+ import {
5
+ getNamedType,
6
+ getNullableType,
7
+ isCompositeType,
8
+ isEnumType,
9
+ isInputObjectType,
10
+ isInputType,
11
+ isInterfaceType,
12
+ isListType,
13
+ isObjectType,
14
+ isOutputType,
15
+ } from '../type/definition.mjs';
16
+ import {
17
+ SchemaMetaFieldDef,
18
+ TypeMetaFieldDef,
19
+ TypeNameMetaFieldDef,
20
+ } from '../type/introspection.mjs';
21
+ import { typeFromAST } from './typeFromAST.mjs';
22
+ /**
23
+ * TypeInfo is a utility class which, given a GraphQL schema, can keep track
24
+ * of the current field and type definitions at any point in a GraphQL document
25
+ * AST during a recursive descent by calling `enter(node)` and `leave(node)`.
26
+ */
27
+
28
+ export class TypeInfo {
29
+ constructor(
30
+ schema,
31
+ /**
32
+ * Initial type may be provided in rare cases to facilitate traversals
33
+ * beginning somewhere other than documents.
34
+ */
35
+ initialType,
36
+ /** @deprecated will be removed in 17.0.0 */
37
+ getFieldDefFn,
38
+ ) {
39
+ this._schema = schema;
40
+ this._typeStack = [];
41
+ this._parentTypeStack = [];
42
+ this._inputTypeStack = [];
43
+ this._fieldDefStack = [];
44
+ this._defaultValueStack = [];
45
+ this._directive = null;
46
+ this._argument = null;
47
+ this._enumValue = null;
48
+ this._getFieldDef =
49
+ getFieldDefFn !== null && getFieldDefFn !== void 0
50
+ ? getFieldDefFn
51
+ : getFieldDef;
52
+
53
+ if (initialType) {
54
+ if (isInputType(initialType)) {
55
+ this._inputTypeStack.push(initialType);
56
+ }
57
+
58
+ if (isCompositeType(initialType)) {
59
+ this._parentTypeStack.push(initialType);
60
+ }
61
+
62
+ if (isOutputType(initialType)) {
63
+ this._typeStack.push(initialType);
64
+ }
65
+ }
66
+ }
67
+
68
+ get [Symbol.toStringTag]() {
69
+ return 'TypeInfo';
70
+ }
71
+
72
+ getType() {
73
+ if (this._typeStack.length > 0) {
74
+ return this._typeStack[this._typeStack.length - 1];
75
+ }
76
+ }
77
+
78
+ getParentType() {
79
+ if (this._parentTypeStack.length > 0) {
80
+ return this._parentTypeStack[this._parentTypeStack.length - 1];
81
+ }
82
+ }
83
+
84
+ getInputType() {
85
+ if (this._inputTypeStack.length > 0) {
86
+ return this._inputTypeStack[this._inputTypeStack.length - 1];
87
+ }
88
+ }
89
+
90
+ getParentInputType() {
91
+ if (this._inputTypeStack.length > 1) {
92
+ return this._inputTypeStack[this._inputTypeStack.length - 2];
93
+ }
94
+ }
95
+
96
+ getFieldDef() {
97
+ if (this._fieldDefStack.length > 0) {
98
+ return this._fieldDefStack[this._fieldDefStack.length - 1];
99
+ }
100
+ }
101
+
102
+ getDefaultValue() {
103
+ if (this._defaultValueStack.length > 0) {
104
+ return this._defaultValueStack[this._defaultValueStack.length - 1];
105
+ }
106
+ }
107
+
108
+ getDirective() {
109
+ return this._directive;
110
+ }
111
+
112
+ getArgument() {
113
+ return this._argument;
114
+ }
115
+
116
+ getEnumValue() {
117
+ return this._enumValue;
118
+ }
119
+
120
+ enter(node) {
121
+ const schema = this._schema; // Note: many of the types below are explicitly typed as "unknown" to drop
122
+ // any assumptions of a valid schema to ensure runtime types are properly
123
+ // checked before continuing since TypeInfo is used as part of validation
124
+ // which occurs before guarantees of schema and document validity.
125
+
126
+ switch (node.kind) {
127
+ case Kind.SELECTION_SET: {
128
+ const namedType = getNamedType(this.getType());
129
+
130
+ this._parentTypeStack.push(
131
+ isCompositeType(namedType) ? namedType : undefined,
132
+ );
133
+
134
+ break;
135
+ }
136
+
137
+ case Kind.FIELD: {
138
+ const parentType = this.getParentType();
139
+ let fieldDef;
140
+ let fieldType;
141
+
142
+ if (parentType) {
143
+ fieldDef = this._getFieldDef(schema, parentType, node);
144
+
145
+ if (fieldDef) {
146
+ fieldType = fieldDef.type;
147
+ }
148
+ }
149
+
150
+ this._fieldDefStack.push(fieldDef);
151
+
152
+ this._typeStack.push(isOutputType(fieldType) ? fieldType : undefined);
153
+
154
+ break;
155
+ }
156
+
157
+ case Kind.DIRECTIVE:
158
+ this._directive = schema.getDirective(node.name.value);
159
+ break;
160
+
161
+ case Kind.OPERATION_DEFINITION: {
162
+ const rootType = schema.getRootType(node.operation);
163
+
164
+ this._typeStack.push(isObjectType(rootType) ? rootType : undefined);
165
+
166
+ break;
167
+ }
168
+
169
+ case Kind.INLINE_FRAGMENT:
170
+ case Kind.FRAGMENT_DEFINITION: {
171
+ const typeConditionAST = node.typeCondition;
172
+ const outputType = typeConditionAST
173
+ ? typeFromAST(schema, typeConditionAST)
174
+ : getNamedType(this.getType());
175
+
176
+ this._typeStack.push(isOutputType(outputType) ? outputType : undefined);
177
+
178
+ break;
179
+ }
180
+
181
+ case Kind.VARIABLE_DEFINITION: {
182
+ const inputType = typeFromAST(schema, node.type);
183
+
184
+ this._inputTypeStack.push(
185
+ isInputType(inputType) ? inputType : undefined,
186
+ );
187
+
188
+ break;
189
+ }
190
+
191
+ case Kind.ARGUMENT: {
192
+ var _this$getDirective;
193
+
194
+ let argDef;
195
+ let argType;
196
+ const fieldOrDirective =
197
+ (_this$getDirective = this.getDirective()) !== null &&
198
+ _this$getDirective !== void 0
199
+ ? _this$getDirective
200
+ : this.getFieldDef();
201
+
202
+ if (fieldOrDirective) {
203
+ argDef = fieldOrDirective.args.find(
204
+ (arg) => arg.name === node.name.value,
205
+ );
206
+
207
+ if (argDef) {
208
+ argType = argDef.type;
209
+ }
210
+ }
211
+
212
+ this._argument = argDef;
213
+
214
+ this._defaultValueStack.push(argDef ? argDef.defaultValue : undefined);
215
+
216
+ this._inputTypeStack.push(isInputType(argType) ? argType : undefined);
217
+
218
+ break;
219
+ }
220
+
221
+ case Kind.LIST: {
222
+ const listType = getNullableType(this.getInputType());
223
+ const itemType = isListType(listType) ? listType.ofType : listType; // List positions never have a default value.
224
+
225
+ this._defaultValueStack.push(undefined);
226
+
227
+ this._inputTypeStack.push(isInputType(itemType) ? itemType : undefined);
228
+
229
+ break;
230
+ }
231
+
232
+ case Kind.OBJECT_FIELD: {
233
+ const objectType = getNamedType(this.getInputType());
234
+ let inputFieldType;
235
+ let inputField;
236
+
237
+ if (isInputObjectType(objectType)) {
238
+ inputField = objectType.getFields()[node.name.value];
239
+
240
+ if (inputField) {
241
+ inputFieldType = inputField.type;
242
+ }
243
+ }
244
+
245
+ this._defaultValueStack.push(
246
+ inputField ? inputField.defaultValue : undefined,
247
+ );
248
+
249
+ this._inputTypeStack.push(
250
+ isInputType(inputFieldType) ? inputFieldType : undefined,
251
+ );
252
+
253
+ break;
254
+ }
255
+
256
+ case Kind.ENUM: {
257
+ const enumType = getNamedType(this.getInputType());
258
+ let enumValue;
259
+
260
+ if (isEnumType(enumType)) {
261
+ enumValue = enumType.getValue(node.value);
262
+ }
263
+
264
+ this._enumValue = enumValue;
265
+ break;
266
+ }
267
+
268
+ default: // Ignore other nodes
269
+ }
270
+ }
271
+
272
+ leave(node) {
273
+ switch (node.kind) {
274
+ case Kind.SELECTION_SET:
275
+ this._parentTypeStack.pop();
276
+
277
+ break;
278
+
279
+ case Kind.FIELD:
280
+ this._fieldDefStack.pop();
281
+
282
+ this._typeStack.pop();
283
+
284
+ break;
285
+
286
+ case Kind.DIRECTIVE:
287
+ this._directive = null;
288
+ break;
289
+
290
+ case Kind.OPERATION_DEFINITION:
291
+ case Kind.INLINE_FRAGMENT:
292
+ case Kind.FRAGMENT_DEFINITION:
293
+ this._typeStack.pop();
294
+
295
+ break;
296
+
297
+ case Kind.VARIABLE_DEFINITION:
298
+ this._inputTypeStack.pop();
299
+
300
+ break;
301
+
302
+ case Kind.ARGUMENT:
303
+ this._argument = null;
304
+
305
+ this._defaultValueStack.pop();
306
+
307
+ this._inputTypeStack.pop();
308
+
309
+ break;
310
+
311
+ case Kind.LIST:
312
+ case Kind.OBJECT_FIELD:
313
+ this._defaultValueStack.pop();
314
+
315
+ this._inputTypeStack.pop();
316
+
317
+ break;
318
+
319
+ case Kind.ENUM:
320
+ this._enumValue = null;
321
+ break;
322
+
323
+ default: // Ignore other nodes
324
+ }
325
+ }
326
+ }
327
+
328
+ /**
329
+ * Not exactly the same as the executor's definition of getFieldDef, in this
330
+ * statically evaluated environment we do not always have an Object type,
331
+ * and need to handle Interface and Union types.
332
+ */
333
+ function getFieldDef(schema, parentType, fieldNode) {
334
+ const name = fieldNode.name.value;
335
+
336
+ if (
337
+ name === SchemaMetaFieldDef.name &&
338
+ schema.getQueryType() === parentType
339
+ ) {
340
+ return SchemaMetaFieldDef;
341
+ }
342
+
343
+ if (name === TypeMetaFieldDef.name && schema.getQueryType() === parentType) {
344
+ return TypeMetaFieldDef;
345
+ }
346
+
347
+ if (name === TypeNameMetaFieldDef.name && isCompositeType(parentType)) {
348
+ return TypeNameMetaFieldDef;
349
+ }
350
+
351
+ if (isObjectType(parentType) || isInterfaceType(parentType)) {
352
+ return parentType.getFields()[name];
353
+ }
354
+ }
355
+ /**
356
+ * Creates a new visitor instance which maintains a provided TypeInfo instance
357
+ * along with visiting visitor.
358
+ */
359
+
360
+ export function visitWithTypeInfo(typeInfo, visitor) {
361
+ return {
362
+ enter(...args) {
363
+ const node = args[0];
364
+ typeInfo.enter(node);
365
+ const fn = getEnterLeaveForKind(visitor, node.kind).enter;
366
+
367
+ if (fn) {
368
+ const result = fn.apply(visitor, args);
369
+
370
+ if (result !== undefined) {
371
+ typeInfo.leave(node);
372
+
373
+ if (isNode(result)) {
374
+ typeInfo.enter(result);
375
+ }
376
+ }
377
+
378
+ return result;
379
+ }
380
+ },
381
+
382
+ leave(...args) {
383
+ const node = args[0];
384
+ const fn = getEnterLeaveForKind(visitor, node.kind).leave;
385
+ let result;
386
+
387
+ if (fn) {
388
+ result = fn.apply(visitor, args);
389
+ }
390
+
391
+ typeInfo.leave(node);
392
+ return result;
393
+ },
394
+ };
395
+ }
@@ -0,0 +1,13 @@
1
+ import { GraphQLError } from '../error/GraphQLError';
2
+ /**
3
+ * Upholds the spec rules about naming.
4
+ * @deprecated Please use `assertName` instead. Will be removed in v17
5
+ */
6
+ export declare function assertValidName(name: string): string;
7
+ /**
8
+ * Returns an Error if a name is invalid.
9
+ * @deprecated Please use `assertName` instead. Will be removed in v17
10
+ */
11
+ export declare function isValidNameError(
12
+ name: string,
13
+ ): GraphQLError | undefined;
@@ -0,0 +1,51 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', {
4
+ value: true,
5
+ });
6
+ exports.assertValidName = assertValidName;
7
+ exports.isValidNameError = isValidNameError;
8
+
9
+ var _devAssert = require('../jsutils/devAssert.js');
10
+
11
+ var _GraphQLError = require('../error/GraphQLError.js');
12
+
13
+ var _assertName = require('../type/assertName.js');
14
+
15
+ /* c8 ignore start */
16
+
17
+ /**
18
+ * Upholds the spec rules about naming.
19
+ * @deprecated Please use `assertName` instead. Will be removed in v17
20
+ */
21
+ function assertValidName(name) {
22
+ const error = isValidNameError(name);
23
+
24
+ if (error) {
25
+ throw error;
26
+ }
27
+
28
+ return name;
29
+ }
30
+ /**
31
+ * Returns an Error if a name is invalid.
32
+ * @deprecated Please use `assertName` instead. Will be removed in v17
33
+ */
34
+
35
+ function isValidNameError(name) {
36
+ typeof name === 'string' ||
37
+ (0, _devAssert.devAssert)(false, 'Expected name to be a string.');
38
+
39
+ if (name.startsWith('__')) {
40
+ return new _GraphQLError.GraphQLError(
41
+ `Name "${name}" must not begin with "__", which is reserved by GraphQL introspection.`,
42
+ );
43
+ }
44
+
45
+ try {
46
+ (0, _assertName.assertName)(name);
47
+ } catch (error) {
48
+ return error;
49
+ }
50
+ }
51
+ /* c8 ignore stop */
@@ -0,0 +1,40 @@
1
+ import { devAssert } from '../jsutils/devAssert.mjs';
2
+ import { GraphQLError } from '../error/GraphQLError.mjs';
3
+ import { assertName } from '../type/assertName.mjs';
4
+ /* c8 ignore start */
5
+
6
+ /**
7
+ * Upholds the spec rules about naming.
8
+ * @deprecated Please use `assertName` instead. Will be removed in v17
9
+ */
10
+
11
+ export function assertValidName(name) {
12
+ const error = isValidNameError(name);
13
+
14
+ if (error) {
15
+ throw error;
16
+ }
17
+
18
+ return name;
19
+ }
20
+ /**
21
+ * Returns an Error if a name is invalid.
22
+ * @deprecated Please use `assertName` instead. Will be removed in v17
23
+ */
24
+
25
+ export function isValidNameError(name) {
26
+ typeof name === 'string' || devAssert(false, 'Expected name to be a string.');
27
+
28
+ if (name.startsWith('__')) {
29
+ return new GraphQLError(
30
+ `Name "${name}" must not begin with "__", which is reserved by GraphQL introspection.`,
31
+ );
32
+ }
33
+
34
+ try {
35
+ assertName(name);
36
+ } catch (error) {
37
+ return error;
38
+ }
39
+ }
40
+ /* c8 ignore stop */
@@ -0,0 +1,28 @@
1
+ import type { Maybe } from '../jsutils/Maybe';
2
+ import type { ValueNode } from '../language/ast';
3
+ import type { GraphQLInputType } from '../type/definition';
4
+ /**
5
+ * Produces a GraphQL Value AST given a JavaScript object.
6
+ * Function will match JavaScript/JSON values to GraphQL AST schema format
7
+ * by using suggested GraphQLInputType. For example:
8
+ *
9
+ * astFromValue("value", GraphQLString)
10
+ *
11
+ * A GraphQL type must be provided, which will be used to interpret different
12
+ * JavaScript values.
13
+ *
14
+ * | JSON Value | GraphQL Value |
15
+ * | ------------- | -------------------- |
16
+ * | Object | Input Object |
17
+ * | Array | List |
18
+ * | Boolean | Boolean |
19
+ * | String | String / Enum Value |
20
+ * | Number | Int / Float |
21
+ * | Unknown | Enum Value |
22
+ * | null | NullValue |
23
+ *
24
+ */
25
+ export declare function astFromValue(
26
+ value: unknown,
27
+ type: GraphQLInputType,
28
+ ): Maybe<ValueNode>;
@@ -0,0 +1,190 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', {
4
+ value: true,
5
+ });
6
+ exports.astFromValue = astFromValue;
7
+
8
+ var _inspect = require('../jsutils/inspect.js');
9
+
10
+ var _invariant = require('../jsutils/invariant.js');
11
+
12
+ var _isIterableObject = require('../jsutils/isIterableObject.js');
13
+
14
+ var _isObjectLike = require('../jsutils/isObjectLike.js');
15
+
16
+ var _kinds = require('../language/kinds.js');
17
+
18
+ var _definition = require('../type/definition.js');
19
+
20
+ var _scalars = require('../type/scalars.js');
21
+
22
+ /**
23
+ * Produces a GraphQL Value AST given a JavaScript object.
24
+ * Function will match JavaScript/JSON values to GraphQL AST schema format
25
+ * by using suggested GraphQLInputType. For example:
26
+ *
27
+ * astFromValue("value", GraphQLString)
28
+ *
29
+ * A GraphQL type must be provided, which will be used to interpret different
30
+ * JavaScript values.
31
+ *
32
+ * | JSON Value | GraphQL Value |
33
+ * | ------------- | -------------------- |
34
+ * | Object | Input Object |
35
+ * | Array | List |
36
+ * | Boolean | Boolean |
37
+ * | String | String / Enum Value |
38
+ * | Number | Int / Float |
39
+ * | Unknown | Enum Value |
40
+ * | null | NullValue |
41
+ *
42
+ */
43
+ function astFromValue(value, type) {
44
+ if ((0, _definition.isNonNullType)(type)) {
45
+ const astValue = astFromValue(value, type.ofType);
46
+
47
+ if (
48
+ (astValue === null || astValue === void 0 ? void 0 : astValue.kind) ===
49
+ _kinds.Kind.NULL
50
+ ) {
51
+ return null;
52
+ }
53
+
54
+ return astValue;
55
+ } // only explicit null, not undefined, NaN
56
+
57
+ if (value === null) {
58
+ return {
59
+ kind: _kinds.Kind.NULL,
60
+ };
61
+ } // undefined
62
+
63
+ if (value === undefined) {
64
+ return null;
65
+ } // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but
66
+ // the value is not an array, convert the value using the list's item type.
67
+
68
+ if ((0, _definition.isListType)(type)) {
69
+ const itemType = type.ofType;
70
+
71
+ if ((0, _isIterableObject.isIterableObject)(value)) {
72
+ const valuesNodes = [];
73
+
74
+ for (const item of value) {
75
+ const itemNode = astFromValue(item, itemType);
76
+
77
+ if (itemNode != null) {
78
+ valuesNodes.push(itemNode);
79
+ }
80
+ }
81
+
82
+ return {
83
+ kind: _kinds.Kind.LIST,
84
+ values: valuesNodes,
85
+ };
86
+ }
87
+
88
+ return astFromValue(value, itemType);
89
+ } // Populate the fields of the input object by creating ASTs from each value
90
+ // in the JavaScript object according to the fields in the input type.
91
+
92
+ if ((0, _definition.isInputObjectType)(type)) {
93
+ if (!(0, _isObjectLike.isObjectLike)(value)) {
94
+ return null;
95
+ }
96
+
97
+ const fieldNodes = [];
98
+
99
+ for (const field of Object.values(type.getFields())) {
100
+ const fieldValue = astFromValue(value[field.name], field.type);
101
+
102
+ if (fieldValue) {
103
+ fieldNodes.push({
104
+ kind: _kinds.Kind.OBJECT_FIELD,
105
+ name: {
106
+ kind: _kinds.Kind.NAME,
107
+ value: field.name,
108
+ },
109
+ value: fieldValue,
110
+ });
111
+ }
112
+ }
113
+
114
+ return {
115
+ kind: _kinds.Kind.OBJECT,
116
+ fields: fieldNodes,
117
+ };
118
+ }
119
+
120
+ if ((0, _definition.isLeafType)(type)) {
121
+ // Since value is an internally represented value, it must be serialized
122
+ // to an externally represented value before converting into an AST.
123
+ const serialized = type.serialize(value);
124
+
125
+ if (serialized == null) {
126
+ return null;
127
+ } // Others serialize based on their corresponding JavaScript scalar types.
128
+
129
+ if (typeof serialized === 'boolean') {
130
+ return {
131
+ kind: _kinds.Kind.BOOLEAN,
132
+ value: serialized,
133
+ };
134
+ } // JavaScript numbers can be Int or Float values.
135
+
136
+ if (typeof serialized === 'number' && Number.isFinite(serialized)) {
137
+ const stringNum = String(serialized);
138
+ return integerStringRegExp.test(stringNum)
139
+ ? {
140
+ kind: _kinds.Kind.INT,
141
+ value: stringNum,
142
+ }
143
+ : {
144
+ kind: _kinds.Kind.FLOAT,
145
+ value: stringNum,
146
+ };
147
+ }
148
+
149
+ if (typeof serialized === 'string') {
150
+ // Enum types use Enum literals.
151
+ if ((0, _definition.isEnumType)(type)) {
152
+ return {
153
+ kind: _kinds.Kind.ENUM,
154
+ value: serialized,
155
+ };
156
+ } // ID types can use Int literals.
157
+
158
+ if (type === _scalars.GraphQLID && integerStringRegExp.test(serialized)) {
159
+ return {
160
+ kind: _kinds.Kind.INT,
161
+ value: serialized,
162
+ };
163
+ }
164
+
165
+ return {
166
+ kind: _kinds.Kind.STRING,
167
+ value: serialized,
168
+ };
169
+ }
170
+
171
+ throw new TypeError(
172
+ `Cannot convert value to AST: ${(0, _inspect.inspect)(serialized)}.`,
173
+ );
174
+ }
175
+ /* c8 ignore next 3 */
176
+ // Not reachable, all possible types have been considered.
177
+
178
+ false ||
179
+ (0, _invariant.invariant)(
180
+ false,
181
+ 'Unexpected input type: ' + (0, _inspect.inspect)(type),
182
+ );
183
+ }
184
+ /**
185
+ * IntValue:
186
+ * - NegativeSign? 0
187
+ * - NegativeSign? NonZeroDigit ( Digit+ )?
188
+ */
189
+
190
+ const integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;