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,194 @@
1
+ import type { ASTNode } from './ast';
2
+ import { Kind } from './kinds';
3
+ /**
4
+ * A visitor is provided to visit, it contains the collection of
5
+ * relevant functions to be called during the visitor's traversal.
6
+ */
7
+ export declare type ASTVisitor = EnterLeaveVisitor<ASTNode> | KindVisitor;
8
+ declare type KindVisitor = {
9
+ readonly [NodeT in ASTNode as NodeT['kind']]?:
10
+ | ASTVisitFn<NodeT>
11
+ | EnterLeaveVisitor<NodeT>;
12
+ };
13
+ interface EnterLeaveVisitor<TVisitedNode extends ASTNode> {
14
+ readonly enter?: ASTVisitFn<TVisitedNode>;
15
+ readonly leave?: ASTVisitFn<TVisitedNode>;
16
+ }
17
+ /**
18
+ * A visitor is comprised of visit functions, which are called on each node
19
+ * during the visitor's traversal.
20
+ */
21
+ export declare type ASTVisitFn<TVisitedNode extends ASTNode> = (
22
+ /** The current node being visiting. */
23
+ node: TVisitedNode,
24
+ /** The index or key to this node from the parent node or Array. */
25
+ key: string | number | undefined,
26
+ /** The parent immediately above this node, which may be an Array. */
27
+ parent: ASTNode | ReadonlyArray<ASTNode> | undefined,
28
+ /** The key path to get to this node from the root node. */
29
+ path: ReadonlyArray<string | number>,
30
+ /**
31
+ * All nodes and Arrays visited before reaching parent of this node.
32
+ * These correspond to array indices in `path`.
33
+ * Note: ancestors includes arrays which contain the parent of visited node.
34
+ */
35
+ ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>,
36
+ ) => any;
37
+ /**
38
+ * A reducer is comprised of reducer functions which convert AST nodes into
39
+ * another form.
40
+ */
41
+ export declare type ASTReducer<R> = {
42
+ readonly [NodeT in ASTNode as NodeT['kind']]?: {
43
+ readonly enter?: ASTVisitFn<NodeT>;
44
+ readonly leave: ASTReducerFn<NodeT, R>;
45
+ };
46
+ };
47
+ declare type ASTReducerFn<TReducedNode extends ASTNode, R> = (
48
+ /** The current node being visiting. */
49
+ node: {
50
+ [K in keyof TReducedNode]: ReducedField<TReducedNode[K], R>;
51
+ },
52
+ /** The index or key to this node from the parent node or Array. */
53
+ key: string | number | undefined,
54
+ /** The parent immediately above this node, which may be an Array. */
55
+ parent: ASTNode | ReadonlyArray<ASTNode> | undefined,
56
+ /** The key path to get to this node from the root node. */
57
+ path: ReadonlyArray<string | number>,
58
+ /**
59
+ * All nodes and Arrays visited before reaching parent of this node.
60
+ * These correspond to array indices in `path`.
61
+ * Note: ancestors includes arrays which contain the parent of visited node.
62
+ */
63
+ ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>,
64
+ ) => R;
65
+ declare type ReducedField<T, R> = T extends null | undefined
66
+ ? T
67
+ : T extends ReadonlyArray<any>
68
+ ? ReadonlyArray<R>
69
+ : R;
70
+ /**
71
+ * A KeyMap describes each the traversable properties of each kind of node.
72
+ *
73
+ * @deprecated Please inline it. Will be removed in v17
74
+ */
75
+ export declare type ASTVisitorKeyMap = {
76
+ [NodeT in ASTNode as NodeT['kind']]?: ReadonlyArray<keyof NodeT>;
77
+ };
78
+ export declare const BREAK: unknown;
79
+ /**
80
+ * visit() will walk through an AST using a depth-first traversal, calling
81
+ * the visitor's enter function at each node in the traversal, and calling the
82
+ * leave function after visiting that node and all of its child nodes.
83
+ *
84
+ * By returning different values from the enter and leave functions, the
85
+ * behavior of the visitor can be altered, including skipping over a sub-tree of
86
+ * the AST (by returning false), editing the AST by returning a value or null
87
+ * to remove the value, or to stop the whole traversal by returning BREAK.
88
+ *
89
+ * When using visit() to edit an AST, the original AST will not be modified, and
90
+ * a new version of the AST with the changes applied will be returned from the
91
+ * visit function.
92
+ *
93
+ * ```ts
94
+ * const editedAST = visit(ast, {
95
+ * enter(node, key, parent, path, ancestors) {
96
+ * // @return
97
+ * // undefined: no action
98
+ * // false: skip visiting this node
99
+ * // visitor.BREAK: stop visiting altogether
100
+ * // null: delete this node
101
+ * // any value: replace this node with the returned value
102
+ * },
103
+ * leave(node, key, parent, path, ancestors) {
104
+ * // @return
105
+ * // undefined: no action
106
+ * // false: no action
107
+ * // visitor.BREAK: stop visiting altogether
108
+ * // null: delete this node
109
+ * // any value: replace this node with the returned value
110
+ * }
111
+ * });
112
+ * ```
113
+ *
114
+ * Alternatively to providing enter() and leave() functions, a visitor can
115
+ * instead provide functions named the same as the kinds of AST nodes, or
116
+ * enter/leave visitors at a named key, leading to three permutations of the
117
+ * visitor API:
118
+ *
119
+ * 1) Named visitors triggered when entering a node of a specific kind.
120
+ *
121
+ * ```ts
122
+ * visit(ast, {
123
+ * Kind(node) {
124
+ * // enter the "Kind" node
125
+ * }
126
+ * })
127
+ * ```
128
+ *
129
+ * 2) Named visitors that trigger upon entering and leaving a node of a specific kind.
130
+ *
131
+ * ```ts
132
+ * visit(ast, {
133
+ * Kind: {
134
+ * enter(node) {
135
+ * // enter the "Kind" node
136
+ * }
137
+ * leave(node) {
138
+ * // leave the "Kind" node
139
+ * }
140
+ * }
141
+ * })
142
+ * ```
143
+ *
144
+ * 3) Generic visitors that trigger upon entering and leaving any node.
145
+ *
146
+ * ```ts
147
+ * visit(ast, {
148
+ * enter(node) {
149
+ * // enter any node
150
+ * },
151
+ * leave(node) {
152
+ * // leave any node
153
+ * }
154
+ * })
155
+ * ```
156
+ */
157
+ export declare function visit<N extends ASTNode>(
158
+ root: N,
159
+ visitor: ASTVisitor,
160
+ visitorKeys?: ASTVisitorKeyMap,
161
+ ): N;
162
+ export declare function visit<R>(
163
+ root: ASTNode,
164
+ visitor: ASTReducer<R>,
165
+ visitorKeys?: ASTVisitorKeyMap,
166
+ ): R;
167
+ /**
168
+ * Creates a new visitor instance which delegates to many visitors to run in
169
+ * parallel. Each visitor will be visited for each node before moving on.
170
+ *
171
+ * If a prior visitor edits a node, no following visitors will see that node.
172
+ */
173
+ export declare function visitInParallel(
174
+ visitors: ReadonlyArray<ASTVisitor>,
175
+ ): ASTVisitor;
176
+ /**
177
+ * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.
178
+ */
179
+ export declare function getEnterLeaveForKind(
180
+ visitor: ASTVisitor,
181
+ kind: Kind,
182
+ ): EnterLeaveVisitor<ASTNode>;
183
+ /**
184
+ * Given a visitor instance, if it is leaving or not, and a node kind, return
185
+ * the function the visitor runtime should call.
186
+ *
187
+ * @deprecated Please use `getEnterLeaveForKind` instead. Will be removed in v17
188
+ */
189
+ export declare function getVisitFn(
190
+ visitor: ASTVisitor,
191
+ kind: Kind,
192
+ isLeaving: boolean,
193
+ ): ASTVisitFn<ASTNode> | undefined;
194
+ export {};
@@ -0,0 +1,377 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', {
4
+ value: true,
5
+ });
6
+ exports.BREAK = void 0;
7
+ exports.getEnterLeaveForKind = getEnterLeaveForKind;
8
+ exports.getVisitFn = getVisitFn;
9
+ exports.visit = visit;
10
+ exports.visitInParallel = visitInParallel;
11
+
12
+ var _devAssert = require('../jsutils/devAssert.js');
13
+
14
+ var _inspect = require('../jsutils/inspect.js');
15
+
16
+ var _ast = require('./ast.js');
17
+
18
+ var _kinds = require('./kinds.js');
19
+
20
+ const BREAK = Object.freeze({});
21
+ /**
22
+ * visit() will walk through an AST using a depth-first traversal, calling
23
+ * the visitor's enter function at each node in the traversal, and calling the
24
+ * leave function after visiting that node and all of its child nodes.
25
+ *
26
+ * By returning different values from the enter and leave functions, the
27
+ * behavior of the visitor can be altered, including skipping over a sub-tree of
28
+ * the AST (by returning false), editing the AST by returning a value or null
29
+ * to remove the value, or to stop the whole traversal by returning BREAK.
30
+ *
31
+ * When using visit() to edit an AST, the original AST will not be modified, and
32
+ * a new version of the AST with the changes applied will be returned from the
33
+ * visit function.
34
+ *
35
+ * ```ts
36
+ * const editedAST = visit(ast, {
37
+ * enter(node, key, parent, path, ancestors) {
38
+ * // @return
39
+ * // undefined: no action
40
+ * // false: skip visiting this node
41
+ * // visitor.BREAK: stop visiting altogether
42
+ * // null: delete this node
43
+ * // any value: replace this node with the returned value
44
+ * },
45
+ * leave(node, key, parent, path, ancestors) {
46
+ * // @return
47
+ * // undefined: no action
48
+ * // false: no action
49
+ * // visitor.BREAK: stop visiting altogether
50
+ * // null: delete this node
51
+ * // any value: replace this node with the returned value
52
+ * }
53
+ * });
54
+ * ```
55
+ *
56
+ * Alternatively to providing enter() and leave() functions, a visitor can
57
+ * instead provide functions named the same as the kinds of AST nodes, or
58
+ * enter/leave visitors at a named key, leading to three permutations of the
59
+ * visitor API:
60
+ *
61
+ * 1) Named visitors triggered when entering a node of a specific kind.
62
+ *
63
+ * ```ts
64
+ * visit(ast, {
65
+ * Kind(node) {
66
+ * // enter the "Kind" node
67
+ * }
68
+ * })
69
+ * ```
70
+ *
71
+ * 2) Named visitors that trigger upon entering and leaving a node of a specific kind.
72
+ *
73
+ * ```ts
74
+ * visit(ast, {
75
+ * Kind: {
76
+ * enter(node) {
77
+ * // enter the "Kind" node
78
+ * }
79
+ * leave(node) {
80
+ * // leave the "Kind" node
81
+ * }
82
+ * }
83
+ * })
84
+ * ```
85
+ *
86
+ * 3) Generic visitors that trigger upon entering and leaving any node.
87
+ *
88
+ * ```ts
89
+ * visit(ast, {
90
+ * enter(node) {
91
+ * // enter any node
92
+ * },
93
+ * leave(node) {
94
+ * // leave any node
95
+ * }
96
+ * })
97
+ * ```
98
+ */
99
+
100
+ exports.BREAK = BREAK;
101
+
102
+ function visit(root, visitor, visitorKeys = _ast.QueryDocumentKeys) {
103
+ const enterLeaveMap = new Map();
104
+
105
+ for (const kind of Object.values(_kinds.Kind)) {
106
+ enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));
107
+ }
108
+ /* eslint-disable no-undef-init */
109
+
110
+ let stack = undefined;
111
+ let inArray = Array.isArray(root);
112
+ let keys = [root];
113
+ let index = -1;
114
+ let edits = [];
115
+ let node = root;
116
+ let key = undefined;
117
+ let parent = undefined;
118
+ const path = [];
119
+ const ancestors = [];
120
+ /* eslint-enable no-undef-init */
121
+
122
+ do {
123
+ index++;
124
+ const isLeaving = index === keys.length;
125
+ const isEdited = isLeaving && edits.length !== 0;
126
+
127
+ if (isLeaving) {
128
+ key = ancestors.length === 0 ? undefined : path[path.length - 1];
129
+ node = parent;
130
+ parent = ancestors.pop();
131
+
132
+ if (isEdited) {
133
+ if (inArray) {
134
+ node = node.slice();
135
+ let editOffset = 0;
136
+
137
+ for (const [editKey, editValue] of edits) {
138
+ const arrayKey = editKey - editOffset;
139
+
140
+ if (editValue === null) {
141
+ node.splice(arrayKey, 1);
142
+ editOffset++;
143
+ } else {
144
+ node[arrayKey] = editValue;
145
+ }
146
+ }
147
+ } else {
148
+ node = Object.defineProperties(
149
+ {},
150
+ Object.getOwnPropertyDescriptors(node),
151
+ );
152
+
153
+ for (const [editKey, editValue] of edits) {
154
+ node[editKey] = editValue;
155
+ }
156
+ }
157
+ }
158
+
159
+ index = stack.index;
160
+ keys = stack.keys;
161
+ edits = stack.edits;
162
+ inArray = stack.inArray;
163
+ stack = stack.prev;
164
+ } else if (parent) {
165
+ key = inArray ? index : keys[index];
166
+ node = parent[key];
167
+
168
+ if (node === null || node === undefined) {
169
+ continue;
170
+ }
171
+
172
+ path.push(key);
173
+ }
174
+
175
+ let result;
176
+
177
+ if (!Array.isArray(node)) {
178
+ var _enterLeaveMap$get, _enterLeaveMap$get2;
179
+
180
+ (0, _ast.isNode)(node) ||
181
+ (0, _devAssert.devAssert)(
182
+ false,
183
+ `Invalid AST Node: ${(0, _inspect.inspect)(node)}.`,
184
+ );
185
+ const visitFn = isLeaving
186
+ ? (_enterLeaveMap$get = enterLeaveMap.get(node.kind)) === null ||
187
+ _enterLeaveMap$get === void 0
188
+ ? void 0
189
+ : _enterLeaveMap$get.leave
190
+ : (_enterLeaveMap$get2 = enterLeaveMap.get(node.kind)) === null ||
191
+ _enterLeaveMap$get2 === void 0
192
+ ? void 0
193
+ : _enterLeaveMap$get2.enter;
194
+ result =
195
+ visitFn === null || visitFn === void 0
196
+ ? void 0
197
+ : visitFn.call(visitor, node, key, parent, path, ancestors);
198
+
199
+ if (result === BREAK) {
200
+ break;
201
+ }
202
+
203
+ if (result === false) {
204
+ if (!isLeaving) {
205
+ path.pop();
206
+ continue;
207
+ }
208
+ } else if (result !== undefined) {
209
+ edits.push([key, result]);
210
+
211
+ if (!isLeaving) {
212
+ if ((0, _ast.isNode)(result)) {
213
+ node = result;
214
+ } else {
215
+ path.pop();
216
+ continue;
217
+ }
218
+ }
219
+ }
220
+ }
221
+
222
+ if (result === undefined && isEdited) {
223
+ edits.push([key, node]);
224
+ }
225
+
226
+ if (isLeaving) {
227
+ path.pop();
228
+ } else {
229
+ var _node$kind;
230
+
231
+ stack = {
232
+ inArray,
233
+ index,
234
+ keys,
235
+ edits,
236
+ prev: stack,
237
+ };
238
+ inArray = Array.isArray(node);
239
+ keys = inArray
240
+ ? node
241
+ : (_node$kind = visitorKeys[node.kind]) !== null &&
242
+ _node$kind !== void 0
243
+ ? _node$kind
244
+ : [];
245
+ index = -1;
246
+ edits = [];
247
+
248
+ if (parent) {
249
+ ancestors.push(parent);
250
+ }
251
+
252
+ parent = node;
253
+ }
254
+ } while (stack !== undefined);
255
+
256
+ if (edits.length !== 0) {
257
+ // New root
258
+ return edits[edits.length - 1][1];
259
+ }
260
+
261
+ return root;
262
+ }
263
+ /**
264
+ * Creates a new visitor instance which delegates to many visitors to run in
265
+ * parallel. Each visitor will be visited for each node before moving on.
266
+ *
267
+ * If a prior visitor edits a node, no following visitors will see that node.
268
+ */
269
+
270
+ function visitInParallel(visitors) {
271
+ const skipping = new Array(visitors.length).fill(null);
272
+ const mergedVisitor = Object.create(null);
273
+
274
+ for (const kind of Object.values(_kinds.Kind)) {
275
+ let hasVisitor = false;
276
+ const enterList = new Array(visitors.length).fill(undefined);
277
+ const leaveList = new Array(visitors.length).fill(undefined);
278
+
279
+ for (let i = 0; i < visitors.length; ++i) {
280
+ const { enter, leave } = getEnterLeaveForKind(visitors[i], kind);
281
+ hasVisitor || (hasVisitor = enter != null || leave != null);
282
+ enterList[i] = enter;
283
+ leaveList[i] = leave;
284
+ }
285
+
286
+ if (!hasVisitor) {
287
+ continue;
288
+ }
289
+
290
+ const mergedEnterLeave = {
291
+ enter(...args) {
292
+ const node = args[0];
293
+
294
+ for (let i = 0; i < visitors.length; i++) {
295
+ if (skipping[i] === null) {
296
+ var _enterList$i;
297
+
298
+ const result =
299
+ (_enterList$i = enterList[i]) === null || _enterList$i === void 0
300
+ ? void 0
301
+ : _enterList$i.apply(visitors[i], args);
302
+
303
+ if (result === false) {
304
+ skipping[i] = node;
305
+ } else if (result === BREAK) {
306
+ skipping[i] = BREAK;
307
+ } else if (result !== undefined) {
308
+ return result;
309
+ }
310
+ }
311
+ }
312
+ },
313
+
314
+ leave(...args) {
315
+ const node = args[0];
316
+
317
+ for (let i = 0; i < visitors.length; i++) {
318
+ if (skipping[i] === null) {
319
+ var _leaveList$i;
320
+
321
+ const result =
322
+ (_leaveList$i = leaveList[i]) === null || _leaveList$i === void 0
323
+ ? void 0
324
+ : _leaveList$i.apply(visitors[i], args);
325
+
326
+ if (result === BREAK) {
327
+ skipping[i] = BREAK;
328
+ } else if (result !== undefined && result !== false) {
329
+ return result;
330
+ }
331
+ } else if (skipping[i] === node) {
332
+ skipping[i] = null;
333
+ }
334
+ }
335
+ },
336
+ };
337
+ mergedVisitor[kind] = mergedEnterLeave;
338
+ }
339
+
340
+ return mergedVisitor;
341
+ }
342
+ /**
343
+ * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.
344
+ */
345
+
346
+ function getEnterLeaveForKind(visitor, kind) {
347
+ const kindVisitor = visitor[kind];
348
+
349
+ if (typeof kindVisitor === 'object') {
350
+ // { Kind: { enter() {}, leave() {} } }
351
+ return kindVisitor;
352
+ } else if (typeof kindVisitor === 'function') {
353
+ // { Kind() {} }
354
+ return {
355
+ enter: kindVisitor,
356
+ leave: undefined,
357
+ };
358
+ } // { enter() {}, leave() {} }
359
+
360
+ return {
361
+ enter: visitor.enter,
362
+ leave: visitor.leave,
363
+ };
364
+ }
365
+ /**
366
+ * Given a visitor instance, if it is leaving or not, and a node kind, return
367
+ * the function the visitor runtime should call.
368
+ *
369
+ * @deprecated Please use `getEnterLeaveForKind` instead. Will be removed in v17
370
+ */
371
+
372
+ /* c8 ignore next 8 */
373
+
374
+ function getVisitFn(visitor, kind, isLeaving) {
375
+ const { enter, leave } = getEnterLeaveForKind(visitor, kind);
376
+ return isLeaving ? leave : enter;
377
+ }