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.
- package/error/GraphQLError.d.ts +151 -15
- package/error/GraphQLError.js +143 -12
- package/error/GraphQLError.mjs +143 -12
- package/error/index.d.ts +6 -0
- package/error/index.mjs +6 -0
- package/error/locatedError.d.ts +20 -0
- package/error/locatedError.js +21 -0
- package/error/locatedError.mjs +20 -0
- package/error/syntaxError.d.ts +15 -0
- package/error/syntaxError.js +16 -0
- package/error/syntaxError.mjs +15 -0
- package/execution/collectFields.js +6 -0
- package/execution/collectFields.mjs +6 -0
- package/execution/execute.d.ts +211 -12
- package/execution/execute.js +214 -23
- package/execution/execute.mjs +213 -23
- package/execution/index.d.ts +6 -0
- package/execution/index.mjs +6 -0
- package/execution/mapAsyncIterator.d.ts +2 -0
- package/execution/mapAsyncIterator.js +2 -0
- package/execution/mapAsyncIterator.mjs +2 -0
- package/execution/subscribe.d.ts +195 -5
- package/execution/subscribe.js +154 -11
- package/execution/subscribe.mjs +153 -11
- package/execution/values.d.ts +167 -10
- package/execution/values.js +149 -5
- package/execution/values.mjs +148 -5
- package/graphql.d.ts +163 -41
- package/graphql.js +126 -4
- package/graphql.mjs +131 -41
- package/index.d.ts +11 -17
- package/index.mjs +13 -19
- package/jsutils/Maybe.d.ts +5 -1
- package/jsutils/ObjMap.d.ts +4 -0
- package/jsutils/Path.d.ts +30 -0
- package/jsutils/Path.js +29 -0
- package/jsutils/Path.mjs +29 -0
- package/jsutils/PromiseOrValue.d.ts +1 -0
- package/jsutils/devAssert.d.ts +1 -0
- package/jsutils/devAssert.js +1 -0
- package/jsutils/devAssert.mjs +1 -0
- package/jsutils/didYouMean.d.ts +4 -1
- package/jsutils/didYouMean.js +4 -1
- package/jsutils/didYouMean.mjs +4 -1
- package/jsutils/groupBy.d.ts +2 -0
- package/jsutils/groupBy.js +2 -0
- package/jsutils/groupBy.mjs +2 -0
- package/jsutils/identityFunc.d.ts +2 -0
- package/jsutils/identityFunc.js +2 -0
- package/jsutils/identityFunc.mjs +2 -0
- package/jsutils/inspect.d.ts +2 -0
- package/jsutils/inspect.js +2 -0
- package/jsutils/inspect.mjs +2 -0
- package/jsutils/instanceOf.d.ts +2 -0
- package/jsutils/instanceOf.js +2 -0
- package/jsutils/instanceOf.mjs +2 -0
- package/jsutils/invariant.d.ts +1 -0
- package/jsutils/invariant.js +1 -0
- package/jsutils/invariant.mjs +1 -0
- package/jsutils/isAsyncIterable.d.ts +2 -0
- package/jsutils/isAsyncIterable.js +2 -0
- package/jsutils/isAsyncIterable.mjs +2 -0
- package/jsutils/isIterableObject.d.ts +6 -5
- package/jsutils/isIterableObject.js +6 -5
- package/jsutils/isIterableObject.mjs +6 -5
- package/jsutils/isObjectLike.d.ts +2 -0
- package/jsutils/isObjectLike.js +2 -0
- package/jsutils/isObjectLike.mjs +2 -0
- package/jsutils/isPromise.d.ts +2 -0
- package/jsutils/isPromise.js +2 -0
- package/jsutils/isPromise.mjs +2 -0
- package/jsutils/keyMap.d.ts +7 -14
- package/jsutils/keyMap.js +7 -14
- package/jsutils/keyMap.mjs +7 -14
- package/jsutils/keyValMap.d.ts +9 -6
- package/jsutils/keyValMap.js +9 -6
- package/jsutils/keyValMap.mjs +9 -6
- package/jsutils/mapValue.d.ts +2 -0
- package/jsutils/mapValue.js +2 -0
- package/jsutils/mapValue.mjs +2 -0
- package/jsutils/memoize3.d.ts +2 -0
- package/jsutils/memoize3.js +2 -0
- package/jsutils/memoize3.mjs +2 -0
- package/jsutils/naturalCompare.d.ts +2 -0
- package/jsutils/naturalCompare.js +2 -0
- package/jsutils/naturalCompare.mjs +2 -0
- package/jsutils/printPathArray.d.ts +2 -0
- package/jsutils/printPathArray.js +2 -0
- package/jsutils/printPathArray.mjs +2 -0
- package/jsutils/promiseForObject.d.ts +2 -0
- package/jsutils/promiseForObject.js +2 -0
- package/jsutils/promiseForObject.mjs +2 -0
- package/jsutils/promiseReduce.d.ts +2 -0
- package/jsutils/promiseReduce.js +2 -0
- package/jsutils/promiseReduce.mjs +2 -0
- package/jsutils/suggestionList.d.ts +2 -0
- package/jsutils/suggestionList.js +4 -0
- package/jsutils/suggestionList.mjs +4 -0
- package/jsutils/toError.d.ts +2 -0
- package/jsutils/toError.js +2 -0
- package/jsutils/toError.mjs +2 -0
- package/jsutils/toObjMap.d.ts +1 -0
- package/jsutils/toObjMap.js +1 -0
- package/jsutils/toObjMap.mjs +1 -0
- package/language/ast.d.ts +412 -54
- package/language/ast.js +95 -38
- package/language/ast.mjs +95 -38
- package/language/blockString.d.ts +1 -3
- package/language/blockString.js +1 -3
- package/language/blockString.mjs +1 -3
- package/language/directiveLocation.d.ts +28 -8
- package/language/directiveLocation.js +9 -6
- package/language/directiveLocation.mjs +9 -6
- package/language/index.d.ts +6 -0
- package/language/index.mjs +6 -0
- package/language/kinds.d.ts +57 -18
- package/language/kinds.js +9 -6
- package/language/kinds.mjs +9 -6
- package/language/lexer.d.ts +47 -14
- package/language/lexer.js +71 -13
- package/language/lexer.mjs +70 -13
- package/language/location.d.ts +16 -3
- package/language/location.js +14 -3
- package/language/location.mjs +14 -3
- package/language/parser.d.ts +236 -13
- package/language/parser.js +224 -0
- package/language/parser.mjs +224 -3
- package/language/predicates.d.ts +169 -0
- package/language/predicates.js +170 -0
- package/language/predicates.mjs +180 -0
- package/language/printLocation.d.ts +28 -0
- package/language/printLocation.js +29 -0
- package/language/printLocation.mjs +28 -0
- package/language/printString.d.ts +2 -0
- package/language/printString.js +5 -1
- package/language/printString.mjs +5 -1
- package/language/printer.d.ts +12 -0
- package/language/printer.js +19 -0
- package/language/printer.mjs +18 -0
- package/language/schemaCoordinateLexer.d.ts +8 -6
- package/language/schemaCoordinateLexer.js +10 -6
- package/language/schemaCoordinateLexer.mjs +10 -6
- package/language/source.d.ts +28 -0
- package/language/source.js +32 -0
- package/language/source.mjs +31 -0
- package/language/tokenKind.d.ts +30 -3
- package/language/tokenKind.js +8 -3
- package/language/tokenKind.mjs +8 -3
- package/language/visitor.d.ts +200 -72
- package/language/visitor.js +122 -50
- package/language/visitor.mjs +122 -54
- package/package.json +1 -1
- package/subscription/index.d.ts +9 -3
- package/subscription/index.mjs +9 -3
- package/type/assertName.d.ts +18 -1
- package/type/assertName.js +19 -1
- package/type/assertName.mjs +18 -1
- package/type/definition.d.ts +2540 -79
- package/type/definition.js +2214 -61
- package/type/definition.mjs +2241 -60
- package/type/directives.d.ts +193 -18
- package/type/directives.js +196 -19
- package/type/directives.mjs +196 -19
- package/type/index.d.ts +6 -0
- package/type/index.mjs +6 -0
- package/type/introspection.d.ts +36 -0
- package/type/introspection.js +33 -0
- package/type/introspection.mjs +41 -0
- package/type/scalars.d.ts +29 -2
- package/type/scalars.js +37 -2
- package/type/scalars.mjs +36 -2
- package/type/schema.d.ts +490 -28
- package/type/schema.js +484 -26
- package/type/schema.mjs +484 -26
- package/type/validate.d.ts +31 -0
- package/type/validate.js +32 -0
- package/type/validate.mjs +31 -0
- package/utilities/TypeInfo.d.ts +441 -1
- package/utilities/TypeInfo.js +444 -1
- package/utilities/TypeInfo.mjs +443 -1
- package/utilities/assertValidName.d.ts +27 -2
- package/utilities/assertValidName.js +28 -2
- package/utilities/assertValidName.mjs +27 -2
- package/utilities/astFromValue.d.ts +33 -3
- package/utilities/astFromValue.js +36 -3
- package/utilities/astFromValue.mjs +35 -3
- package/utilities/buildASTSchema.d.ts +65 -6
- package/utilities/buildASTSchema.js +65 -6
- package/utilities/buildASTSchema.mjs +65 -6
- package/utilities/buildClientSchema.d.ts +15 -0
- package/utilities/buildClientSchema.js +16 -0
- package/utilities/buildClientSchema.mjs +15 -0
- package/utilities/coerceInputValue.d.ts +46 -0
- package/utilities/coerceInputValue.js +47 -0
- package/utilities/coerceInputValue.mjs +46 -0
- package/utilities/concatAST.d.ts +12 -0
- package/utilities/concatAST.js +13 -0
- package/utilities/concatAST.mjs +12 -0
- package/utilities/extendSchema.d.ts +56 -3
- package/utilities/extendSchema.js +63 -3
- package/utilities/extendSchema.mjs +62 -3
- package/utilities/findBreakingChanges.d.ts +95 -0
- package/utilities/findBreakingChanges.js +68 -0
- package/utilities/findBreakingChanges.mjs +70 -0
- package/utilities/getIntrospectionQuery.d.ts +132 -0
- package/utilities/getIntrospectionQuery.js +41 -0
- package/utilities/getIntrospectionQuery.mjs +41 -0
- package/utilities/getOperationAST.d.ts +15 -0
- package/utilities/getOperationAST.js +16 -0
- package/utilities/getOperationAST.mjs +15 -0
- package/utilities/getOperationRootType.d.ts +18 -1
- package/utilities/getOperationRootType.js +19 -1
- package/utilities/getOperationRootType.mjs +18 -1
- package/utilities/index.d.ts +7 -0
- package/utilities/index.mjs +7 -0
- package/utilities/introspectionFromSchema.d.ts +54 -0
- package/utilities/introspectionFromSchema.js +55 -0
- package/utilities/introspectionFromSchema.mjs +54 -0
- package/utilities/lexicographicSortSchema.d.ts +35 -0
- package/utilities/lexicographicSortSchema.js +36 -0
- package/utilities/lexicographicSortSchema.mjs +35 -0
- package/utilities/printSchema.d.ts +63 -0
- package/utilities/printSchema.js +66 -0
- package/utilities/printSchema.mjs +67 -0
- package/utilities/resolveSchemaCoordinate.d.ts +62 -0
- package/utilities/resolveSchemaCoordinate.js +64 -0
- package/utilities/resolveSchemaCoordinate.mjs +63 -0
- package/utilities/separateOperations.d.ts +30 -0
- package/utilities/separateOperations.js +31 -0
- package/utilities/separateOperations.mjs +30 -0
- package/utilities/stripIgnoredCharacters.d.ts +13 -6
- package/utilities/stripIgnoredCharacters.js +16 -6
- package/utilities/stripIgnoredCharacters.mjs +15 -6
- package/utilities/typeComparators.d.ts +84 -0
- package/utilities/typeComparators.js +85 -0
- package/utilities/typeComparators.mjs +84 -0
- package/utilities/typeFromAST.d.ts +86 -0
- package/utilities/typeFromAST.js +3 -0
- package/utilities/typeFromAST.mjs +3 -0
- package/utilities/typedQueryDocumentNode.d.ts +4 -0
- package/utilities/valueFromAST.d.ts +38 -0
- package/utilities/valueFromAST.js +39 -0
- package/utilities/valueFromAST.mjs +38 -0
- package/utilities/valueFromASTUntyped.d.ts +15 -2
- package/utilities/valueFromASTUntyped.js +16 -2
- package/utilities/valueFromASTUntyped.mjs +15 -2
- package/validation/ValidationContext.d.ts +399 -0
- package/validation/ValidationContext.js +400 -0
- package/validation/ValidationContext.mjs +401 -0
- package/validation/index.d.ts +6 -0
- package/validation/index.mjs +6 -0
- package/validation/rules/ExecutableDefinitionsRule.d.ts +28 -0
- package/validation/rules/ExecutableDefinitionsRule.js +29 -0
- package/validation/rules/ExecutableDefinitionsRule.mjs +28 -0
- package/validation/rules/FieldsOnCorrectTypeRule.d.ts +28 -0
- package/validation/rules/FieldsOnCorrectTypeRule.js +33 -0
- package/validation/rules/FieldsOnCorrectTypeRule.mjs +32 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.d.ts +28 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.js +29 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.mjs +28 -0
- package/validation/rules/KnownArgumentNamesRule.d.ts +29 -3
- package/validation/rules/KnownArgumentNamesRule.js +30 -3
- package/validation/rules/KnownArgumentNamesRule.mjs +29 -3
- package/validation/rules/KnownDirectivesRule.d.ts +28 -0
- package/validation/rules/KnownDirectivesRule.js +29 -0
- package/validation/rules/KnownDirectivesRule.mjs +28 -0
- package/validation/rules/KnownFragmentNamesRule.d.ts +28 -0
- package/validation/rules/KnownFragmentNamesRule.js +29 -0
- package/validation/rules/KnownFragmentNamesRule.mjs +28 -0
- package/validation/rules/KnownTypeNamesRule.d.ts +28 -0
- package/validation/rules/KnownTypeNamesRule.js +29 -0
- package/validation/rules/KnownTypeNamesRule.mjs +28 -0
- package/validation/rules/LoneAnonymousOperationRule.d.ts +28 -0
- package/validation/rules/LoneAnonymousOperationRule.js +29 -0
- package/validation/rules/LoneAnonymousOperationRule.mjs +28 -0
- package/validation/rules/LoneSchemaDefinitionRule.d.ts +21 -0
- package/validation/rules/LoneSchemaDefinitionRule.js +22 -0
- package/validation/rules/LoneSchemaDefinitionRule.mjs +21 -0
- package/validation/rules/MaxIntrospectionDepthRule.d.ts +31 -0
- package/validation/rules/MaxIntrospectionDepthRule.js +33 -0
- package/validation/rules/MaxIntrospectionDepthRule.mjs +34 -0
- package/validation/rules/NoFragmentCyclesRule.d.ts +28 -0
- package/validation/rules/NoFragmentCyclesRule.js +29 -0
- package/validation/rules/NoFragmentCyclesRule.mjs +28 -0
- package/validation/rules/NoUndefinedVariablesRule.d.ts +28 -0
- package/validation/rules/NoUndefinedVariablesRule.js +29 -0
- package/validation/rules/NoUndefinedVariablesRule.mjs +28 -0
- package/validation/rules/NoUnusedFragmentsRule.d.ts +28 -0
- package/validation/rules/NoUnusedFragmentsRule.js +29 -0
- package/validation/rules/NoUnusedFragmentsRule.mjs +28 -0
- package/validation/rules/NoUnusedVariablesRule.d.ts +29 -0
- package/validation/rules/NoUnusedVariablesRule.js +30 -0
- package/validation/rules/NoUnusedVariablesRule.mjs +29 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +33 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule.js +45 -6
- package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +45 -6
- package/validation/rules/PossibleFragmentSpreadsRule.d.ts +36 -0
- package/validation/rules/PossibleFragmentSpreadsRule.js +37 -0
- package/validation/rules/PossibleFragmentSpreadsRule.mjs +36 -0
- package/validation/rules/PossibleTypeExtensionsRule.d.ts +21 -0
- package/validation/rules/PossibleTypeExtensionsRule.js +22 -0
- package/validation/rules/PossibleTypeExtensionsRule.mjs +21 -0
- package/validation/rules/ProvidedRequiredArgumentsRule.d.ts +29 -3
- package/validation/rules/ProvidedRequiredArgumentsRule.js +30 -3
- package/validation/rules/ProvidedRequiredArgumentsRule.mjs +29 -3
- package/validation/rules/ScalarLeafsRule.d.ts +28 -0
- package/validation/rules/ScalarLeafsRule.js +29 -0
- package/validation/rules/ScalarLeafsRule.mjs +28 -0
- package/validation/rules/SingleFieldSubscriptionsRule.d.ts +33 -0
- package/validation/rules/SingleFieldSubscriptionsRule.js +34 -0
- package/validation/rules/SingleFieldSubscriptionsRule.mjs +33 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts +21 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.js +22 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.mjs +21 -0
- package/validation/rules/UniqueArgumentNamesRule.d.ts +28 -0
- package/validation/rules/UniqueArgumentNamesRule.js +29 -0
- package/validation/rules/UniqueArgumentNamesRule.mjs +28 -0
- package/validation/rules/UniqueDirectiveNamesRule.d.ts +21 -0
- package/validation/rules/UniqueDirectiveNamesRule.js +22 -0
- package/validation/rules/UniqueDirectiveNamesRule.mjs +21 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.d.ts +28 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.js +29 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.mjs +28 -0
- package/validation/rules/UniqueEnumValueNamesRule.d.ts +21 -0
- package/validation/rules/UniqueEnumValueNamesRule.js +22 -0
- package/validation/rules/UniqueEnumValueNamesRule.mjs +21 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.d.ts +21 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.js +22 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +21 -0
- package/validation/rules/UniqueFragmentNamesRule.d.ts +28 -0
- package/validation/rules/UniqueFragmentNamesRule.js +29 -0
- package/validation/rules/UniqueFragmentNamesRule.mjs +28 -0
- package/validation/rules/UniqueInputFieldNamesRule.d.ts +32 -0
- package/validation/rules/UniqueInputFieldNamesRule.js +33 -0
- package/validation/rules/UniqueInputFieldNamesRule.mjs +32 -0
- package/validation/rules/UniqueOperationNamesRule.d.ts +28 -0
- package/validation/rules/UniqueOperationNamesRule.js +29 -0
- package/validation/rules/UniqueOperationNamesRule.mjs +28 -0
- package/validation/rules/UniqueOperationTypesRule.d.ts +21 -0
- package/validation/rules/UniqueOperationTypesRule.js +22 -0
- package/validation/rules/UniqueOperationTypesRule.mjs +21 -0
- package/validation/rules/UniqueTypeNamesRule.d.ts +21 -0
- package/validation/rules/UniqueTypeNamesRule.js +22 -0
- package/validation/rules/UniqueTypeNamesRule.mjs +21 -0
- package/validation/rules/UniqueVariableNamesRule.d.ts +28 -0
- package/validation/rules/UniqueVariableNamesRule.js +29 -0
- package/validation/rules/UniqueVariableNamesRule.mjs +28 -0
- package/validation/rules/ValuesOfCorrectTypeRule.d.ts +28 -0
- package/validation/rules/ValuesOfCorrectTypeRule.js +31 -0
- package/validation/rules/ValuesOfCorrectTypeRule.mjs +30 -0
- package/validation/rules/VariablesAreInputTypesRule.d.ts +32 -0
- package/validation/rules/VariablesAreInputTypesRule.js +33 -0
- package/validation/rules/VariablesAreInputTypesRule.mjs +32 -0
- package/validation/rules/VariablesInAllowedPositionRule.d.ts +28 -0
- package/validation/rules/VariablesInAllowedPositionRule.js +35 -1
- package/validation/rules/VariablesInAllowedPositionRule.mjs +34 -1
- package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +41 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.js +42 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.mjs +41 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +28 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +29 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs +28 -0
- package/validation/specifiedRules.d.ts +2 -3
- package/validation/specifiedRules.js +2 -3
- package/validation/specifiedRules.mjs +2 -3
- package/validation/validate.d.ts +70 -9
- package/validation/validate.js +63 -7
- package/validation/validate.mjs +63 -7
- package/version.d.ts +3 -6
- package/version.js +6 -8
- package/version.mjs +5 -8
package/language/visitor.d.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
+
/** @category Visiting */
|
|
1
2
|
import type { ASTNode } from './ast';
|
|
2
3
|
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
|
-
*/
|
|
4
|
+
/** A visitor defines the callbacks called during AST traversal. */
|
|
7
5
|
export declare type ASTVisitor = EnterLeaveVisitor<ASTNode> | KindVisitor;
|
|
8
6
|
declare type KindVisitor = {
|
|
9
7
|
readonly [NodeT in ASTNode as NodeT['kind']]?:
|
|
@@ -15,28 +13,29 @@ interface EnterLeaveVisitor<TVisitedNode extends ASTNode> {
|
|
|
15
13
|
readonly leave?: ASTVisitFn<TVisitedNode>;
|
|
16
14
|
}
|
|
17
15
|
/**
|
|
18
|
-
* A visitor is
|
|
19
|
-
*
|
|
16
|
+
* A visitor is composed of visit functions called for each node during traversal.
|
|
17
|
+
* @typeParam TVisitedNode - AST node type handled by this visitor function.
|
|
20
18
|
*/
|
|
21
19
|
export declare type ASTVisitFn<TVisitedNode extends ASTNode> = (
|
|
22
|
-
/**
|
|
20
|
+
/** Current node being visited. */
|
|
23
21
|
node: TVisitedNode,
|
|
24
|
-
/**
|
|
22
|
+
/** Index or key for this node within the parent node or array. */
|
|
25
23
|
key: string | number | undefined,
|
|
26
|
-
/**
|
|
24
|
+
/** Parent immediately above this node, which may be an array. */
|
|
27
25
|
parent: ASTNode | ReadonlyArray<ASTNode> | undefined,
|
|
28
|
-
/**
|
|
26
|
+
/** Key path from the root node to this node. */
|
|
29
27
|
path: ReadonlyArray<string | number>,
|
|
30
28
|
/**
|
|
31
|
-
* All nodes and
|
|
29
|
+
* All nodes and arrays visited before reaching this node's parent.
|
|
32
30
|
* These correspond to array indices in `path`.
|
|
33
|
-
* Note: ancestors includes arrays
|
|
31
|
+
* Note: ancestors includes arrays that contain the visited node's parent.
|
|
34
32
|
*/
|
|
35
33
|
ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>,
|
|
36
34
|
) => any;
|
|
37
35
|
/**
|
|
38
|
-
* A reducer is
|
|
39
|
-
*
|
|
36
|
+
* A reducer is composed of reducer functions that convert AST nodes into another form.
|
|
37
|
+
*
|
|
38
|
+
* @internal
|
|
40
39
|
*/
|
|
41
40
|
export declare type ASTReducer<R> = {
|
|
42
41
|
readonly [NodeT in ASTNode as NodeT['kind']]?: {
|
|
@@ -45,20 +44,33 @@ export declare type ASTReducer<R> = {
|
|
|
45
44
|
};
|
|
46
45
|
};
|
|
47
46
|
declare type ASTReducerFn<TReducedNode extends ASTNode, R> = (
|
|
48
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* Current node being visited.
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
49
51
|
node: {
|
|
50
52
|
[K in keyof TReducedNode]: ReducedField<TReducedNode[K], R>;
|
|
51
53
|
},
|
|
52
|
-
/**
|
|
54
|
+
/**
|
|
55
|
+
* Index or key for this node within the parent node or array.
|
|
56
|
+
* @internal
|
|
57
|
+
*/
|
|
53
58
|
key: string | number | undefined,
|
|
54
|
-
/**
|
|
59
|
+
/**
|
|
60
|
+
* Parent immediately above this node, which may be an array.
|
|
61
|
+
* @internal
|
|
62
|
+
*/
|
|
55
63
|
parent: ASTNode | ReadonlyArray<ASTNode> | undefined,
|
|
56
|
-
/**
|
|
64
|
+
/**
|
|
65
|
+
* Key path from the root node to this node.
|
|
66
|
+
* @internal
|
|
67
|
+
*/
|
|
57
68
|
path: ReadonlyArray<string | number>,
|
|
58
69
|
/**
|
|
59
|
-
* All nodes and
|
|
70
|
+
* All nodes and arrays visited before reaching this node's parent.
|
|
60
71
|
* These correspond to array indices in `path`.
|
|
61
|
-
* Note: ancestors includes arrays
|
|
72
|
+
* Note: ancestors includes arrays that contain the visited node's parent.
|
|
73
|
+
* @internal
|
|
62
74
|
*/
|
|
63
75
|
ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>,
|
|
64
76
|
) => R;
|
|
@@ -68,13 +80,14 @@ declare type ReducedField<T, R> = T extends null | undefined
|
|
|
68
80
|
? ReadonlyArray<R>
|
|
69
81
|
: R;
|
|
70
82
|
/**
|
|
71
|
-
*
|
|
72
|
-
*
|
|
83
|
+
* Deprecated visitor key map type retained for compatibility. Inline this
|
|
84
|
+
* mapped type at use sites because ASTVisitorKeyMap will be removed in v17.
|
|
73
85
|
* @deprecated Please inline it. Will be removed in v17
|
|
74
86
|
*/
|
|
75
87
|
export declare type ASTVisitorKeyMap = {
|
|
76
88
|
[NodeT in ASTNode as NodeT['kind']]?: ReadonlyArray<keyof NodeT>;
|
|
77
89
|
};
|
|
90
|
+
/** A value that can be returned from a visitor function to stop traversal. */
|
|
78
91
|
export declare const BREAK: unknown;
|
|
79
92
|
/**
|
|
80
93
|
* visit() will walk through an AST using a depth-first traversal, calling
|
|
@@ -89,69 +102,90 @@ export declare const BREAK: unknown;
|
|
|
89
102
|
* When using visit() to edit an AST, the original AST will not be modified, and
|
|
90
103
|
* a new version of the AST with the changes applied will be returned from the
|
|
91
104
|
* visit function.
|
|
92
|
-
*
|
|
105
|
+
* @param root - The AST node at which to start traversal.
|
|
106
|
+
* @param visitor - The visitor or reducer functions to call while traversing.
|
|
107
|
+
* @param visitorKeys - Optional map of child keys to visit for each AST node kind.
|
|
108
|
+
* @returns The original AST, an edited AST, or a reduced value depending on the visitor.
|
|
109
|
+
* @typeParam N - The root AST node type returned when visiting without reducing.
|
|
110
|
+
* @example
|
|
93
111
|
* ```ts
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
*
|
|
112
|
+
* // Return values control traversal: undefined makes no change, false skips
|
|
113
|
+
* // a subtree, BREAK stops traversal, null removes a node, and any other
|
|
114
|
+
* // value replaces the current node.
|
|
115
|
+
* import { Kind, parse, print, visit } from 'graphql/language';
|
|
116
|
+
*
|
|
117
|
+
* const document = parse('{ hero { name } }');
|
|
118
|
+
* const editedAST = visit(document, {
|
|
119
|
+
* Field: (node) => {
|
|
120
|
+
* if (node.name.value === 'hero') {
|
|
121
|
+
* return {
|
|
122
|
+
* ...node,
|
|
123
|
+
* name: { kind: Kind.NAME, value: 'human' },
|
|
124
|
+
* };
|
|
125
|
+
* }
|
|
102
126
|
* },
|
|
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
127
|
* });
|
|
128
|
+
*
|
|
129
|
+
* print(editedAST); // => '{\n human {\n name\n }\n}'
|
|
112
130
|
* ```
|
|
131
|
+
* @example
|
|
132
|
+
* ```ts
|
|
133
|
+
* // A named visitor function runs when entering nodes of that kind.
|
|
134
|
+
* import { parse, visit } from 'graphql/language';
|
|
113
135
|
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
* enter/leave visitors at a named key, leading to three permutations of the
|
|
117
|
-
* visitor API:
|
|
136
|
+
* const document = parse('{ hero { name } }');
|
|
137
|
+
* const fieldNames = [];
|
|
118
138
|
*
|
|
119
|
-
*
|
|
139
|
+
* visit(document, {
|
|
140
|
+
* Field: (node) => {
|
|
141
|
+
* fieldNames.push(node.name.value);
|
|
142
|
+
* },
|
|
143
|
+
* });
|
|
120
144
|
*
|
|
121
|
-
*
|
|
122
|
-
* visit(ast, {
|
|
123
|
-
* Kind(node) {
|
|
124
|
-
* // enter the "Kind" node
|
|
125
|
-
* }
|
|
126
|
-
* })
|
|
145
|
+
* fieldNames; // => ['hero', 'name']
|
|
127
146
|
* ```
|
|
147
|
+
* @example
|
|
148
|
+
* ```ts
|
|
149
|
+
* // A named visitor object can provide separate enter and leave handlers for
|
|
150
|
+
* // nodes of that kind.
|
|
151
|
+
* import { parse, visit } from 'graphql/language';
|
|
128
152
|
*
|
|
129
|
-
*
|
|
153
|
+
* const document = parse('{ hero { name } }');
|
|
154
|
+
* const events = [];
|
|
130
155
|
*
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
*
|
|
156
|
+
* visit(document, {
|
|
157
|
+
* Field: {
|
|
158
|
+
* enter: (node) => {
|
|
159
|
+
* events.push(`enter:${node.name.value}`);
|
|
160
|
+
* },
|
|
161
|
+
* leave: (node) => {
|
|
162
|
+
* events.push(`leave:${node.name.value}`);
|
|
163
|
+
* },
|
|
164
|
+
* },
|
|
165
|
+
* });
|
|
166
|
+
*
|
|
167
|
+
* events; // => ['enter:hero', 'enter:name', 'leave:name', 'leave:hero']
|
|
142
168
|
* ```
|
|
169
|
+
* @example
|
|
170
|
+
* ```ts
|
|
171
|
+
* // Generic enter and leave handlers run for every node.
|
|
172
|
+
* import { parse, visit } from 'graphql/language';
|
|
143
173
|
*
|
|
144
|
-
*
|
|
174
|
+
* const document = parse('{ hero { name } }');
|
|
175
|
+
* let enterCount = 0;
|
|
176
|
+
* let leaveCount = 0;
|
|
145
177
|
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
178
|
+
* visit(document, {
|
|
179
|
+
* enter: (node) => {
|
|
180
|
+
* enterCount += 1;
|
|
181
|
+
* },
|
|
182
|
+
* leave: (node) => {
|
|
183
|
+
* leaveCount += 1;
|
|
150
184
|
* },
|
|
151
|
-
*
|
|
152
|
-
*
|
|
153
|
-
*
|
|
154
|
-
*
|
|
185
|
+
* });
|
|
186
|
+
*
|
|
187
|
+
* enterCount; // => leaveCount
|
|
188
|
+
* enterCount > 0; // => true
|
|
155
189
|
* ```
|
|
156
190
|
*/
|
|
157
191
|
export declare function visit<N extends ASTNode>(
|
|
@@ -159,6 +193,53 @@ export declare function visit<N extends ASTNode>(
|
|
|
159
193
|
visitor: ASTVisitor,
|
|
160
194
|
visitorKeys?: ASTVisitorKeyMap,
|
|
161
195
|
): N;
|
|
196
|
+
/**
|
|
197
|
+
* Traverses an AST with reducer callbacks and returns the reduced value.
|
|
198
|
+
* @param root - The AST node where traversal starts.
|
|
199
|
+
* @param visitor - Reducer callbacks to invoke during traversal.
|
|
200
|
+
* @param visitorKeys - Optional mapping of child keys for each AST node kind.
|
|
201
|
+
* @returns The value produced by the reducer visitor.
|
|
202
|
+
* @typeParam R - The value produced by reducer visitor callbacks.
|
|
203
|
+
* @example
|
|
204
|
+
* ```ts
|
|
205
|
+
* // A reducer visitor returns values from leave handlers to build a reduced
|
|
206
|
+
* // result instead of returning an edited AST.
|
|
207
|
+
* import { parse, visit } from 'graphql/language';
|
|
208
|
+
*
|
|
209
|
+
* const document = parse('{ hero { name } }');
|
|
210
|
+
* const printed = visit(document, {
|
|
211
|
+
* Name: {
|
|
212
|
+
* leave: (node) => {
|
|
213
|
+
* return node.value;
|
|
214
|
+
* },
|
|
215
|
+
* },
|
|
216
|
+
* Field: {
|
|
217
|
+
* leave: (node) => {
|
|
218
|
+
* return node.selectionSet == null
|
|
219
|
+
* ? node.name
|
|
220
|
+
* : `${node.name} { ${node.selectionSet} }`;
|
|
221
|
+
* },
|
|
222
|
+
* },
|
|
223
|
+
* SelectionSet: {
|
|
224
|
+
* leave: (node) => {
|
|
225
|
+
* return node.selections.join(' ');
|
|
226
|
+
* },
|
|
227
|
+
* },
|
|
228
|
+
* OperationDefinition: {
|
|
229
|
+
* leave: (node) => {
|
|
230
|
+
* return node.selectionSet;
|
|
231
|
+
* },
|
|
232
|
+
* },
|
|
233
|
+
* Document: {
|
|
234
|
+
* leave: (node) => {
|
|
235
|
+
* return node.definitions.join('\n');
|
|
236
|
+
* },
|
|
237
|
+
* },
|
|
238
|
+
* });
|
|
239
|
+
*
|
|
240
|
+
* printed; // => 'hero { name }'
|
|
241
|
+
* ```
|
|
242
|
+
*/
|
|
162
243
|
export declare function visit<R>(
|
|
163
244
|
root: ASTNode,
|
|
164
245
|
visitor: ASTReducer<R>,
|
|
@@ -169,12 +250,43 @@ export declare function visit<R>(
|
|
|
169
250
|
* parallel. Each visitor will be visited for each node before moving on.
|
|
170
251
|
*
|
|
171
252
|
* If a prior visitor edits a node, no following visitors will see that node.
|
|
253
|
+
* @param visitors - The visitors to merge into one parallel visitor.
|
|
254
|
+
* @returns A visitor that delegates traversal to each provided visitor.
|
|
255
|
+
* @example
|
|
256
|
+
* ```ts
|
|
257
|
+
* import { parse, visit, visitInParallel } from 'graphql/language';
|
|
258
|
+
*
|
|
259
|
+
* const document = parse('{ hero { name } }');
|
|
260
|
+
* const events = [];
|
|
261
|
+
*
|
|
262
|
+
* visit(
|
|
263
|
+
* document,
|
|
264
|
+
* visitInParallel([
|
|
265
|
+
* { Field: (node) => { events.push(`field:${node.name.value}`); } },
|
|
266
|
+
* { Name: (node) => { events.push(`name:${node.value}`); } },
|
|
267
|
+
* ]),
|
|
268
|
+
* );
|
|
269
|
+
*
|
|
270
|
+
* events; // => ['field:hero', 'name:hero', 'field:name', 'name:name']
|
|
271
|
+
* ```
|
|
172
272
|
*/
|
|
173
273
|
export declare function visitInParallel(
|
|
174
274
|
visitors: ReadonlyArray<ASTVisitor>,
|
|
175
275
|
): ASTVisitor;
|
|
176
276
|
/**
|
|
177
277
|
* Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.
|
|
278
|
+
* @param visitor - The visitor object to inspect.
|
|
279
|
+
* @param kind - The AST node kind to resolve handlers for.
|
|
280
|
+
* @returns The enter and leave handlers that apply for the given node kind.
|
|
281
|
+
* @example
|
|
282
|
+
* ```ts
|
|
283
|
+
* import { Kind, getEnterLeaveForKind } from 'graphql/language';
|
|
284
|
+
*
|
|
285
|
+
* const handlers = getEnterLeaveForKind({ Field: () => {} }, Kind.FIELD);
|
|
286
|
+
*
|
|
287
|
+
* typeof handlers.enter; // => 'function'
|
|
288
|
+
* handlers.leave; // => undefined
|
|
289
|
+
* ```
|
|
178
290
|
*/
|
|
179
291
|
export declare function getEnterLeaveForKind(
|
|
180
292
|
visitor: ASTVisitor,
|
|
@@ -182,8 +294,24 @@ export declare function getEnterLeaveForKind(
|
|
|
182
294
|
): EnterLeaveVisitor<ASTNode>;
|
|
183
295
|
/**
|
|
184
296
|
* Given a visitor instance, if it is leaving or not, and a node kind, return
|
|
185
|
-
* the function the visitor runtime should call.
|
|
297
|
+
* the function the visitor runtime should call. This deprecated compatibility
|
|
298
|
+
* helper delegates to `getEnterLeaveForKind`; call `getEnterLeaveForKind`
|
|
299
|
+
* directly because getVisitFn will be removed in v17.
|
|
300
|
+
* @param visitor - The visitor object to inspect.
|
|
301
|
+
* @param kind - The AST node kind to resolve a handler for.
|
|
302
|
+
* @param isLeaving - Whether to resolve the leave handler instead of the enter handler.
|
|
303
|
+
* @returns The visit function that applies for the given node kind and traversal phase, if one exists.
|
|
304
|
+
* @example
|
|
305
|
+
* ```ts
|
|
306
|
+
* import { Kind, getVisitFn } from 'graphql/language';
|
|
307
|
+
*
|
|
308
|
+
* const enter = getVisitFn({ Field: () => {} }, Kind.FIELD, false);
|
|
309
|
+
* const leave = getVisitFn({ Field: () => {} }, Kind.FIELD, true);
|
|
186
310
|
*
|
|
311
|
+
* typeof enter; // => 'function'
|
|
312
|
+
* leave; // => undefined
|
|
313
|
+
* ```
|
|
314
|
+
* @category Visiting
|
|
187
315
|
* @deprecated Please use `getEnterLeaveForKind` instead. Will be removed in v17
|
|
188
316
|
*/
|
|
189
317
|
export declare function getVisitFn(
|
package/language/visitor.js
CHANGED
|
@@ -17,6 +17,9 @@ var _ast = require('./ast.js');
|
|
|
17
17
|
|
|
18
18
|
var _kinds = require('./kinds.js');
|
|
19
19
|
|
|
20
|
+
/** @category Visiting */
|
|
21
|
+
|
|
22
|
+
/** A value that can be returned from a visitor function to stop traversal. */
|
|
20
23
|
const BREAK = Object.freeze({});
|
|
21
24
|
/**
|
|
22
25
|
* visit() will walk through an AST using a depth-first traversal, calling
|
|
@@ -31,74 +34,96 @@ const BREAK = Object.freeze({});
|
|
|
31
34
|
* When using visit() to edit an AST, the original AST will not be modified, and
|
|
32
35
|
* a new version of the AST with the changes applied will be returned from the
|
|
33
36
|
* visit function.
|
|
34
|
-
*
|
|
37
|
+
* @param root - The AST node at which to start traversal.
|
|
38
|
+
* @param visitor - The visitor or reducer functions to call while traversing.
|
|
39
|
+
* @param visitorKeys - Optional map of child keys to visit for each AST node kind.
|
|
40
|
+
* @returns The original AST, an edited AST, or a reduced value depending on the visitor.
|
|
41
|
+
* @typeParam N - The root AST node type returned when visiting without reducing.
|
|
42
|
+
* @example
|
|
35
43
|
* ```ts
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
+
* // Return values control traversal: undefined makes no change, false skips
|
|
45
|
+
* // a subtree, BREAK stops traversal, null removes a node, and any other
|
|
46
|
+
* // value replaces the current node.
|
|
47
|
+
* import { Kind, parse, print, visit } from 'graphql/language';
|
|
48
|
+
*
|
|
49
|
+
* const document = parse('{ hero { name } }');
|
|
50
|
+
* const editedAST = visit(document, {
|
|
51
|
+
* Field: (node) => {
|
|
52
|
+
* if (node.name.value === 'hero') {
|
|
53
|
+
* return {
|
|
54
|
+
* ...node,
|
|
55
|
+
* name: { kind: Kind.NAME, value: 'human' },
|
|
56
|
+
* };
|
|
57
|
+
* }
|
|
44
58
|
* },
|
|
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
59
|
* });
|
|
60
|
+
*
|
|
61
|
+
* print(editedAST); // => '{\n human {\n name\n }\n}'
|
|
54
62
|
* ```
|
|
63
|
+
* @example
|
|
64
|
+
* ```ts
|
|
65
|
+
* // A named visitor function runs when entering nodes of that kind.
|
|
66
|
+
* import { parse, visit } from 'graphql/language';
|
|
55
67
|
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
* enter/leave visitors at a named key, leading to three permutations of the
|
|
59
|
-
* visitor API:
|
|
68
|
+
* const document = parse('{ hero { name } }');
|
|
69
|
+
* const fieldNames = [];
|
|
60
70
|
*
|
|
61
|
-
*
|
|
71
|
+
* visit(document, {
|
|
72
|
+
* Field: (node) => {
|
|
73
|
+
* fieldNames.push(node.name.value);
|
|
74
|
+
* },
|
|
75
|
+
* });
|
|
62
76
|
*
|
|
63
|
-
*
|
|
64
|
-
* visit(ast, {
|
|
65
|
-
* Kind(node) {
|
|
66
|
-
* // enter the "Kind" node
|
|
67
|
-
* }
|
|
68
|
-
* })
|
|
77
|
+
* fieldNames; // => ['hero', 'name']
|
|
69
78
|
* ```
|
|
79
|
+
* @example
|
|
80
|
+
* ```ts
|
|
81
|
+
* // A named visitor object can provide separate enter and leave handlers for
|
|
82
|
+
* // nodes of that kind.
|
|
83
|
+
* import { parse, visit } from 'graphql/language';
|
|
70
84
|
*
|
|
71
|
-
*
|
|
85
|
+
* const document = parse('{ hero { name } }');
|
|
86
|
+
* const events = [];
|
|
72
87
|
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
88
|
+
* visit(document, {
|
|
89
|
+
* Field: {
|
|
90
|
+
* enter: (node) => {
|
|
91
|
+
* events.push(`enter:${node.name.value}`);
|
|
92
|
+
* },
|
|
93
|
+
* leave: (node) => {
|
|
94
|
+
* events.push(`leave:${node.name.value}`);
|
|
95
|
+
* },
|
|
96
|
+
* },
|
|
97
|
+
* });
|
|
98
|
+
*
|
|
99
|
+
* events; // => ['enter:hero', 'enter:name', 'leave:name', 'leave:hero']
|
|
84
100
|
* ```
|
|
101
|
+
* @example
|
|
102
|
+
* ```ts
|
|
103
|
+
* // Generic enter and leave handlers run for every node.
|
|
104
|
+
* import { parse, visit } from 'graphql/language';
|
|
85
105
|
*
|
|
86
|
-
*
|
|
106
|
+
* const document = parse('{ hero { name } }');
|
|
107
|
+
* let enterCount = 0;
|
|
108
|
+
* let leaveCount = 0;
|
|
87
109
|
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
110
|
+
* visit(document, {
|
|
111
|
+
* enter: (node) => {
|
|
112
|
+
* enterCount += 1;
|
|
113
|
+
* },
|
|
114
|
+
* leave: (node) => {
|
|
115
|
+
* leaveCount += 1;
|
|
92
116
|
* },
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
117
|
+
* });
|
|
118
|
+
*
|
|
119
|
+
* enterCount; // => leaveCount
|
|
120
|
+
* enterCount > 0; // => true
|
|
97
121
|
* ```
|
|
98
122
|
*/
|
|
99
123
|
|
|
100
124
|
exports.BREAK = BREAK;
|
|
101
125
|
|
|
126
|
+
/** @internal */
|
|
102
127
|
function visit(root, visitor, visitorKeys = _ast.QueryDocumentKeys) {
|
|
103
128
|
const enterLeaveMap = new Map();
|
|
104
129
|
|
|
@@ -262,6 +287,25 @@ function visit(root, visitor, visitorKeys = _ast.QueryDocumentKeys) {
|
|
|
262
287
|
* parallel. Each visitor will be visited for each node before moving on.
|
|
263
288
|
*
|
|
264
289
|
* If a prior visitor edits a node, no following visitors will see that node.
|
|
290
|
+
* @param visitors - The visitors to merge into one parallel visitor.
|
|
291
|
+
* @returns A visitor that delegates traversal to each provided visitor.
|
|
292
|
+
* @example
|
|
293
|
+
* ```ts
|
|
294
|
+
* import { parse, visit, visitInParallel } from 'graphql/language';
|
|
295
|
+
*
|
|
296
|
+
* const document = parse('{ hero { name } }');
|
|
297
|
+
* const events = [];
|
|
298
|
+
*
|
|
299
|
+
* visit(
|
|
300
|
+
* document,
|
|
301
|
+
* visitInParallel([
|
|
302
|
+
* { Field: (node) => { events.push(`field:${node.name.value}`); } },
|
|
303
|
+
* { Name: (node) => { events.push(`name:${node.value}`); } },
|
|
304
|
+
* ]),
|
|
305
|
+
* );
|
|
306
|
+
*
|
|
307
|
+
* events; // => ['field:hero', 'name:hero', 'field:name', 'name:name']
|
|
308
|
+
* ```
|
|
265
309
|
*/
|
|
266
310
|
|
|
267
311
|
function visitInParallel(visitors) {
|
|
@@ -338,6 +382,18 @@ function visitInParallel(visitors) {
|
|
|
338
382
|
}
|
|
339
383
|
/**
|
|
340
384
|
* Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.
|
|
385
|
+
* @param visitor - The visitor object to inspect.
|
|
386
|
+
* @param kind - The AST node kind to resolve handlers for.
|
|
387
|
+
* @returns The enter and leave handlers that apply for the given node kind.
|
|
388
|
+
* @example
|
|
389
|
+
* ```ts
|
|
390
|
+
* import { Kind, getEnterLeaveForKind } from 'graphql/language';
|
|
391
|
+
*
|
|
392
|
+
* const handlers = getEnterLeaveForKind({ Field: () => {} }, Kind.FIELD);
|
|
393
|
+
*
|
|
394
|
+
* typeof handlers.enter; // => 'function'
|
|
395
|
+
* handlers.leave; // => undefined
|
|
396
|
+
* ```
|
|
341
397
|
*/
|
|
342
398
|
|
|
343
399
|
function getEnterLeaveForKind(visitor, kind) {
|
|
@@ -361,8 +417,24 @@ function getEnterLeaveForKind(visitor, kind) {
|
|
|
361
417
|
}
|
|
362
418
|
/**
|
|
363
419
|
* Given a visitor instance, if it is leaving or not, and a node kind, return
|
|
364
|
-
* the function the visitor runtime should call.
|
|
420
|
+
* the function the visitor runtime should call. This deprecated compatibility
|
|
421
|
+
* helper delegates to `getEnterLeaveForKind`; call `getEnterLeaveForKind`
|
|
422
|
+
* directly because getVisitFn will be removed in v17.
|
|
423
|
+
* @param visitor - The visitor object to inspect.
|
|
424
|
+
* @param kind - The AST node kind to resolve a handler for.
|
|
425
|
+
* @param isLeaving - Whether to resolve the leave handler instead of the enter handler.
|
|
426
|
+
* @returns The visit function that applies for the given node kind and traversal phase, if one exists.
|
|
427
|
+
* @example
|
|
428
|
+
* ```ts
|
|
429
|
+
* import { Kind, getVisitFn } from 'graphql/language';
|
|
365
430
|
*
|
|
431
|
+
* const enter = getVisitFn({ Field: () => {} }, Kind.FIELD, false);
|
|
432
|
+
* const leave = getVisitFn({ Field: () => {} }, Kind.FIELD, true);
|
|
433
|
+
*
|
|
434
|
+
* typeof enter; // => 'function'
|
|
435
|
+
* leave; // => undefined
|
|
436
|
+
* ```
|
|
437
|
+
* @category Visiting
|
|
366
438
|
* @deprecated Please use `getEnterLeaveForKind` instead. Will be removed in v17
|
|
367
439
|
*/
|
|
368
440
|
|