graphql 17.0.0-beta.0 → 17.0.0-beta.2
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/__dev__/devMode.d.ts +1 -1
- package/__dev__/error/GraphQLError.d.ts +1 -1
- package/__dev__/error/ensureGraphQLError.d.ts +1 -1
- package/__dev__/error/index.d.ts +1 -1
- package/__dev__/error/locatedError.d.ts +1 -1
- package/__dev__/error/syntaxError.d.ts +1 -1
- package/__dev__/execution/AbortedGraphQLExecutionError.d.ts +1 -1
- package/__dev__/execution/AsyncWorkTracker.d.ts +1 -1
- package/__dev__/execution/ExecutionArgs.d.mts +1 -0
- package/__dev__/execution/ExecutionArgs.d.ts +1 -0
- package/__dev__/execution/ExecutionArgs.js +3 -0
- package/__dev__/execution/ExecutionArgs.mjs +3 -0
- package/__dev__/execution/Executor.d.ts +1 -1
- package/__dev__/execution/ExecutorThrowingOnIncremental.d.ts +1 -1
- package/__dev__/execution/buildResolveInfo.d.mts +1 -0
- package/__dev__/execution/buildResolveInfo.d.ts +1 -0
- package/__dev__/execution/buildResolveInfo.js +3 -0
- package/__dev__/execution/buildResolveInfo.mjs +3 -0
- package/__dev__/execution/cancellablePromise.d.ts +1 -1
- package/__dev__/execution/collectFields.d.ts +1 -1
- package/__dev__/execution/collectIteratorPromises.d.ts +1 -1
- package/__dev__/execution/createSharedExecutionContext.d.ts +1 -1
- package/__dev__/execution/execute.d.ts +1 -1
- package/__dev__/execution/getStreamUsage.d.ts +1 -1
- package/__dev__/execution/getVariableSignature.d.ts +1 -1
- package/__dev__/execution/hooks.d.ts +1 -1
- package/__dev__/execution/incremental/Computation.d.ts +1 -1
- package/__dev__/execution/incremental/IncrementalExecutor.d.ts +1 -1
- package/__dev__/execution/incremental/IncrementalPublisher.d.ts +1 -1
- package/__dev__/execution/incremental/Queue.d.ts +1 -1
- package/__dev__/execution/incremental/WorkQueue.d.ts +1 -1
- package/__dev__/execution/incremental/buildExecutionPlan.d.ts +1 -1
- package/__dev__/execution/index.d.ts +1 -1
- package/__dev__/execution/legacyIncremental/BranchingIncrementalExecutor.d.mts +1 -0
- package/__dev__/execution/legacyIncremental/BranchingIncrementalExecutor.d.ts +1 -0
- package/__dev__/execution/legacyIncremental/BranchingIncrementalExecutor.js +3 -0
- package/__dev__/execution/legacyIncremental/BranchingIncrementalExecutor.mjs +3 -0
- package/__dev__/execution/legacyIncremental/BranchingIncrementalPublisher.d.mts +1 -0
- package/__dev__/execution/legacyIncremental/BranchingIncrementalPublisher.d.ts +1 -0
- package/__dev__/execution/legacyIncremental/BranchingIncrementalPublisher.js +3 -0
- package/__dev__/execution/legacyIncremental/BranchingIncrementalPublisher.mjs +3 -0
- package/__dev__/execution/legacyIncremental/legacyExecuteIncrementally.d.mts +1 -0
- package/__dev__/execution/legacyIncremental/legacyExecuteIncrementally.d.ts +1 -0
- package/__dev__/execution/legacyIncremental/legacyExecuteIncrementally.js +3 -0
- package/__dev__/execution/legacyIncremental/legacyExecuteIncrementally.mjs +3 -0
- package/__dev__/execution/mapAsyncIterable.d.ts +1 -1
- package/__dev__/execution/returnIteratorCatchingErrors.d.ts +1 -1
- package/__dev__/execution/values.d.ts +1 -1
- package/__dev__/execution/withConcurrentAbruptClose.d.ts +1 -1
- package/__dev__/graphql.d.ts +1 -1
- package/__dev__/harness.d.ts +1 -1
- package/__dev__/index.d.ts +1 -1
- package/__dev__/jsutils/AccumulatorMap.d.ts +1 -1
- package/__dev__/jsutils/Maybe.d.ts +1 -1
- package/__dev__/jsutils/ObjMap.d.ts +1 -1
- package/__dev__/jsutils/Path.d.ts +1 -1
- package/__dev__/jsutils/PromiseOrValue.d.ts +1 -1
- package/__dev__/jsutils/capitalize.d.ts +1 -1
- package/__dev__/jsutils/devAssert.d.ts +1 -1
- package/__dev__/jsutils/didYouMean.d.ts +1 -1
- package/__dev__/jsutils/formatList.d.ts +1 -1
- package/__dev__/jsutils/getBySet.d.ts +1 -1
- package/__dev__/jsutils/groupBy.d.ts +1 -1
- package/__dev__/jsutils/identityFunc.d.ts +1 -1
- package/__dev__/jsutils/inspect.d.ts +1 -1
- package/__dev__/jsutils/instanceOf.d.ts +1 -1
- package/__dev__/jsutils/invariant.d.ts +1 -1
- package/__dev__/jsutils/isAsyncIterable.d.ts +1 -1
- package/__dev__/jsutils/isIterableObject.d.ts +1 -1
- package/__dev__/jsutils/isObjectLike.d.ts +1 -1
- package/__dev__/jsutils/isPromise.d.ts +1 -1
- package/__dev__/jsutils/isSameSet.d.ts +1 -1
- package/__dev__/jsutils/keyMap.d.ts +1 -1
- package/__dev__/jsutils/keyValMap.d.ts +1 -1
- package/__dev__/jsutils/mapValue.d.ts +1 -1
- package/__dev__/jsutils/memoize1.d.ts +1 -1
- package/__dev__/jsutils/memoize2.d.ts +1 -1
- package/__dev__/jsutils/memoize3.d.ts +1 -1
- package/__dev__/jsutils/naturalCompare.d.ts +1 -1
- package/__dev__/jsutils/printPathArray.d.ts +1 -1
- package/__dev__/jsutils/promiseForObject.d.ts +1 -1
- package/__dev__/jsutils/promiseReduce.d.ts +1 -1
- package/__dev__/jsutils/promiseWithResolvers.d.ts +1 -1
- package/__dev__/jsutils/suggestionList.d.ts +1 -1
- package/__dev__/jsutils/toError.d.ts +1 -1
- package/__dev__/jsutils/toObjMap.d.ts +1 -1
- package/__dev__/language/KindTypeMap.d.ts +1 -1
- package/__dev__/language/ast.d.ts +1 -1
- package/__dev__/language/blockString.d.ts +1 -1
- package/__dev__/language/characterClasses.d.ts +1 -1
- package/__dev__/language/directiveLocation.d.ts +1 -1
- package/__dev__/language/index.d.ts +1 -1
- package/__dev__/language/kinds.d.ts +1 -1
- package/__dev__/language/kinds_.d.ts +1 -1
- package/__dev__/language/lexer.d.ts +1 -1
- package/__dev__/language/location.d.ts +1 -1
- package/__dev__/language/parser.d.ts +1 -1
- package/__dev__/language/predicates.d.ts +1 -1
- package/__dev__/language/printLocation.d.ts +1 -1
- package/__dev__/language/printString.d.ts +1 -1
- package/__dev__/language/printer.d.ts +1 -1
- package/__dev__/language/schemaCoordinateLexer.d.ts +1 -1
- package/__dev__/language/source.d.ts +1 -1
- package/__dev__/language/tokenKind.d.ts +1 -1
- package/__dev__/language/visitor.d.ts +1 -1
- package/__dev__/type/assertName.d.ts +1 -1
- package/__dev__/type/definition.d.ts +1 -1
- package/__dev__/type/directives.d.ts +1 -1
- package/__dev__/type/index.d.ts +1 -1
- package/__dev__/type/introspection.d.ts +1 -1
- package/__dev__/type/scalars.d.ts +1 -1
- package/__dev__/type/schema.d.ts +1 -1
- package/__dev__/type/validate.d.ts +1 -1
- package/__dev__/utilities/TypeInfo.d.ts +1 -1
- package/__dev__/utilities/astFromValue.d.ts +1 -1
- package/__dev__/utilities/buildASTSchema.d.ts +1 -1
- package/__dev__/utilities/buildClientSchema.d.ts +1 -1
- package/__dev__/utilities/coerceInputValue.d.ts +1 -1
- package/__dev__/utilities/concatAST.d.ts +1 -1
- package/__dev__/utilities/extendSchema.d.ts +1 -1
- package/__dev__/utilities/findSchemaChanges.d.ts +1 -1
- package/__dev__/utilities/getDefaultValueAST.d.ts +1 -1
- package/__dev__/utilities/getIntrospectionQuery.d.ts +1 -1
- package/__dev__/utilities/getOperationAST.d.ts +1 -1
- package/__dev__/utilities/index.d.ts +1 -1
- package/__dev__/utilities/introspectionFromSchema.d.ts +1 -1
- package/__dev__/utilities/lexicographicSortSchema.d.ts +1 -1
- package/__dev__/utilities/mapSchemaConfig.d.ts +1 -1
- package/__dev__/utilities/printSchema.d.ts +1 -1
- package/__dev__/utilities/replaceVariables.d.ts +1 -1
- package/__dev__/utilities/resolveSchemaCoordinate.d.ts +1 -1
- package/__dev__/utilities/separateOperations.d.ts +1 -1
- package/__dev__/utilities/sortValueNode.d.ts +1 -1
- package/__dev__/utilities/stripIgnoredCharacters.d.ts +1 -1
- package/__dev__/utilities/typeComparators.d.ts +1 -1
- package/__dev__/utilities/typeFromAST.d.ts +1 -1
- package/__dev__/utilities/typedQueryDocumentNode.d.ts +1 -1
- package/__dev__/utilities/validateInputValue.d.ts +1 -1
- package/__dev__/utilities/valueFromAST.d.ts +1 -1
- package/__dev__/utilities/valueFromASTUntyped.d.ts +1 -1
- package/__dev__/utilities/valueToLiteral.d.ts +1 -1
- package/__dev__/validation/ValidationContext.d.ts +1 -1
- package/__dev__/validation/index.d.ts +1 -1
- package/__dev__/validation/rules/DeferStreamDirectiveLabelRule.d.ts +1 -1
- package/__dev__/validation/rules/DeferStreamDirectiveOnRootFieldRule.d.ts +1 -1
- package/__dev__/validation/rules/DeferStreamDirectiveOnValidOperationsRule.d.ts +1 -1
- package/__dev__/validation/rules/ExecutableDefinitionsRule.d.ts +1 -1
- package/__dev__/validation/rules/FieldsOnCorrectTypeRule.d.ts +1 -1
- package/__dev__/validation/rules/FragmentsOnCompositeTypesRule.d.ts +1 -1
- package/__dev__/validation/rules/KnownArgumentNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/KnownDirectivesRule.d.ts +1 -1
- package/__dev__/validation/rules/KnownFragmentNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/KnownOperationTypesRule.d.ts +1 -1
- package/__dev__/validation/rules/KnownTypeNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/LoneAnonymousOperationRule.d.ts +1 -1
- package/__dev__/validation/rules/LoneSchemaDefinitionRule.d.ts +1 -1
- package/__dev__/validation/rules/MaxIntrospectionDepthRule.d.ts +1 -1
- package/__dev__/validation/rules/NoFragmentCyclesRule.d.ts +1 -1
- package/__dev__/validation/rules/NoUndefinedVariablesRule.d.ts +1 -1
- package/__dev__/validation/rules/NoUnusedFragmentsRule.d.ts +1 -1
- package/__dev__/validation/rules/NoUnusedVariablesRule.d.ts +1 -1
- package/__dev__/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +1 -1
- package/__dev__/validation/rules/PossibleFragmentSpreadsRule.d.ts +1 -1
- package/__dev__/validation/rules/PossibleTypeExtensionsRule.d.ts +1 -1
- package/__dev__/validation/rules/ProvidedRequiredArgumentsRule.d.ts +1 -1
- package/__dev__/validation/rules/ScalarLeafsRule.d.ts +1 -1
- package/__dev__/validation/rules/SingleFieldSubscriptionsRule.d.ts +1 -1
- package/__dev__/validation/rules/StreamDirectiveOnListFieldRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueArgumentNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueDirectiveNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueDirectivesPerLocationRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueEnumValueNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueFieldDefinitionNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueFragmentNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueInputFieldNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueOperationNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueOperationTypesRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueTypeNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/UniqueVariableNamesRule.d.ts +1 -1
- package/__dev__/validation/rules/ValuesOfCorrectTypeRule.d.ts +1 -1
- package/__dev__/validation/rules/VariablesAreInputTypesRule.d.ts +1 -1
- package/__dev__/validation/rules/VariablesInAllowedPositionRule.d.ts +1 -1
- package/__dev__/validation/rules/custom/NoDeprecatedCustomRule.d.ts +1 -1
- package/__dev__/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +1 -1
- package/__dev__/validation/specifiedRules.d.ts +1 -1
- package/__dev__/validation/validate.d.ts +1 -1
- package/__dev__/version.d.ts +1 -1
- package/devMode.d.mts +29 -0
- package/devMode.d.ts +29 -0
- package/devMode.js +2 -2
- package/devMode.js.map +1 -1
- package/devMode.mjs.map +1 -1
- package/error/GraphQLError.d.mts +98 -14
- package/error/GraphQLError.d.ts +98 -14
- package/error/GraphQLError.js +18 -28
- package/error/GraphQLError.js.map +1 -1
- package/error/GraphQLError.mjs +11 -21
- package/error/GraphQLError.mjs.map +1 -1
- package/error/ensureGraphQLError.d.mts +3 -1
- package/error/ensureGraphQLError.d.ts +3 -1
- package/error/ensureGraphQLError.js +5 -8
- package/error/ensureGraphQLError.js.map +1 -1
- package/error/ensureGraphQLError.mjs +0 -3
- package/error/ensureGraphQLError.mjs.map +1 -1
- package/error/index.d.mts +10 -4
- package/error/index.d.ts +10 -4
- package/error/index.js +6 -6
- package/error/index.js.map +1 -1
- package/error/index.mjs.map +1 -1
- package/error/locatedError.d.mts +23 -3
- package/error/locatedError.d.ts +23 -3
- package/error/locatedError.js +4 -10
- package/error/locatedError.js.map +1 -1
- package/error/locatedError.mjs +0 -6
- package/error/locatedError.mjs.map +1 -1
- package/error/syntaxError.d.mts +17 -2
- package/error/syntaxError.d.ts +17 -2
- package/error/syntaxError.js +2 -6
- package/error/syntaxError.js.map +1 -1
- package/error/syntaxError.mjs +0 -4
- package/error/syntaxError.mjs.map +1 -1
- package/execution/AbortedGraphQLExecutionError.d.mts +28 -1
- package/execution/AbortedGraphQLExecutionError.d.ts +28 -1
- package/execution/AbortedGraphQLExecutionError.js.map +1 -1
- package/execution/AbortedGraphQLExecutionError.mjs.map +1 -1
- package/execution/AsyncWorkTracker.d.mts +1 -1
- package/execution/AsyncWorkTracker.d.ts +1 -1
- package/execution/AsyncWorkTracker.js +3 -7
- package/execution/AsyncWorkTracker.js.map +1 -1
- package/execution/AsyncWorkTracker.mjs +1 -5
- package/execution/AsyncWorkTracker.mjs.map +1 -1
- package/execution/ExecutionArgs.d.mts +101 -0
- package/execution/ExecutionArgs.d.ts +101 -0
- package/execution/ExecutionArgs.js +3 -0
- package/execution/ExecutionArgs.js.map +1 -0
- package/execution/ExecutionArgs.mjs +2 -0
- package/execution/ExecutionArgs.mjs.map +1 -0
- package/execution/Executor.d.mts +55 -52
- package/execution/Executor.d.ts +55 -52
- package/execution/Executor.js +84 -206
- package/execution/Executor.js.map +1 -1
- package/execution/Executor.mjs +3 -125
- package/execution/Executor.mjs.map +1 -1
- package/execution/ExecutorThrowingOnIncremental.d.mts +6 -6
- package/execution/ExecutorThrowingOnIncremental.d.ts +6 -6
- package/execution/ExecutorThrowingOnIncremental.js +11 -13
- package/execution/ExecutorThrowingOnIncremental.js.map +1 -1
- package/execution/ExecutorThrowingOnIncremental.mjs +0 -2
- package/execution/ExecutorThrowingOnIncremental.mjs.map +1 -1
- package/execution/buildResolveInfo.d.mts +16 -0
- package/execution/buildResolveInfo.d.ts +16 -0
- package/execution/buildResolveInfo.js +21 -0
- package/execution/buildResolveInfo.js.map +1 -0
- package/execution/buildResolveInfo.mjs +18 -0
- package/execution/buildResolveInfo.mjs.map +1 -0
- package/execution/cancellablePromise.d.mts +3 -0
- package/execution/cancellablePromise.d.ts +3 -0
- package/execution/cancellablePromise.js +2 -2
- package/execution/cancellablePromise.js.map +1 -1
- package/execution/cancellablePromise.mjs.map +1 -1
- package/execution/collectFields.d.mts +15 -9
- package/execution/collectFields.d.ts +15 -9
- package/execution/collectFields.js +19 -60
- package/execution/collectFields.js.map +1 -1
- package/execution/collectFields.mjs +0 -41
- package/execution/collectFields.mjs.map +1 -1
- package/execution/collectIteratorPromises.d.mts +2 -0
- package/execution/collectIteratorPromises.d.ts +2 -0
- package/execution/collectIteratorPromises.js +2 -7
- package/execution/collectIteratorPromises.js.map +1 -1
- package/execution/collectIteratorPromises.mjs +0 -5
- package/execution/collectIteratorPromises.mjs.map +1 -1
- package/execution/createSharedExecutionContext.d.mts +3 -2
- package/execution/createSharedExecutionContext.d.ts +3 -2
- package/execution/createSharedExecutionContext.js +2 -2
- package/execution/createSharedExecutionContext.js.map +1 -1
- package/execution/createSharedExecutionContext.mjs.map +1 -1
- package/execution/execute.d.mts +412 -47
- package/execution/execute.d.ts +412 -47
- package/execution/execute.js +73 -254
- package/execution/execute.js.map +1 -1
- package/execution/execute.mjs +12 -193
- package/execution/execute.mjs.map +1 -1
- package/execution/getStreamUsage.d.mts +5 -2
- package/execution/getStreamUsage.d.ts +5 -2
- package/execution/getStreamUsage.js +9 -16
- package/execution/getStreamUsage.js.map +1 -1
- package/execution/getStreamUsage.mjs +0 -7
- package/execution/getStreamUsage.mjs.map +1 -1
- package/execution/getVariableSignature.d.mts +7 -4
- package/execution/getVariableSignature.d.ts +7 -4
- package/execution/getVariableSignature.js +8 -10
- package/execution/getVariableSignature.js.map +1 -1
- package/execution/getVariableSignature.mjs +0 -2
- package/execution/getVariableSignature.mjs.map +1 -1
- package/execution/hooks.d.mts +4 -8
- package/execution/hooks.d.ts +4 -8
- package/execution/hooks.js +0 -1
- package/execution/hooks.js.map +1 -1
- package/execution/hooks.mjs +0 -1
- package/execution/hooks.mjs.map +1 -1
- package/execution/incremental/Computation.d.mts +2 -2
- package/execution/incremental/Computation.d.ts +2 -2
- package/execution/incremental/Computation.js +2 -3
- package/execution/incremental/Computation.js.map +1 -1
- package/execution/incremental/Computation.mjs +0 -1
- package/execution/incremental/Computation.mjs.map +1 -1
- package/execution/incremental/IncrementalExecutor.d.mts +137 -22
- package/execution/incremental/IncrementalExecutor.d.ts +137 -22
- package/execution/incremental/IncrementalExecutor.js +47 -77
- package/execution/incremental/IncrementalExecutor.js.map +1 -1
- package/execution/incremental/IncrementalExecutor.mjs +2 -32
- package/execution/incremental/IncrementalExecutor.mjs.map +1 -1
- package/execution/incremental/IncrementalPublisher.d.mts +4 -6
- package/execution/incremental/IncrementalPublisher.d.ts +4 -6
- package/execution/incremental/IncrementalPublisher.js +12 -18
- package/execution/incremental/IncrementalPublisher.js.map +1 -1
- package/execution/incremental/IncrementalPublisher.mjs +0 -6
- package/execution/incremental/IncrementalPublisher.mjs.map +1 -1
- package/execution/incremental/Queue.d.mts +1 -1
- package/execution/incremental/Queue.d.ts +1 -1
- package/execution/incremental/Queue.js +22 -79
- package/execution/incremental/Queue.js.map +1 -1
- package/execution/incremental/Queue.mjs +8 -64
- package/execution/incremental/Queue.mjs.map +1 -1
- package/execution/incremental/WorkQueue.d.mts +10 -2
- package/execution/incremental/WorkQueue.d.ts +10 -2
- package/execution/incremental/WorkQueue.js +7 -22
- package/execution/incremental/WorkQueue.js.map +1 -1
- package/execution/incremental/WorkQueue.mjs +0 -15
- package/execution/incremental/WorkQueue.mjs.map +1 -1
- package/execution/incremental/buildExecutionPlan.d.mts +4 -1
- package/execution/incremental/buildExecutionPlan.d.ts +4 -1
- package/execution/incremental/buildExecutionPlan.js +4 -4
- package/execution/incremental/buildExecutionPlan.js.map +1 -1
- package/execution/incremental/buildExecutionPlan.mjs.map +1 -1
- package/execution/index.d.mts +17 -8
- package/execution/index.d.ts +17 -8
- package/execution/index.js +26 -22
- package/execution/index.js.map +1 -1
- package/execution/index.mjs +2 -1
- package/execution/index.mjs.map +1 -1
- package/execution/legacyIncremental/BranchingIncrementalExecutor.d.mts +175 -0
- package/execution/legacyIncremental/BranchingIncrementalExecutor.d.ts +175 -0
- package/execution/legacyIncremental/BranchingIncrementalExecutor.js +69 -0
- package/execution/legacyIncremental/BranchingIncrementalExecutor.js.map +1 -0
- package/execution/legacyIncremental/BranchingIncrementalExecutor.mjs +65 -0
- package/execution/legacyIncremental/BranchingIncrementalExecutor.mjs.map +1 -0
- package/execution/legacyIncremental/BranchingIncrementalPublisher.d.mts +12 -0
- package/execution/legacyIncremental/BranchingIncrementalPublisher.d.ts +12 -0
- package/execution/legacyIncremental/BranchingIncrementalPublisher.js +131 -0
- package/execution/legacyIncremental/BranchingIncrementalPublisher.js.map +1 -0
- package/execution/legacyIncremental/BranchingIncrementalPublisher.mjs +127 -0
- package/execution/legacyIncremental/BranchingIncrementalPublisher.mjs.map +1 -0
- package/execution/legacyIncremental/legacyExecuteIncrementally.d.mts +165 -0
- package/execution/legacyIncremental/legacyExecuteIncrementally.d.ts +165 -0
- package/execution/legacyIncremental/legacyExecuteIncrementally.js +17 -0
- package/execution/legacyIncremental/legacyExecuteIncrementally.js.map +1 -0
- package/execution/legacyIncremental/legacyExecuteIncrementally.mjs +13 -0
- package/execution/legacyIncremental/legacyExecuteIncrementally.mjs.map +1 -0
- package/execution/mapAsyncIterable.d.mts +3 -1
- package/execution/mapAsyncIterable.d.ts +3 -1
- package/execution/mapAsyncIterable.js +4 -9
- package/execution/mapAsyncIterable.js.map +1 -1
- package/execution/mapAsyncIterable.mjs +0 -5
- package/execution/mapAsyncIterable.mjs.map +1 -1
- package/execution/returnIteratorCatchingErrors.d.mts +1 -0
- package/execution/returnIteratorCatchingErrors.d.ts +1 -0
- package/execution/returnIteratorCatchingErrors.js +1 -2
- package/execution/returnIteratorCatchingErrors.js.map +1 -1
- package/execution/returnIteratorCatchingErrors.mjs +1 -2
- package/execution/returnIteratorCatchingErrors.mjs.map +1 -1
- package/execution/values.d.mts +196 -14
- package/execution/values.d.ts +196 -14
- package/execution/values.js +45 -86
- package/execution/values.js.map +1 -1
- package/execution/values.mjs +14 -55
- package/execution/values.mjs.map +1 -1
- package/execution/withConcurrentAbruptClose.d.mts +3 -1
- package/execution/withConcurrentAbruptClose.d.ts +3 -1
- package/execution/withConcurrentAbruptClose.js +3 -17
- package/execution/withConcurrentAbruptClose.js.map +1 -1
- package/execution/withConcurrentAbruptClose.mjs +1 -15
- package/execution/withConcurrentAbruptClose.mjs.map +1 -1
- package/graphql.d.mts +198 -50
- package/graphql.d.ts +198 -50
- package/graphql.js +11 -23
- package/graphql.js.map +1 -1
- package/graphql.mjs +0 -12
- package/graphql.mjs.map +1 -1
- package/harness.d.mts +21 -4
- package/harness.d.ts +21 -4
- package/harness.js +7 -7
- package/harness.js.map +1 -1
- package/harness.mjs.map +1 -1
- package/index.d.mts +41 -39
- package/index.d.ts +41 -39
- package/index.js +260 -346
- package/index.js.map +1 -1
- package/index.mjs +5 -149
- package/index.mjs.map +1 -1
- package/jsutils/AccumulatorMap.d.mts +2 -0
- package/jsutils/AccumulatorMap.d.ts +2 -0
- package/jsutils/AccumulatorMap.js +0 -4
- package/jsutils/AccumulatorMap.js.map +1 -1
- package/jsutils/AccumulatorMap.mjs +0 -4
- package/jsutils/AccumulatorMap.mjs.map +1 -1
- package/jsutils/Maybe.d.mts +5 -1
- package/jsutils/Maybe.d.ts +5 -1
- package/jsutils/Maybe.js.map +1 -1
- package/jsutils/Maybe.mjs.map +1 -1
- package/jsutils/ObjMap.d.mts +6 -0
- package/jsutils/ObjMap.d.ts +6 -0
- package/jsutils/ObjMap.js.map +1 -1
- package/jsutils/ObjMap.mjs.map +1 -1
- package/jsutils/Path.d.mts +31 -1
- package/jsutils/Path.d.ts +31 -1
- package/jsutils/Path.js +0 -6
- package/jsutils/Path.js.map +1 -1
- package/jsutils/Path.mjs +0 -6
- package/jsutils/Path.mjs.map +1 -1
- package/jsutils/PromiseOrValue.d.mts +1 -0
- package/jsutils/PromiseOrValue.d.ts +1 -0
- package/jsutils/PromiseOrValue.js.map +1 -1
- package/jsutils/PromiseOrValue.mjs.map +1 -1
- package/jsutils/capitalize.d.mts +2 -0
- package/jsutils/capitalize.d.ts +2 -0
- package/jsutils/capitalize.js +0 -3
- package/jsutils/capitalize.js.map +1 -1
- package/jsutils/capitalize.mjs +0 -3
- package/jsutils/capitalize.mjs.map +1 -1
- package/jsutils/devAssert.d.mts +1 -0
- package/jsutils/devAssert.d.ts +1 -0
- package/jsutils/devAssert.js.map +1 -1
- package/jsutils/devAssert.mjs.map +1 -1
- package/jsutils/didYouMean.d.mts +4 -1
- package/jsutils/didYouMean.d.ts +4 -1
- package/jsutils/didYouMean.js +2 -2
- package/jsutils/didYouMean.js.map +1 -1
- package/jsutils/didYouMean.mjs.map +1 -1
- package/jsutils/formatList.d.mts +6 -2
- package/jsutils/formatList.d.ts +6 -2
- package/jsutils/formatList.js +2 -8
- package/jsutils/formatList.js.map +1 -1
- package/jsutils/formatList.mjs +0 -6
- package/jsutils/formatList.mjs.map +1 -1
- package/jsutils/getBySet.d.mts +1 -0
- package/jsutils/getBySet.d.ts +1 -0
- package/jsutils/getBySet.js +2 -2
- package/jsutils/getBySet.js.map +1 -1
- package/jsutils/getBySet.mjs.map +1 -1
- package/jsutils/groupBy.d.mts +2 -0
- package/jsutils/groupBy.d.ts +2 -0
- package/jsutils/groupBy.js +2 -5
- package/jsutils/groupBy.js.map +1 -1
- package/jsutils/groupBy.mjs +0 -3
- package/jsutils/groupBy.mjs.map +1 -1
- package/jsutils/identityFunc.d.mts +2 -0
- package/jsutils/identityFunc.d.ts +2 -0
- package/jsutils/identityFunc.js +0 -3
- package/jsutils/identityFunc.js.map +1 -1
- package/jsutils/identityFunc.mjs +0 -3
- package/jsutils/identityFunc.mjs.map +1 -1
- package/jsutils/inspect.d.mts +2 -0
- package/jsutils/inspect.d.ts +2 -0
- package/jsutils/inspect.js +0 -4
- package/jsutils/inspect.js.map +1 -1
- package/jsutils/inspect.mjs +0 -4
- package/jsutils/inspect.mjs.map +1 -1
- package/jsutils/instanceOf.d.mts +2 -0
- package/jsutils/instanceOf.d.ts +2 -0
- package/jsutils/instanceOf.js +3 -14
- package/jsutils/instanceOf.js.map +1 -1
- package/jsutils/instanceOf.mjs +1 -12
- package/jsutils/instanceOf.mjs.map +1 -1
- package/jsutils/invariant.d.mts +1 -0
- package/jsutils/invariant.d.ts +1 -0
- package/jsutils/invariant.js.map +1 -1
- package/jsutils/invariant.mjs.map +1 -1
- package/jsutils/isAsyncIterable.d.mts +2 -0
- package/jsutils/isAsyncIterable.d.ts +2 -0
- package/jsutils/isAsyncIterable.js +0 -4
- package/jsutils/isAsyncIterable.js.map +1 -1
- package/jsutils/isAsyncIterable.mjs +0 -4
- package/jsutils/isAsyncIterable.mjs.map +1 -1
- package/jsutils/isIterableObject.d.mts +6 -5
- package/jsutils/isIterableObject.d.ts +6 -5
- package/jsutils/isIterableObject.js +0 -17
- package/jsutils/isIterableObject.js.map +1 -1
- package/jsutils/isIterableObject.mjs +0 -17
- package/jsutils/isIterableObject.mjs.map +1 -1
- package/jsutils/isObjectLike.d.mts +2 -0
- package/jsutils/isObjectLike.d.ts +2 -0
- package/jsutils/isObjectLike.js +0 -4
- package/jsutils/isObjectLike.js.map +1 -1
- package/jsutils/isObjectLike.mjs +0 -4
- package/jsutils/isObjectLike.mjs.map +1 -1
- package/jsutils/isPromise.d.mts +3 -0
- package/jsutils/isPromise.d.ts +3 -0
- package/jsutils/isPromise.js +0 -4
- package/jsutils/isPromise.js.map +1 -1
- package/jsutils/isPromise.mjs +0 -4
- package/jsutils/isPromise.mjs.map +1 -1
- package/jsutils/isSameSet.d.mts +1 -0
- package/jsutils/isSameSet.d.ts +1 -0
- package/jsutils/isSameSet.js.map +1 -1
- package/jsutils/isSameSet.mjs.map +1 -1
- package/jsutils/keyMap.d.mts +8 -15
- package/jsutils/keyMap.d.ts +8 -15
- package/jsutils/keyMap.js +0 -27
- package/jsutils/keyMap.js.map +1 -1
- package/jsutils/keyMap.mjs +0 -27
- package/jsutils/keyMap.mjs.map +1 -1
- package/jsutils/keyValMap.d.mts +10 -7
- package/jsutils/keyValMap.d.ts +10 -7
- package/jsutils/keyValMap.js +0 -17
- package/jsutils/keyValMap.js.map +1 -1
- package/jsutils/keyValMap.mjs +0 -17
- package/jsutils/keyValMap.mjs.map +1 -1
- package/jsutils/mapValue.d.mts +3 -1
- package/jsutils/mapValue.d.ts +3 -1
- package/jsutils/mapValue.js +0 -4
- package/jsutils/mapValue.js.map +1 -1
- package/jsutils/mapValue.mjs +0 -4
- package/jsutils/mapValue.mjs.map +1 -1
- package/jsutils/memoize1.d.mts +2 -0
- package/jsutils/memoize1.d.ts +2 -0
- package/jsutils/memoize1.js +0 -3
- package/jsutils/memoize1.js.map +1 -1
- package/jsutils/memoize1.mjs +0 -3
- package/jsutils/memoize1.mjs.map +1 -1
- package/jsutils/memoize2.d.mts +2 -0
- package/jsutils/memoize2.d.ts +2 -0
- package/jsutils/memoize2.js +0 -3
- package/jsutils/memoize2.js.map +1 -1
- package/jsutils/memoize2.mjs +0 -3
- package/jsutils/memoize2.mjs.map +1 -1
- package/jsutils/memoize3.d.mts +2 -0
- package/jsutils/memoize3.d.ts +2 -0
- package/jsutils/memoize3.js +0 -3
- package/jsutils/memoize3.js.map +1 -1
- package/jsutils/memoize3.mjs +0 -3
- package/jsutils/memoize3.mjs.map +1 -1
- package/jsutils/naturalCompare.d.mts +1 -0
- package/jsutils/naturalCompare.d.ts +1 -0
- package/jsutils/naturalCompare.js +0 -7
- package/jsutils/naturalCompare.js.map +1 -1
- package/jsutils/naturalCompare.mjs +0 -7
- package/jsutils/naturalCompare.mjs.map +1 -1
- package/jsutils/printPathArray.d.mts +2 -0
- package/jsutils/printPathArray.d.ts +2 -0
- package/jsutils/printPathArray.js +0 -3
- package/jsutils/printPathArray.js.map +1 -1
- package/jsutils/printPathArray.mjs +0 -3
- package/jsutils/printPathArray.mjs.map +1 -1
- package/jsutils/promiseForObject.d.mts +4 -2
- package/jsutils/promiseForObject.d.ts +4 -2
- package/jsutils/promiseForObject.js +0 -7
- package/jsutils/promiseForObject.js.map +1 -1
- package/jsutils/promiseForObject.mjs +0 -7
- package/jsutils/promiseForObject.mjs.map +1 -1
- package/jsutils/promiseReduce.d.mts +3 -1
- package/jsutils/promiseReduce.d.ts +3 -1
- package/jsutils/promiseReduce.js +2 -9
- package/jsutils/promiseReduce.js.map +1 -1
- package/jsutils/promiseReduce.mjs +0 -7
- package/jsutils/promiseReduce.mjs.map +1 -1
- package/jsutils/promiseWithResolvers.d.mts +3 -1
- package/jsutils/promiseWithResolvers.d.ts +3 -1
- package/jsutils/promiseWithResolvers.js +0 -5
- package/jsutils/promiseWithResolvers.js.map +1 -1
- package/jsutils/promiseWithResolvers.mjs +0 -5
- package/jsutils/promiseWithResolvers.mjs.map +1 -1
- package/jsutils/suggestionList.d.mts +2 -0
- package/jsutils/suggestionList.d.ts +2 -0
- package/jsutils/suggestionList.js +3 -26
- package/jsutils/suggestionList.js.map +1 -1
- package/jsutils/suggestionList.mjs +1 -24
- package/jsutils/suggestionList.mjs.map +1 -1
- package/jsutils/toError.d.mts +2 -0
- package/jsutils/toError.d.ts +2 -0
- package/jsutils/toError.js +2 -5
- package/jsutils/toError.js.map +1 -1
- package/jsutils/toError.mjs +0 -3
- package/jsutils/toError.mjs.map +1 -1
- package/jsutils/toObjMap.d.mts +4 -2
- package/jsutils/toObjMap.d.ts +4 -2
- package/jsutils/toObjMap.js.map +1 -1
- package/jsutils/toObjMap.mjs.map +1 -1
- package/language/KindTypeMap.d.mts +2 -1
- package/language/KindTypeMap.d.ts +2 -1
- package/language/KindTypeMap.js.map +1 -1
- package/language/KindTypeMap.mjs.map +1 -1
- package/language/ast.d.mts +425 -58
- package/language/ast.d.ts +425 -58
- package/language/ast.js +8 -21
- package/language/ast.js.map +1 -1
- package/language/ast.mjs +8 -21
- package/language/ast.mjs.map +1 -1
- package/language/blockString.d.mts +1 -3
- package/language/blockString.d.ts +1 -3
- package/language/blockString.js +15 -41
- package/language/blockString.js.map +1 -1
- package/language/blockString.mjs +11 -37
- package/language/blockString.mjs.map +1 -1
- package/language/characterClasses.js +2 -45
- package/language/characterClasses.js.map +1 -1
- package/language/characterClasses.mjs +2 -45
- package/language/characterClasses.mjs.map +1 -1
- package/language/directiveLocation.d.mts +26 -6
- package/language/directiveLocation.d.ts +26 -6
- package/language/directiveLocation.js +2 -6
- package/language/directiveLocation.js.map +1 -1
- package/language/directiveLocation.mjs +2 -6
- package/language/directiveLocation.mjs.map +1 -1
- package/language/index.d.mts +22 -16
- package/language/index.d.ts +22 -16
- package/language/index.js +45 -49
- package/language/index.js.map +1 -1
- package/language/index.mjs +0 -4
- package/language/index.mjs.map +1 -1
- package/language/kinds.d.mts +5 -2
- package/language/kinds.d.ts +5 -2
- package/language/kinds.js.map +1 -1
- package/language/kinds.mjs.map +1 -1
- package/language/kinds_.d.mts +102 -12
- package/language/kinds_.d.ts +102 -12
- package/language/kinds_.js +2 -14
- package/language/kinds_.js.map +1 -1
- package/language/kinds_.mjs +1 -13
- package/language/kinds_.mjs.map +1 -1
- package/language/lexer.d.mts +51 -18
- package/language/lexer.d.ts +51 -18
- package/language/lexer.js +102 -343
- package/language/lexer.js.map +1 -1
- package/language/lexer.mjs +37 -278
- package/language/lexer.mjs.map +1 -1
- package/language/location.d.mts +17 -4
- package/language/location.d.ts +17 -4
- package/language/location.js +2 -6
- package/language/location.js.map +1 -1
- package/language/location.mjs +0 -4
- package/language/location.mjs.map +1 -1
- package/language/parser.d.mts +243 -15
- package/language/parser.d.ts +243 -15
- package/language/parser.js +183 -528
- package/language/parser.js.map +1 -1
- package/language/parser.mjs +26 -371
- package/language/parser.mjs.map +1 -1
- package/language/predicates.d.mts +182 -1
- package/language/predicates.d.ts +182 -1
- package/language/predicates.js +45 -49
- package/language/predicates.js.map +1 -1
- package/language/predicates.mjs +3 -7
- package/language/predicates.mjs.map +1 -1
- package/language/printLocation.d.mts +31 -3
- package/language/printLocation.d.ts +31 -3
- package/language/printLocation.js +2 -10
- package/language/printLocation.js.map +1 -1
- package/language/printLocation.mjs +0 -8
- package/language/printLocation.mjs.map +1 -1
- package/language/printString.d.mts +2 -0
- package/language/printString.d.ts +2 -0
- package/language/printString.js +5 -11
- package/language/printString.js.map +1 -1
- package/language/printString.mjs +5 -11
- package/language/printString.mjs.map +1 -1
- package/language/printer.d.mts +13 -1
- package/language/printer.d.ts +13 -1
- package/language/printer.js +10 -31
- package/language/printer.js.map +1 -1
- package/language/printer.mjs +5 -26
- package/language/printer.mjs.map +1 -1
- package/language/schemaCoordinateLexer.d.mts +17 -3
- package/language/schemaCoordinateLexer.d.ts +17 -3
- package/language/schemaCoordinateLexer.js +21 -51
- package/language/schemaCoordinateLexer.js.map +1 -1
- package/language/schemaCoordinateLexer.mjs +5 -35
- package/language/schemaCoordinateLexer.mjs.map +1 -1
- package/language/source.d.mts +28 -1
- package/language/source.d.ts +28 -1
- package/language/source.js +5 -17
- package/language/source.js.map +1 -1
- package/language/source.mjs +0 -12
- package/language/source.mjs.map +1 -1
- package/language/tokenKind.d.mts +5 -0
- package/language/tokenKind.d.ts +5 -0
- package/language/tokenKind.js +0 -4
- package/language/tokenKind.js.map +1 -1
- package/language/tokenKind.mjs +0 -4
- package/language/tokenKind.mjs.map +1 -1
- package/language/visitor.d.mts +184 -74
- package/language/visitor.d.ts +184 -74
- package/language/visitor.js +10 -25
- package/language/visitor.js.map +1 -1
- package/language/visitor.mjs +0 -15
- package/language/visitor.mjs.map +1 -1
- package/package.json +2 -2
- package/type/assertName.d.mts +18 -1
- package/type/assertName.d.ts +18 -1
- package/type/assertName.js +8 -16
- package/type/assertName.js.map +1 -1
- package/type/assertName.mjs +0 -8
- package/type/assertName.mjs.map +1 -1
- package/type/definition.d.mts +3268 -138
- package/type/definition.d.ts +3268 -138
- package/type/definition.js +99 -346
- package/type/definition.js.map +1 -1
- package/type/definition.mjs +5 -252
- package/type/definition.mjs.map +1 -1
- package/type/directives.d.mts +220 -26
- package/type/directives.d.ts +220 -26
- package/type/directives.js +51 -83
- package/type/directives.js.map +1 -1
- package/type/directives.mjs +5 -37
- package/type/directives.mjs.map +1 -1
- package/type/index.d.mts +18 -12
- package/type/index.d.ts +18 -12
- package/type/index.js +106 -129
- package/type/index.js.map +1 -1
- package/type/index.mjs +5 -48
- package/type/index.mjs.map +1 -1
- package/type/introspection.d.mts +38 -2
- package/type/introspection.d.ts +38 -2
- package/type/introspection.js +122 -107
- package/type/introspection.js.map +1 -1
- package/type/introspection.mjs +24 -9
- package/type/introspection.mjs.map +1 -1
- package/type/scalars.d.mts +31 -4
- package/type/scalars.d.ts +31 -4
- package/type/scalars.js +61 -76
- package/type/scalars.js.map +1 -1
- package/type/scalars.mjs +0 -15
- package/type/scalars.mjs.map +1 -1
- package/type/schema.d.mts +514 -38
- package/type/schema.d.ts +514 -38
- package/type/schema.js +32 -129
- package/type/schema.js.map +1 -1
- package/type/schema.mjs +0 -97
- package/type/schema.mjs.map +1 -1
- package/type/validate.d.mts +36 -7
- package/type/validate.d.ts +36 -7
- package/type/validate.js +83 -195
- package/type/validate.js.map +1 -1
- package/type/validate.mjs +1 -113
- package/type/validate.mjs.map +1 -1
- package/utilities/TypeInfo.d.mts +570 -7
- package/utilities/TypeInfo.d.ts +570 -7
- package/utilities/TypeInfo.js +62 -85
- package/utilities/TypeInfo.js.map +1 -1
- package/utilities/TypeInfo.mjs +2 -25
- package/utilities/TypeInfo.mjs.map +1 -1
- package/utilities/astFromValue.d.mts +39 -6
- package/utilities/astFromValue.d.ts +39 -6
- package/utilities/astFromValue.js +30 -74
- package/utilities/astFromValue.js.map +1 -1
- package/utilities/astFromValue.mjs +0 -44
- package/utilities/astFromValue.mjs.map +1 -1
- package/utilities/buildASTSchema.d.mts +71 -11
- package/utilities/buildASTSchema.d.ts +71 -11
- package/utilities/buildASTSchema.js +11 -31
- package/utilities/buildASTSchema.js.map +1 -1
- package/utilities/buildASTSchema.mjs +1 -21
- package/utilities/buildASTSchema.mjs.map +1 -1
- package/utilities/buildClientSchema.d.mts +20 -5
- package/utilities/buildClientSchema.d.ts +20 -5
- package/utilities/buildClientSchema.js +53 -83
- package/utilities/buildClientSchema.js.map +1 -1
- package/utilities/buildClientSchema.mjs +1 -30
- package/utilities/buildClientSchema.mjs.map +1 -1
- package/utilities/coerceInputValue.d.mts +88 -6
- package/utilities/coerceInputValue.d.ts +88 -6
- package/utilities/coerceInputValue.js +52 -81
- package/utilities/coerceInputValue.js.map +1 -1
- package/utilities/coerceInputValue.mjs +21 -50
- package/utilities/coerceInputValue.mjs.map +1 -1
- package/utilities/concatAST.d.mts +13 -1
- package/utilities/concatAST.d.ts +13 -1
- package/utilities/concatAST.js +2 -7
- package/utilities/concatAST.js.map +1 -1
- package/utilities/concatAST.mjs +0 -5
- package/utilities/concatAST.mjs.map +1 -1
- package/utilities/extendSchema.d.mts +61 -6
- package/utilities/extendSchema.d.ts +61 -6
- package/utilities/extendSchema.js +92 -126
- package/utilities/extendSchema.js.map +1 -1
- package/utilities/extendSchema.mjs +27 -61
- package/utilities/extendSchema.mjs.map +1 -1
- package/utilities/findSchemaChanges.d.mts +100 -2
- package/utilities/findSchemaChanges.d.ts +100 -2
- package/utilities/findSchemaChanges.js +41 -75
- package/utilities/findSchemaChanges.js.map +1 -1
- package/utilities/findSchemaChanges.mjs +3 -37
- package/utilities/findSchemaChanges.mjs.map +1 -1
- package/utilities/getDefaultValueAST.d.mts +3 -2
- package/utilities/getDefaultValueAST.d.ts +3 -2
- package/utilities/getDefaultValueAST.js +7 -7
- package/utilities/getDefaultValueAST.js.map +1 -1
- package/utilities/getDefaultValueAST.mjs.map +1 -1
- package/utilities/getIntrospectionQuery.d.mts +151 -3
- package/utilities/getIntrospectionQuery.d.ts +151 -3
- package/utilities/getIntrospectionQuery.js +22 -42
- package/utilities/getIntrospectionQuery.js.map +1 -1
- package/utilities/getIntrospectionQuery.mjs +22 -42
- package/utilities/getIntrospectionQuery.mjs.map +1 -1
- package/utilities/getOperationAST.d.mts +17 -2
- package/utilities/getOperationAST.d.ts +17 -2
- package/utilities/getOperationAST.js +2 -10
- package/utilities/getOperationAST.js.map +1 -1
- package/utilities/getOperationAST.mjs +0 -8
- package/utilities/getOperationAST.mjs.map +1 -1
- package/utilities/index.d.mts +45 -30
- package/utilities/index.d.ts +45 -30
- package/utilities/index.js +61 -88
- package/utilities/index.js.map +1 -1
- package/utilities/index.mjs +4 -37
- package/utilities/index.mjs.map +1 -1
- package/utilities/introspectionFromSchema.d.mts +56 -2
- package/utilities/introspectionFromSchema.d.ts +56 -2
- package/utilities/introspectionFromSchema.js +8 -16
- package/utilities/introspectionFromSchema.js.map +1 -1
- package/utilities/introspectionFromSchema.mjs +1 -9
- package/utilities/introspectionFromSchema.mjs.map +1 -1
- package/utilities/lexicographicSortSchema.d.mts +36 -1
- package/utilities/lexicographicSortSchema.d.ts +36 -1
- package/utilities/lexicographicSortSchema.js +14 -19
- package/utilities/lexicographicSortSchema.js.map +1 -1
- package/utilities/lexicographicSortSchema.mjs +0 -5
- package/utilities/lexicographicSortSchema.mjs.map +1 -1
- package/utilities/mapSchemaConfig.d.mts +9 -6
- package/utilities/mapSchemaConfig.d.ts +9 -6
- package/utilities/mapSchemaConfig.js +28 -40
- package/utilities/mapSchemaConfig.js.map +1 -1
- package/utilities/mapSchemaConfig.mjs +0 -12
- package/utilities/mapSchemaConfig.mjs.map +1 -1
- package/utilities/printSchema.d.mts +87 -3
- package/utilities/printSchema.d.ts +87 -3
- package/utilities/printSchema.js +30 -59
- package/utilities/printSchema.js.map +1 -1
- package/utilities/printSchema.mjs +1 -30
- package/utilities/printSchema.mjs.map +1 -1
- package/utilities/replaceVariables.d.mts +40 -4
- package/utilities/replaceVariables.d.ts +40 -4
- package/utilities/replaceVariables.js +9 -17
- package/utilities/replaceVariables.js.map +1 -1
- package/utilities/replaceVariables.mjs +0 -8
- package/utilities/replaceVariables.mjs.map +1 -1
- package/utilities/resolveSchemaCoordinate.d.mts +67 -5
- package/utilities/resolveSchemaCoordinate.d.ts +67 -5
- package/utilities/resolveSchemaCoordinate.js +23 -79
- package/utilities/resolveSchemaCoordinate.js.map +1 -1
- package/utilities/resolveSchemaCoordinate.mjs +0 -56
- package/utilities/resolveSchemaCoordinate.mjs.map +1 -1
- package/utilities/separateOperations.d.mts +32 -2
- package/utilities/separateOperations.d.ts +32 -2
- package/utilities/separateOperations.js +7 -22
- package/utilities/separateOperations.js.map +1 -1
- package/utilities/separateOperations.mjs +0 -15
- package/utilities/separateOperations.mjs.map +1 -1
- package/utilities/sortValueNode.d.mts +1 -1
- package/utilities/sortValueNode.d.ts +1 -1
- package/utilities/sortValueNode.js +12 -19
- package/utilities/sortValueNode.js.map +1 -1
- package/utilities/sortValueNode.mjs +0 -7
- package/utilities/sortValueNode.mjs.map +1 -1
- package/utilities/stripIgnoredCharacters.d.mts +14 -7
- package/utilities/stripIgnoredCharacters.d.ts +14 -7
- package/utilities/stripIgnoredCharacters.js +11 -76
- package/utilities/stripIgnoredCharacters.js.map +1 -1
- package/utilities/stripIgnoredCharacters.mjs +0 -65
- package/utilities/stripIgnoredCharacters.mjs.map +1 -1
- package/utilities/typeComparators.d.mts +86 -2
- package/utilities/typeComparators.d.ts +86 -2
- package/utilities/typeComparators.js +14 -47
- package/utilities/typeComparators.js.map +1 -1
- package/utilities/typeComparators.mjs +0 -33
- package/utilities/typeComparators.mjs.map +1 -1
- package/utilities/typeFromAST.d.mts +90 -4
- package/utilities/typeFromAST.d.ts +90 -4
- package/utilities/typeFromAST.js +7 -7
- package/utilities/typeFromAST.js.map +1 -1
- package/utilities/typeFromAST.mjs.map +1 -1
- package/utilities/typedQueryDocumentNode.d.mts +5 -1
- package/utilities/typedQueryDocumentNode.d.ts +5 -1
- package/utilities/typedQueryDocumentNode.js.map +1 -1
- package/utilities/typedQueryDocumentNode.mjs.map +1 -1
- package/utilities/validateInputValue.d.mts +129 -6
- package/utilities/validateInputValue.d.ts +129 -6
- package/utilities/validateInputValue.js +60 -80
- package/utilities/validateInputValue.js.map +1 -1
- package/utilities/validateInputValue.mjs +0 -20
- package/utilities/validateInputValue.mjs.map +1 -1
- package/utilities/valueFromAST.d.mts +45 -4
- package/utilities/valueFromAST.d.ts +45 -4
- package/utilities/valueFromAST.js +32 -72
- package/utilities/valueFromAST.js.map +1 -1
- package/utilities/valueFromAST.mjs +13 -53
- package/utilities/valueFromAST.mjs.map +1 -1
- package/utilities/valueFromASTUntyped.d.mts +18 -5
- package/utilities/valueFromASTUntyped.d.ts +18 -5
- package/utilities/valueFromASTUntyped.js +12 -28
- package/utilities/valueFromASTUntyped.js.map +1 -1
- package/utilities/valueFromASTUntyped.mjs +0 -16
- package/utilities/valueFromASTUntyped.mjs.map +1 -1
- package/utilities/valueToLiteral.d.mts +32 -3
- package/utilities/valueToLiteral.d.ts +32 -3
- package/utilities/valueToLiteral.js +37 -70
- package/utilities/valueToLiteral.js.map +1 -1
- package/utilities/valueToLiteral.mjs +7 -40
- package/utilities/valueToLiteral.mjs.map +1 -1
- package/validation/ValidationContext.d.mts +499 -9
- package/validation/ValidationContext.d.ts +499 -9
- package/validation/ValidationContext.js +9 -16
- package/validation/ValidationContext.js.map +1 -1
- package/validation/ValidationContext.mjs +1 -8
- package/validation/ValidationContext.mjs.map +1 -1
- package/validation/index.d.mts +53 -46
- package/validation/index.d.ts +53 -46
- package/validation/index.js +91 -125
- package/validation/index.js.map +1 -1
- package/validation/index.mjs +0 -34
- package/validation/index.mjs.map +1 -1
- package/validation/rules/DeferStreamDirectiveLabelRule.d.mts +32 -2
- package/validation/rules/DeferStreamDirectiveLabelRule.d.ts +32 -2
- package/validation/rules/DeferStreamDirectiveLabelRule.js +9 -14
- package/validation/rules/DeferStreamDirectiveLabelRule.js.map +1 -1
- package/validation/rules/DeferStreamDirectiveLabelRule.mjs +0 -5
- package/validation/rules/DeferStreamDirectiveLabelRule.mjs.map +1 -1
- package/validation/rules/DeferStreamDirectiveOnRootFieldRule.d.mts +30 -2
- package/validation/rules/DeferStreamDirectiveOnRootFieldRule.d.ts +30 -2
- package/validation/rules/DeferStreamDirectiveOnRootFieldRule.js +8 -13
- package/validation/rules/DeferStreamDirectiveOnRootFieldRule.js.map +1 -1
- package/validation/rules/DeferStreamDirectiveOnRootFieldRule.mjs +0 -5
- package/validation/rules/DeferStreamDirectiveOnRootFieldRule.mjs.map +1 -1
- package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.d.mts +54 -2
- package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.d.ts +54 -2
- package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.js +14 -19
- package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.js.map +1 -1
- package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.mjs +0 -5
- package/validation/rules/DeferStreamDirectiveOnValidOperationsRule.mjs.map +1 -1
- package/validation/rules/ExecutableDefinitionsRule.d.mts +30 -2
- package/validation/rules/ExecutableDefinitionsRule.d.ts +30 -2
- package/validation/rules/ExecutableDefinitionsRule.js +7 -15
- package/validation/rules/ExecutableDefinitionsRule.js.map +1 -1
- package/validation/rules/ExecutableDefinitionsRule.mjs +0 -8
- package/validation/rules/ExecutableDefinitionsRule.mjs.map +1 -1
- package/validation/rules/FieldsOnCorrectTypeRule.d.mts +30 -2
- package/validation/rules/FieldsOnCorrectTypeRule.d.ts +30 -2
- package/validation/rules/FieldsOnCorrectTypeRule.js +14 -41
- package/validation/rules/FieldsOnCorrectTypeRule.js.map +1 -1
- package/validation/rules/FieldsOnCorrectTypeRule.mjs +0 -27
- package/validation/rules/FieldsOnCorrectTypeRule.mjs.map +1 -1
- package/validation/rules/FragmentsOnCompositeTypesRule.d.mts +30 -2
- package/validation/rules/FragmentsOnCompositeTypesRule.d.ts +30 -2
- package/validation/rules/FragmentsOnCompositeTypesRule.js +12 -21
- package/validation/rules/FragmentsOnCompositeTypesRule.js.map +1 -1
- package/validation/rules/FragmentsOnCompositeTypesRule.mjs +0 -9
- package/validation/rules/FragmentsOnCompositeTypesRule.mjs.map +1 -1
- package/validation/rules/KnownArgumentNamesRule.d.mts +31 -5
- package/validation/rules/KnownArgumentNamesRule.d.ts +31 -5
- package/validation/rules/KnownArgumentNamesRule.js +16 -29
- package/validation/rules/KnownArgumentNamesRule.js.map +1 -1
- package/validation/rules/KnownArgumentNamesRule.mjs +0 -13
- package/validation/rules/KnownArgumentNamesRule.mjs.map +1 -1
- package/validation/rules/KnownDirectivesRule.d.mts +30 -2
- package/validation/rules/KnownDirectivesRule.d.ts +30 -2
- package/validation/rules/KnownDirectivesRule.js +66 -73
- package/validation/rules/KnownDirectivesRule.js.map +1 -1
- package/validation/rules/KnownDirectivesRule.mjs +3 -10
- package/validation/rules/KnownDirectivesRule.mjs.map +1 -1
- package/validation/rules/KnownFragmentNamesRule.d.mts +30 -2
- package/validation/rules/KnownFragmentNamesRule.d.ts +30 -2
- package/validation/rules/KnownFragmentNamesRule.js +2 -10
- package/validation/rules/KnownFragmentNamesRule.js.map +1 -1
- package/validation/rules/KnownFragmentNamesRule.mjs +0 -8
- package/validation/rules/KnownFragmentNamesRule.mjs.map +1 -1
- package/validation/rules/KnownOperationTypesRule.d.mts +22 -2
- package/validation/rules/KnownOperationTypesRule.d.ts +22 -2
- package/validation/rules/KnownOperationTypesRule.js +2 -10
- package/validation/rules/KnownOperationTypesRule.js.map +1 -1
- package/validation/rules/KnownOperationTypesRule.mjs +0 -8
- package/validation/rules/KnownOperationTypesRule.mjs.map +1 -1
- package/validation/rules/KnownTypeNamesRule.d.mts +30 -2
- package/validation/rules/KnownTypeNamesRule.d.ts +30 -2
- package/validation/rules/KnownTypeNamesRule.js +11 -19
- package/validation/rules/KnownTypeNamesRule.js.map +1 -1
- package/validation/rules/KnownTypeNamesRule.mjs +0 -8
- package/validation/rules/KnownTypeNamesRule.mjs.map +1 -1
- package/validation/rules/LoneAnonymousOperationRule.d.mts +30 -2
- package/validation/rules/LoneAnonymousOperationRule.d.ts +30 -2
- package/validation/rules/LoneAnonymousOperationRule.js +4 -12
- package/validation/rules/LoneAnonymousOperationRule.js.map +1 -1
- package/validation/rules/LoneAnonymousOperationRule.mjs +0 -8
- package/validation/rules/LoneAnonymousOperationRule.mjs.map +1 -1
- package/validation/rules/LoneSchemaDefinitionRule.d.mts +23 -2
- package/validation/rules/LoneSchemaDefinitionRule.d.ts +23 -2
- package/validation/rules/LoneSchemaDefinitionRule.js +3 -8
- package/validation/rules/LoneSchemaDefinitionRule.js.map +1 -1
- package/validation/rules/LoneSchemaDefinitionRule.mjs +0 -5
- package/validation/rules/LoneSchemaDefinitionRule.mjs.map +1 -1
- package/validation/rules/MaxIntrospectionDepthRule.d.mts +33 -2
- package/validation/rules/MaxIntrospectionDepthRule.d.ts +33 -2
- package/validation/rules/MaxIntrospectionDepthRule.js +5 -19
- package/validation/rules/MaxIntrospectionDepthRule.js.map +1 -1
- package/validation/rules/MaxIntrospectionDepthRule.mjs +0 -14
- package/validation/rules/MaxIntrospectionDepthRule.mjs.map +1 -1
- package/validation/rules/NoFragmentCyclesRule.d.mts +30 -2
- package/validation/rules/NoFragmentCyclesRule.d.ts +30 -2
- package/validation/rules/NoFragmentCyclesRule.js +2 -17
- package/validation/rules/NoFragmentCyclesRule.js.map +1 -1
- package/validation/rules/NoFragmentCyclesRule.mjs +0 -15
- package/validation/rules/NoFragmentCyclesRule.mjs.map +1 -1
- package/validation/rules/NoUndefinedVariablesRule.d.mts +30 -2
- package/validation/rules/NoUndefinedVariablesRule.d.ts +30 -2
- package/validation/rules/NoUndefinedVariablesRule.js +2 -10
- package/validation/rules/NoUndefinedVariablesRule.js.map +1 -1
- package/validation/rules/NoUndefinedVariablesRule.mjs +0 -8
- package/validation/rules/NoUndefinedVariablesRule.mjs.map +1 -1
- package/validation/rules/NoUnusedFragmentsRule.d.mts +30 -2
- package/validation/rules/NoUnusedFragmentsRule.d.ts +30 -2
- package/validation/rules/NoUnusedFragmentsRule.js +2 -10
- package/validation/rules/NoUnusedFragmentsRule.js.map +1 -1
- package/validation/rules/NoUnusedFragmentsRule.mjs +0 -8
- package/validation/rules/NoUnusedFragmentsRule.mjs.map +1 -1
- package/validation/rules/NoUnusedVariablesRule.d.mts +31 -2
- package/validation/rules/NoUnusedVariablesRule.d.ts +31 -2
- package/validation/rules/NoUnusedVariablesRule.js +3 -11
- package/validation/rules/NoUnusedVariablesRule.js.map +1 -1
- package/validation/rules/NoUnusedVariablesRule.mjs +0 -8
- package/validation/rules/NoUnusedVariablesRule.mjs.map +1 -1
- package/validation/rules/OverlappingFieldsCanBeMergedRule.d.mts +35 -2
- package/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +35 -2
- package/validation/rules/OverlappingFieldsCanBeMergedRule.js +32 -206
- package/validation/rules/OverlappingFieldsCanBeMergedRule.js.map +1 -1
- package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +1 -175
- package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs.map +1 -1
- package/validation/rules/PossibleFragmentSpreadsRule.d.mts +38 -2
- package/validation/rules/PossibleFragmentSpreadsRule.d.ts +38 -2
- package/validation/rules/PossibleFragmentSpreadsRule.js +17 -24
- package/validation/rules/PossibleFragmentSpreadsRule.js.map +1 -1
- package/validation/rules/PossibleFragmentSpreadsRule.mjs +0 -7
- package/validation/rules/PossibleFragmentSpreadsRule.mjs.map +1 -1
- package/validation/rules/PossibleTypeExtensionsRule.d.mts +23 -2
- package/validation/rules/PossibleTypeExtensionsRule.d.ts +23 -2
- package/validation/rules/PossibleTypeExtensionsRule.js +38 -49
- package/validation/rules/PossibleTypeExtensionsRule.js.map +1 -1
- package/validation/rules/PossibleTypeExtensionsRule.mjs +0 -11
- package/validation/rules/PossibleTypeExtensionsRule.mjs.map +1 -1
- package/validation/rules/ProvidedRequiredArgumentsRule.d.mts +31 -5
- package/validation/rules/ProvidedRequiredArgumentsRule.d.ts +31 -5
- package/validation/rules/ProvidedRequiredArgumentsRule.js +20 -33
- package/validation/rules/ProvidedRequiredArgumentsRule.js.map +1 -1
- package/validation/rules/ProvidedRequiredArgumentsRule.mjs +0 -13
- package/validation/rules/ProvidedRequiredArgumentsRule.mjs.map +1 -1
- package/validation/rules/ScalarLeafsRule.d.mts +30 -2
- package/validation/rules/ScalarLeafsRule.d.ts +30 -2
- package/validation/rules/ScalarLeafsRule.js +10 -16
- package/validation/rules/ScalarLeafsRule.js.map +1 -1
- package/validation/rules/ScalarLeafsRule.mjs +0 -6
- package/validation/rules/ScalarLeafsRule.mjs.map +1 -1
- package/validation/rules/SingleFieldSubscriptionsRule.d.mts +36 -4
- package/validation/rules/SingleFieldSubscriptionsRule.d.ts +36 -4
- package/validation/rules/SingleFieldSubscriptionsRule.js +8 -17
- package/validation/rules/SingleFieldSubscriptionsRule.js.map +1 -1
- package/validation/rules/SingleFieldSubscriptionsRule.mjs +0 -9
- package/validation/rules/SingleFieldSubscriptionsRule.mjs.map +1 -1
- package/validation/rules/StreamDirectiveOnListFieldRule.d.mts +23 -2
- package/validation/rules/StreamDirectiveOnListFieldRule.d.ts +23 -2
- package/validation/rules/StreamDirectiveOnListFieldRule.js +7 -12
- package/validation/rules/StreamDirectiveOnListFieldRule.js.map +1 -1
- package/validation/rules/StreamDirectiveOnListFieldRule.mjs +0 -5
- package/validation/rules/StreamDirectiveOnListFieldRule.mjs.map +1 -1
- package/validation/rules/UniqueArgumentDefinitionNamesRule.d.mts +23 -2
- package/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts +23 -2
- package/validation/rules/UniqueArgumentDefinitionNamesRule.js +4 -10
- package/validation/rules/UniqueArgumentDefinitionNamesRule.js.map +1 -1
- package/validation/rules/UniqueArgumentDefinitionNamesRule.mjs +0 -6
- package/validation/rules/UniqueArgumentDefinitionNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueArgumentNamesRule.d.mts +30 -2
- package/validation/rules/UniqueArgumentNamesRule.d.ts +30 -2
- package/validation/rules/UniqueArgumentNamesRule.js +4 -12
- package/validation/rules/UniqueArgumentNamesRule.js.map +1 -1
- package/validation/rules/UniqueArgumentNamesRule.mjs +0 -8
- package/validation/rules/UniqueArgumentNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueDirectiveNamesRule.d.mts +23 -2
- package/validation/rules/UniqueDirectiveNamesRule.d.ts +23 -2
- package/validation/rules/UniqueDirectiveNamesRule.js +3 -8
- package/validation/rules/UniqueDirectiveNamesRule.js.map +1 -1
- package/validation/rules/UniqueDirectiveNamesRule.mjs +0 -5
- package/validation/rules/UniqueDirectiveNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueDirectivesPerLocationRule.d.mts +30 -2
- package/validation/rules/UniqueDirectivesPerLocationRule.d.ts +30 -2
- package/validation/rules/UniqueDirectivesPerLocationRule.js +20 -21
- package/validation/rules/UniqueDirectivesPerLocationRule.js.map +1 -1
- package/validation/rules/UniqueDirectivesPerLocationRule.mjs +10 -11
- package/validation/rules/UniqueDirectivesPerLocationRule.mjs.map +1 -1
- package/validation/rules/UniqueEnumValueNamesRule.d.mts +23 -2
- package/validation/rules/UniqueEnumValueNamesRule.d.ts +23 -2
- package/validation/rules/UniqueEnumValueNamesRule.js +5 -10
- package/validation/rules/UniqueEnumValueNamesRule.js.map +1 -1
- package/validation/rules/UniqueEnumValueNamesRule.mjs +0 -5
- package/validation/rules/UniqueEnumValueNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueFieldDefinitionNamesRule.d.mts +23 -2
- package/validation/rules/UniqueFieldDefinitionNamesRule.d.ts +23 -2
- package/validation/rules/UniqueFieldDefinitionNamesRule.js +5 -10
- package/validation/rules/UniqueFieldDefinitionNamesRule.js.map +1 -1
- package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +0 -5
- package/validation/rules/UniqueFieldDefinitionNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueFragmentNamesRule.d.mts +30 -2
- package/validation/rules/UniqueFragmentNamesRule.d.ts +30 -2
- package/validation/rules/UniqueFragmentNamesRule.js +2 -9
- package/validation/rules/UniqueFragmentNamesRule.js.map +1 -1
- package/validation/rules/UniqueFragmentNamesRule.mjs +0 -7
- package/validation/rules/UniqueFragmentNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueInputFieldNamesRule.d.mts +34 -2
- package/validation/rules/UniqueInputFieldNamesRule.d.ts +34 -2
- package/validation/rules/UniqueInputFieldNamesRule.js +4 -12
- package/validation/rules/UniqueInputFieldNamesRule.js.map +1 -1
- package/validation/rules/UniqueInputFieldNamesRule.mjs +0 -8
- package/validation/rules/UniqueInputFieldNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueOperationNamesRule.d.mts +30 -2
- package/validation/rules/UniqueOperationNamesRule.d.ts +30 -2
- package/validation/rules/UniqueOperationNamesRule.js +2 -9
- package/validation/rules/UniqueOperationNamesRule.js.map +1 -1
- package/validation/rules/UniqueOperationNamesRule.mjs +0 -7
- package/validation/rules/UniqueOperationNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueOperationTypesRule.d.mts +23 -2
- package/validation/rules/UniqueOperationTypesRule.d.ts +23 -2
- package/validation/rules/UniqueOperationTypesRule.js +3 -8
- package/validation/rules/UniqueOperationTypesRule.js.map +1 -1
- package/validation/rules/UniqueOperationTypesRule.mjs +0 -5
- package/validation/rules/UniqueOperationTypesRule.mjs.map +1 -1
- package/validation/rules/UniqueTypeNamesRule.d.mts +23 -2
- package/validation/rules/UniqueTypeNamesRule.d.ts +23 -2
- package/validation/rules/UniqueTypeNamesRule.js +3 -8
- package/validation/rules/UniqueTypeNamesRule.js.map +1 -1
- package/validation/rules/UniqueTypeNamesRule.mjs +0 -5
- package/validation/rules/UniqueTypeNamesRule.mjs.map +1 -1
- package/validation/rules/UniqueVariableNamesRule.d.mts +30 -2
- package/validation/rules/UniqueVariableNamesRule.d.ts +30 -2
- package/validation/rules/UniqueVariableNamesRule.js +4 -9
- package/validation/rules/UniqueVariableNamesRule.js.map +1 -1
- package/validation/rules/UniqueVariableNamesRule.mjs +0 -5
- package/validation/rules/UniqueVariableNamesRule.mjs.map +1 -1
- package/validation/rules/ValuesOfCorrectTypeRule.d.mts +30 -2
- package/validation/rules/ValuesOfCorrectTypeRule.d.ts +30 -2
- package/validation/rules/ValuesOfCorrectTypeRule.js +3 -23
- package/validation/rules/ValuesOfCorrectTypeRule.js.map +1 -1
- package/validation/rules/ValuesOfCorrectTypeRule.mjs +1 -21
- package/validation/rules/ValuesOfCorrectTypeRule.mjs.map +1 -1
- package/validation/rules/VariablesAreInputTypesRule.d.mts +34 -2
- package/validation/rules/VariablesAreInputTypesRule.d.ts +34 -2
- package/validation/rules/VariablesAreInputTypesRule.js +8 -16
- package/validation/rules/VariablesAreInputTypesRule.js.map +1 -1
- package/validation/rules/VariablesAreInputTypesRule.mjs +0 -8
- package/validation/rules/VariablesAreInputTypesRule.mjs.map +1 -1
- package/validation/rules/VariablesInAllowedPositionRule.d.mts +30 -2
- package/validation/rules/VariablesInAllowedPositionRule.d.ts +30 -2
- package/validation/rules/VariablesInAllowedPositionRule.js +14 -34
- package/validation/rules/VariablesInAllowedPositionRule.js.map +1 -1
- package/validation/rules/VariablesInAllowedPositionRule.mjs +0 -20
- package/validation/rules/VariablesInAllowedPositionRule.mjs.map +1 -1
- package/validation/rules/custom/NoDeprecatedCustomRule.d.mts +43 -2
- package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +43 -2
- package/validation/rules/custom/NoDeprecatedCustomRule.js +8 -18
- package/validation/rules/custom/NoDeprecatedCustomRule.js.map +1 -1
- package/validation/rules/custom/NoDeprecatedCustomRule.mjs +0 -10
- package/validation/rules/custom/NoDeprecatedCustomRule.mjs.map +1 -1
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.mts +30 -2
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +30 -2
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +6 -16
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js.map +1 -1
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs +0 -10
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs.map +1 -1
- package/validation/specifiedRules.d.mts +3 -4
- package/validation/specifiedRules.d.ts +3 -4
- package/validation/specifiedRules.js +87 -133
- package/validation/specifiedRules.js.map +1 -1
- package/validation/specifiedRules.mjs +0 -46
- package/validation/specifiedRules.mjs.map +1 -1
- package/validation/validate.d.mts +70 -12
- package/validation/validate.d.ts +70 -12
- package/validation/validate.js +19 -60
- package/validation/validate.js.map +1 -1
- package/validation/validate.mjs +0 -41
- package/validation/validate.mjs.map +1 -1
- package/version.d.mts +3 -6
- package/version.d.ts +3 -6
- package/version.js +2 -10
- package/version.js.map +1 -1
- package/version.mjs +2 -10
- package/version.mjs.map +1 -1
package/language/visitor.d.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* relevant functions to be called during the visitor's traversal.
|
|
6
|
-
*/
|
|
1
|
+
/** @category Visiting */
|
|
2
|
+
import type { ASTNode } from "./ast.js";
|
|
3
|
+
import { Kind } from "./kinds.js";
|
|
4
|
+
/** A visitor defines the callbacks called during AST traversal. */
|
|
7
5
|
export type ASTVisitor = EnterLeaveVisitor<ASTNode> | KindVisitor;
|
|
8
6
|
type KindVisitor = {
|
|
9
7
|
readonly [NodeT in ASTNode as NodeT['kind']]?: ASTVisitFn<NodeT> | EnterLeaveVisitor<NodeT>;
|
|
@@ -13,27 +11,28 @@ interface EnterLeaveVisitor<TVisitedNode extends ASTNode> {
|
|
|
13
11
|
readonly leave?: ASTVisitFn<TVisitedNode> | undefined;
|
|
14
12
|
}
|
|
15
13
|
/**
|
|
16
|
-
* A visitor is
|
|
17
|
-
*
|
|
14
|
+
* A visitor is composed of visit functions called for each node during traversal.
|
|
15
|
+
* @typeParam TVisitedNode - AST node type handled by this visitor function.
|
|
18
16
|
*/
|
|
19
17
|
export type ASTVisitFn<TVisitedNode extends ASTNode> = (
|
|
20
|
-
/**
|
|
18
|
+
/** Current node being visited. */
|
|
21
19
|
node: TVisitedNode,
|
|
22
|
-
/**
|
|
20
|
+
/** Index or key for this node within the parent node or array. */
|
|
23
21
|
key: string | number | undefined,
|
|
24
|
-
/**
|
|
22
|
+
/** Parent immediately above this node, which may be an array. */
|
|
25
23
|
parent: ASTNode | ReadonlyArray<ASTNode> | undefined,
|
|
26
|
-
/**
|
|
24
|
+
/** Key path from the root node to this node. */
|
|
27
25
|
path: ReadonlyArray<string | number>,
|
|
28
26
|
/**
|
|
29
|
-
* All nodes and
|
|
27
|
+
* All nodes and arrays visited before reaching this node's parent.
|
|
30
28
|
* These correspond to array indices in `path`.
|
|
31
|
-
* Note: ancestors includes arrays
|
|
29
|
+
* Note: ancestors includes arrays that contain the visited node's parent.
|
|
32
30
|
*/
|
|
33
31
|
ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>) => any;
|
|
34
32
|
/**
|
|
35
|
-
* A reducer is
|
|
36
|
-
*
|
|
33
|
+
* A reducer is composed of reducer functions that convert AST nodes into another form.
|
|
34
|
+
*
|
|
35
|
+
* @internal
|
|
37
36
|
*/
|
|
38
37
|
export type ASTReducer<R> = {
|
|
39
38
|
readonly [NodeT in ASTNode as NodeT['kind']]?: {
|
|
@@ -42,29 +41,41 @@ export type ASTReducer<R> = {
|
|
|
42
41
|
};
|
|
43
42
|
};
|
|
44
43
|
type ASTReducerFn<TReducedNode extends ASTNode, R> = (
|
|
45
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* Current node being visited.
|
|
46
|
+
* @internal
|
|
47
|
+
*/
|
|
46
48
|
node: {
|
|
47
49
|
[K in keyof TReducedNode]: ReducedField<TReducedNode[K], R>;
|
|
48
50
|
},
|
|
49
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Index or key for this node within the parent node or array.
|
|
53
|
+
* @internal
|
|
54
|
+
*/
|
|
50
55
|
key: string | number | undefined,
|
|
51
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* Parent immediately above this node, which may be an array.
|
|
58
|
+
* @internal
|
|
59
|
+
*/
|
|
52
60
|
parent: ASTNode | ReadonlyArray<ASTNode> | undefined,
|
|
53
|
-
/**
|
|
61
|
+
/**
|
|
62
|
+
* Key path from the root node to this node.
|
|
63
|
+
* @internal
|
|
64
|
+
*/
|
|
54
65
|
path: ReadonlyArray<string | number>,
|
|
55
66
|
/**
|
|
56
|
-
* All nodes and
|
|
67
|
+
* All nodes and arrays visited before reaching this node's parent.
|
|
57
68
|
* These correspond to array indices in `path`.
|
|
58
|
-
* Note: ancestors includes arrays
|
|
69
|
+
* Note: ancestors includes arrays that contain the visited node's parent.
|
|
70
|
+
* @internal
|
|
59
71
|
*/
|
|
60
72
|
ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>) => R;
|
|
61
73
|
type ReducedField<T, R> = T extends ASTNode ? R : T extends ReadonlyArray<ASTNode> ? ReadonlyArray<R> : T;
|
|
62
|
-
/**
|
|
63
|
-
* A KeyMap describes each the traversable properties of each kind of node.
|
|
64
|
-
*/
|
|
74
|
+
/** A visitor key map describes the traversable child properties for each node kind. */
|
|
65
75
|
export type ASTVisitorKeyMap = {
|
|
66
76
|
[NodeT in ASTNode as NodeT['kind']]?: ReadonlyArray<keyof NodeT>;
|
|
67
77
|
};
|
|
78
|
+
/** A value that can be returned from a visitor function to stop traversal. */
|
|
68
79
|
export declare const BREAK: unknown;
|
|
69
80
|
/**
|
|
70
81
|
* visit() will walk through an AST using a depth-first traversal, calling
|
|
@@ -79,82 +90,181 @@ export declare const BREAK: unknown;
|
|
|
79
90
|
* When using visit() to edit an AST, the original AST will not be modified, and
|
|
80
91
|
* a new version of the AST with the changes applied will be returned from the
|
|
81
92
|
* visit function.
|
|
82
|
-
*
|
|
93
|
+
* @param root - The AST node at which to start traversal.
|
|
94
|
+
* @param visitor - The visitor or reducer functions to call while traversing.
|
|
95
|
+
* @param visitorKeys - Optional map of child keys to visit for each AST node kind.
|
|
96
|
+
* @returns The original AST, an edited AST, or a reduced value depending on the visitor.
|
|
97
|
+
* @typeParam N - The root AST node type returned when visiting without reducing.
|
|
98
|
+
* @example
|
|
83
99
|
* ```ts
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
100
|
+
* // Return values control traversal: undefined makes no change, false skips
|
|
101
|
+
* // a subtree, BREAK stops traversal, null removes a node, and any other
|
|
102
|
+
* // value replaces the current node.
|
|
103
|
+
* import { Kind, parse, print, visit } from 'graphql/language';
|
|
104
|
+
*
|
|
105
|
+
* const document = parse('{ hero { name } }');
|
|
106
|
+
* const editedAST = visit(document, {
|
|
107
|
+
* Field: (node) => {
|
|
108
|
+
* if (node.name.value === 'hero') {
|
|
109
|
+
* return {
|
|
110
|
+
* ...node,
|
|
111
|
+
* name: { kind: Kind.NAME, value: 'human' },
|
|
112
|
+
* };
|
|
113
|
+
* }
|
|
92
114
|
* },
|
|
93
|
-
* leave(node, key, parent, path, ancestors) {
|
|
94
|
-
* // @return
|
|
95
|
-
* // undefined: no action
|
|
96
|
-
* // false: no action
|
|
97
|
-
* // visitor.BREAK: stop visiting altogether
|
|
98
|
-
* // null: delete this node
|
|
99
|
-
* // any value: replace this node with the returned value
|
|
100
|
-
* }
|
|
101
115
|
* });
|
|
116
|
+
*
|
|
117
|
+
* print(editedAST); // => '{\n human {\n name\n }\n}'
|
|
102
118
|
* ```
|
|
119
|
+
* @example
|
|
120
|
+
* ```ts
|
|
121
|
+
* // A named visitor function runs when entering nodes of that kind.
|
|
122
|
+
* import { parse, visit } from 'graphql/language';
|
|
103
123
|
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
* enter/leave visitors at a named key, leading to three permutations of the
|
|
107
|
-
* visitor API:
|
|
124
|
+
* const document = parse('{ hero { name } }');
|
|
125
|
+
* const fieldNames = [];
|
|
108
126
|
*
|
|
109
|
-
*
|
|
127
|
+
* visit(document, {
|
|
128
|
+
* Field: (node) => {
|
|
129
|
+
* fieldNames.push(node.name.value);
|
|
130
|
+
* },
|
|
131
|
+
* });
|
|
110
132
|
*
|
|
111
|
-
*
|
|
112
|
-
* visit(ast, {
|
|
113
|
-
* Kind(node) {
|
|
114
|
-
* // enter the "Kind" node
|
|
115
|
-
* }
|
|
116
|
-
* })
|
|
133
|
+
* fieldNames; // => ['hero', 'name']
|
|
117
134
|
* ```
|
|
135
|
+
* @example
|
|
136
|
+
* ```ts
|
|
137
|
+
* // A named visitor object can provide separate enter and leave handlers for
|
|
138
|
+
* // nodes of that kind.
|
|
139
|
+
* import { parse, visit } from 'graphql/language';
|
|
118
140
|
*
|
|
119
|
-
*
|
|
141
|
+
* const document = parse('{ hero { name } }');
|
|
142
|
+
* const events = [];
|
|
120
143
|
*
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
*
|
|
144
|
+
* visit(document, {
|
|
145
|
+
* Field: {
|
|
146
|
+
* enter: (node) => {
|
|
147
|
+
* events.push(`enter:${node.name.value}`);
|
|
148
|
+
* },
|
|
149
|
+
* leave: (node) => {
|
|
150
|
+
* events.push(`leave:${node.name.value}`);
|
|
151
|
+
* },
|
|
152
|
+
* },
|
|
153
|
+
* });
|
|
154
|
+
*
|
|
155
|
+
* events; // => ['enter:hero', 'enter:name', 'leave:name', 'leave:hero']
|
|
132
156
|
* ```
|
|
157
|
+
* @example
|
|
158
|
+
* ```ts
|
|
159
|
+
* // Generic enter and leave handlers run for every node.
|
|
160
|
+
* import { parse, visit } from 'graphql/language';
|
|
133
161
|
*
|
|
134
|
-
*
|
|
162
|
+
* const document = parse('{ hero { name } }');
|
|
163
|
+
* let enterCount = 0;
|
|
164
|
+
* let leaveCount = 0;
|
|
135
165
|
*
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
*
|
|
166
|
+
* visit(document, {
|
|
167
|
+
* enter: (node) => {
|
|
168
|
+
* enterCount += 1;
|
|
169
|
+
* },
|
|
170
|
+
* leave: (node) => {
|
|
171
|
+
* leaveCount += 1;
|
|
140
172
|
* },
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
173
|
+
* });
|
|
174
|
+
*
|
|
175
|
+
* enterCount; // => leaveCount
|
|
176
|
+
* enterCount > 0; // => true
|
|
145
177
|
* ```
|
|
146
178
|
*/
|
|
147
179
|
export declare function visit<N extends ASTNode>(root: N, visitor: ASTVisitor, visitorKeys?: ASTVisitorKeyMap): N;
|
|
180
|
+
/**
|
|
181
|
+
* Traverses an AST with reducer callbacks and returns the reduced value.
|
|
182
|
+
* @param root - The AST node where traversal starts.
|
|
183
|
+
* @param visitor - Reducer callbacks to invoke during traversal.
|
|
184
|
+
* @param visitorKeys - Optional mapping of child keys for each AST node kind.
|
|
185
|
+
* @returns The value produced by the reducer visitor.
|
|
186
|
+
* @typeParam R - The value produced by reducer visitor callbacks.
|
|
187
|
+
* @example
|
|
188
|
+
* ```ts
|
|
189
|
+
* // A reducer visitor returns values from leave handlers to build a reduced
|
|
190
|
+
* // result instead of returning an edited AST.
|
|
191
|
+
* import { parse, visit } from 'graphql/language';
|
|
192
|
+
*
|
|
193
|
+
* const document = parse('{ hero { name } }');
|
|
194
|
+
* const printed = visit(document, {
|
|
195
|
+
* Name: {
|
|
196
|
+
* leave: (node) => {
|
|
197
|
+
* return node.value;
|
|
198
|
+
* },
|
|
199
|
+
* },
|
|
200
|
+
* Field: {
|
|
201
|
+
* leave: (node) => {
|
|
202
|
+
* return node.selectionSet == null
|
|
203
|
+
* ? node.name
|
|
204
|
+
* : `${node.name} { ${node.selectionSet} }`;
|
|
205
|
+
* },
|
|
206
|
+
* },
|
|
207
|
+
* SelectionSet: {
|
|
208
|
+
* leave: (node) => {
|
|
209
|
+
* return node.selections.join(' ');
|
|
210
|
+
* },
|
|
211
|
+
* },
|
|
212
|
+
* OperationDefinition: {
|
|
213
|
+
* leave: (node) => {
|
|
214
|
+
* return node.selectionSet;
|
|
215
|
+
* },
|
|
216
|
+
* },
|
|
217
|
+
* Document: {
|
|
218
|
+
* leave: (node) => {
|
|
219
|
+
* return node.definitions.join('\n');
|
|
220
|
+
* },
|
|
221
|
+
* },
|
|
222
|
+
* });
|
|
223
|
+
*
|
|
224
|
+
* printed; // => 'hero { name }'
|
|
225
|
+
* ```
|
|
226
|
+
*/
|
|
148
227
|
export declare function visit<R>(root: ASTNode, visitor: ASTReducer<R>, visitorKeys?: ASTVisitorKeyMap): R;
|
|
149
228
|
/**
|
|
150
229
|
* Creates a new visitor instance which delegates to many visitors to run in
|
|
151
230
|
* parallel. Each visitor will be visited for each node before moving on.
|
|
152
231
|
*
|
|
153
232
|
* If a prior visitor edits a node, no following visitors will see that node.
|
|
233
|
+
* @param visitors - The visitors to merge into one parallel visitor.
|
|
234
|
+
* @returns A visitor that delegates traversal to each provided visitor.
|
|
235
|
+
* @example
|
|
236
|
+
* ```ts
|
|
237
|
+
* import { parse, visit, visitInParallel } from 'graphql/language';
|
|
238
|
+
*
|
|
239
|
+
* const document = parse('{ hero { name } }');
|
|
240
|
+
* const events = [];
|
|
241
|
+
*
|
|
242
|
+
* visit(
|
|
243
|
+
* document,
|
|
244
|
+
* visitInParallel([
|
|
245
|
+
* { Field: (node) => { events.push(`field:${node.name.value}`); } },
|
|
246
|
+
* { Name: (node) => { events.push(`name:${node.value}`); } },
|
|
247
|
+
* ]),
|
|
248
|
+
* );
|
|
249
|
+
*
|
|
250
|
+
* events; // => ['field:hero', 'name:hero', 'field:name', 'name:name']
|
|
251
|
+
* ```
|
|
154
252
|
*/
|
|
155
253
|
export declare function visitInParallel(visitors: ReadonlyArray<ASTVisitor>): ASTVisitor;
|
|
156
254
|
/**
|
|
157
255
|
* Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.
|
|
256
|
+
* @param visitor - The visitor object to inspect.
|
|
257
|
+
* @param kind - The AST node kind to resolve handlers for.
|
|
258
|
+
* @returns The enter and leave handlers that apply for the given node kind.
|
|
259
|
+
* @example
|
|
260
|
+
* ```ts
|
|
261
|
+
* import { Kind, getEnterLeaveForKind } from 'graphql/language';
|
|
262
|
+
*
|
|
263
|
+
* const handlers = getEnterLeaveForKind({ Field: () => {} }, Kind.FIELD);
|
|
264
|
+
*
|
|
265
|
+
* typeof handlers.enter; // => 'function'
|
|
266
|
+
* handlers.leave; // => undefined
|
|
267
|
+
* ```
|
|
158
268
|
*/
|
|
159
269
|
export declare function getEnterLeaveForKind(visitor: ASTVisitor, kind: Kind): EnterLeaveVisitor<ASTNode>;
|
|
160
270
|
export {};
|
package/language/visitor.js
CHANGED
|
@@ -4,17 +4,16 @@ exports.BREAK = void 0;
|
|
|
4
4
|
exports.visit = visit;
|
|
5
5
|
exports.visitInParallel = visitInParallel;
|
|
6
6
|
exports.getEnterLeaveForKind = getEnterLeaveForKind;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
7
|
+
const devAssert_ts_1 = require("../jsutils/devAssert.js");
|
|
8
|
+
const inspect_ts_1 = require("../jsutils/inspect.js");
|
|
9
|
+
const ast_ts_1 = require("./ast.js");
|
|
10
|
+
const kinds_ts_1 = require("./kinds.js");
|
|
11
11
|
exports.BREAK = Object.freeze({});
|
|
12
|
-
function visit(root, visitor, visitorKeys =
|
|
12
|
+
function visit(root, visitor, visitorKeys = ast_ts_1.QueryDocumentKeys) {
|
|
13
13
|
const enterLeaveMap = new Map();
|
|
14
|
-
for (const kind of Object.values(
|
|
14
|
+
for (const kind of Object.values(kinds_ts_1.Kind)) {
|
|
15
15
|
enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));
|
|
16
16
|
}
|
|
17
|
-
/* eslint-disable no-undef-init */
|
|
18
17
|
let stack = undefined;
|
|
19
18
|
let inArray = Array.isArray(root);
|
|
20
19
|
let keys = [root];
|
|
@@ -25,7 +24,6 @@ function visit(root, visitor, visitorKeys = ast_js_1.QueryDocumentKeys) {
|
|
|
25
24
|
let parent = undefined;
|
|
26
25
|
const path = [];
|
|
27
26
|
const ancestors = [];
|
|
28
|
-
/* eslint-enable no-undef-init */
|
|
29
27
|
do {
|
|
30
28
|
index++;
|
|
31
29
|
const isLeaving = index === keys.length;
|
|
@@ -72,8 +70,8 @@ function visit(root, visitor, visitorKeys = ast_js_1.QueryDocumentKeys) {
|
|
|
72
70
|
}
|
|
73
71
|
let result;
|
|
74
72
|
if (!Array.isArray(node)) {
|
|
75
|
-
if (!((0,
|
|
76
|
-
(0,
|
|
73
|
+
if (!((0, ast_ts_1.isNode)(node)))
|
|
74
|
+
(0, devAssert_ts_1.devAssert)(false, `Invalid AST Node: ${(0, inspect_ts_1.inspect)(node)}.`);
|
|
77
75
|
const visitFn = isLeaving
|
|
78
76
|
? enterLeaveMap.get(node.kind)?.leave
|
|
79
77
|
: enterLeaveMap.get(node.kind)?.enter;
|
|
@@ -90,7 +88,7 @@ function visit(root, visitor, visitorKeys = ast_js_1.QueryDocumentKeys) {
|
|
|
90
88
|
else if (result !== undefined) {
|
|
91
89
|
edits.push([key, result]);
|
|
92
90
|
if (!isLeaving) {
|
|
93
|
-
if ((0,
|
|
91
|
+
if ((0, ast_ts_1.isNode)(result)) {
|
|
94
92
|
node = result;
|
|
95
93
|
}
|
|
96
94
|
else {
|
|
@@ -119,21 +117,14 @@ function visit(root, visitor, visitorKeys = ast_js_1.QueryDocumentKeys) {
|
|
|
119
117
|
}
|
|
120
118
|
} while (stack !== undefined);
|
|
121
119
|
if (edits.length !== 0) {
|
|
122
|
-
// New root
|
|
123
120
|
return edits.at(-1)[1];
|
|
124
121
|
}
|
|
125
122
|
return root;
|
|
126
123
|
}
|
|
127
|
-
/**
|
|
128
|
-
* Creates a new visitor instance which delegates to many visitors to run in
|
|
129
|
-
* parallel. Each visitor will be visited for each node before moving on.
|
|
130
|
-
*
|
|
131
|
-
* If a prior visitor edits a node, no following visitors will see that node.
|
|
132
|
-
*/
|
|
133
124
|
function visitInParallel(visitors) {
|
|
134
125
|
const skipping = new Array(visitors.length).fill(null);
|
|
135
126
|
const mergedVisitor = Object.create(null);
|
|
136
|
-
for (const kind of Object.values(
|
|
127
|
+
for (const kind of Object.values(kinds_ts_1.Kind)) {
|
|
137
128
|
let hasVisitor = false;
|
|
138
129
|
const enterList = new Array(visitors.length).fill(undefined);
|
|
139
130
|
const leaveList = new Array(visitors.length).fill(undefined);
|
|
@@ -186,20 +177,14 @@ function visitInParallel(visitors) {
|
|
|
186
177
|
}
|
|
187
178
|
return mergedVisitor;
|
|
188
179
|
}
|
|
189
|
-
/**
|
|
190
|
-
* Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.
|
|
191
|
-
*/
|
|
192
180
|
function getEnterLeaveForKind(visitor, kind) {
|
|
193
181
|
const kindVisitor = visitor[kind];
|
|
194
182
|
if (typeof kindVisitor === 'object') {
|
|
195
|
-
// { Kind: { enter() {}, leave() {} } }
|
|
196
183
|
return kindVisitor;
|
|
197
184
|
}
|
|
198
185
|
else if (typeof kindVisitor === 'function') {
|
|
199
|
-
// { Kind() {} }
|
|
200
186
|
return { enter: kindVisitor, leave: undefined };
|
|
201
187
|
}
|
|
202
|
-
// { enter() {}, leave() {} }
|
|
203
188
|
return { enter: visitor.enter, leave: visitor.leave };
|
|
204
189
|
}
|
|
205
190
|
//# sourceMappingURL=visitor.js.map
|
package/language/visitor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visitor.js","sourceRoot":"","sources":["../../src/language/visitor.ts"],"names":[],"mappings":"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","sourcesContent":["import { devAssert } from '../jsutils/devAssert.js';\nimport { inspect } from '../jsutils/inspect.js';\n\nimport type { ASTNode } from './ast.js';\nimport { isNode, QueryDocumentKeys } from './ast.js';\nimport { Kind } from './kinds.js';\n\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\nexport type ASTVisitor = EnterLeaveVisitor<ASTNode> | KindVisitor;\n\ntype KindVisitor = {\n readonly [NodeT in ASTNode as NodeT['kind']]?:\n | ASTVisitFn<NodeT>\n | EnterLeaveVisitor<NodeT>;\n};\n\ninterface EnterLeaveVisitor<TVisitedNode extends ASTNode> {\n readonly enter?: ASTVisitFn<TVisitedNode> | undefined;\n readonly leave?: ASTVisitFn<TVisitedNode> | undefined;\n}\n\n/**\n * A visitor is comprised of visit functions, which are called on each node\n * during the visitor's traversal.\n */\nexport type ASTVisitFn<TVisitedNode extends ASTNode> = (\n /** The current node being visiting. */\n node: TVisitedNode,\n /** The index or key to this node from the parent node or Array. */\n key: string | number | undefined,\n /** The parent immediately above this node, which may be an Array. */\n parent: ASTNode | ReadonlyArray<ASTNode> | undefined,\n /** The key path to get to this node from the root node. */\n path: ReadonlyArray<string | number>,\n /**\n * All nodes and Arrays visited before reaching parent of this node.\n * These correspond to array indices in `path`.\n * Note: ancestors includes arrays which contain the parent of visited node.\n */\n ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>,\n) => any;\n\n/**\n * A reducer is comprised of reducer functions which convert AST nodes into\n * another form.\n */\nexport type ASTReducer<R> = {\n readonly [NodeT in ASTNode as NodeT['kind']]?: {\n readonly enter?: ASTVisitFn<NodeT>;\n readonly leave: ASTReducerFn<NodeT, R>;\n };\n};\n\ntype ASTReducerFn<TReducedNode extends ASTNode, R> = (\n /** The current node being visiting. */\n node: { [K in keyof TReducedNode]: ReducedField<TReducedNode[K], R> },\n /** The index or key to this node from the parent node or Array. */\n key: string | number | undefined,\n /** The parent immediately above this node, which may be an Array. */\n parent: ASTNode | ReadonlyArray<ASTNode> | undefined,\n /** The key path to get to this node from the root node. */\n path: ReadonlyArray<string | number>,\n /**\n * All nodes and Arrays visited before reaching parent of this node.\n * These correspond to array indices in `path`.\n * Note: ancestors includes arrays which contain the parent of visited node.\n */\n ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>,\n) => R;\n\ntype ReducedField<T, R> = T extends ASTNode\n ? R\n : T extends ReadonlyArray<ASTNode>\n ? ReadonlyArray<R>\n : T;\n\n/**\n * A KeyMap describes each the traversable properties of each kind of node.\n */\nexport type ASTVisitorKeyMap = {\n [NodeT in ASTNode as NodeT['kind']]?: ReadonlyArray<keyof NodeT>;\n};\n\nexport const BREAK: unknown = Object.freeze({});\n\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * ```ts\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n * ```\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to three permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n * ```\n *\n * 2) Named visitors that trigger upon entering and leaving a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n * ```\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * ```ts\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n * ```\n */\nexport function visit<N extends ASTNode>(\n root: N,\n visitor: ASTVisitor,\n visitorKeys?: ASTVisitorKeyMap,\n): N;\nexport function visit<R>(\n root: ASTNode,\n visitor: ASTReducer<R>,\n visitorKeys?: ASTVisitorKeyMap,\n): R;\nexport function visit(\n root: ASTNode,\n visitor: ASTVisitor | ASTReducer<any>,\n visitorKeys: ASTVisitorKeyMap = QueryDocumentKeys,\n): any {\n const enterLeaveMap = new Map<Kind, EnterLeaveVisitor<ASTNode>>();\n for (const kind of Object.values(Kind)) {\n enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));\n }\n\n /* eslint-disable no-undef-init */\n let stack: any = undefined;\n let inArray = Array.isArray(root);\n let keys: any = [root];\n let index = -1;\n let edits = [];\n let node: any = root;\n let key: any = undefined;\n let parent: any = undefined;\n const path: any = [];\n const ancestors = [];\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n const isLeaving = index === keys.length;\n const isEdited = isLeaving && edits.length !== 0;\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n\n let editOffset = 0;\n for (const [editKey, editValue] of edits) {\n const arrayKey = editKey - editOffset;\n if (editValue === null) {\n node.splice(arrayKey, 1);\n editOffset++;\n } else {\n node[arrayKey] = editValue;\n }\n }\n } else {\n node = { ...node };\n for (const [editKey, editValue] of edits) {\n node[editKey] = editValue;\n }\n }\n }\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else if (parent != null) {\n key = inArray ? index : keys[index];\n node = parent[key];\n if (node === null || node === undefined) {\n continue;\n }\n path.push(key);\n }\n\n let result;\n if (!Array.isArray(node)) {\n devAssert(isNode(node), `Invalid AST Node: ${inspect(node)}.`);\n\n const visitFn = isLeaving\n ? enterLeaveMap.get(node.kind)?.leave\n : enterLeaveMap.get(node.kind)?.enter;\n\n result = visitFn?.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n stack = { inArray, index, keys, edits, prev: stack };\n inArray = Array.isArray(node);\n keys = inArray ? node : ((visitorKeys as any)[node.kind] ?? []);\n index = -1;\n edits = [];\n if (parent != null) {\n ancestors.push(parent);\n }\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n // New root\n return edits.at(-1)[1];\n }\n\n return root;\n}\n\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\nexport function visitInParallel(\n visitors: ReadonlyArray<ASTVisitor>,\n): ASTVisitor {\n const skipping = new Array(visitors.length).fill(null);\n const mergedVisitor = Object.create(null);\n\n for (const kind of Object.values(Kind)) {\n let hasVisitor = false;\n const enterList = new Array(visitors.length).fill(undefined);\n const leaveList = new Array(visitors.length).fill(undefined);\n\n for (let i = 0; i < visitors.length; ++i) {\n const { enter, leave } = getEnterLeaveForKind(visitors[i], kind);\n hasVisitor ||= enter != null || leave != null;\n enterList[i] = enter;\n leaveList[i] = leave;\n }\n\n if (!hasVisitor) {\n continue;\n }\n\n const mergedEnterLeave: EnterLeaveVisitor<ASTNode> = {\n enter(...args) {\n const node = args[0];\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n const result = enterList[i]?.apply(visitors[i], args);\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n },\n leave(...args) {\n const node = args[0];\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n const result = leaveList[i]?.apply(visitors[i], args);\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n },\n };\n\n mergedVisitor[kind] = mergedEnterLeave;\n }\n\n return mergedVisitor;\n}\n\n/**\n * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.\n */\nexport function getEnterLeaveForKind(\n visitor: ASTVisitor,\n kind: Kind,\n): EnterLeaveVisitor<ASTNode> {\n const kindVisitor:\n | ASTVisitFn<ASTNode>\n | EnterLeaveVisitor<ASTNode>\n | undefined = (visitor as any)[kind];\n\n if (typeof kindVisitor === 'object') {\n // { Kind: { enter() {}, leave() {} } }\n return kindVisitor;\n } else if (typeof kindVisitor === 'function') {\n // { Kind() {} }\n return { enter: kindVisitor, leave: undefined };\n }\n\n // { enter() {}, leave() {} }\n return { enter: (visitor as any).enter, leave: (visitor as any).leave };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"visitor.js","sourceRoot":"","sources":["../../src/language/visitor.ts"],"names":[],"mappings":"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","sourcesContent":["/** @category Visiting */\n\nimport { devAssert } from '../jsutils/devAssert.ts';\nimport { inspect } from '../jsutils/inspect.ts';\n\nimport type { ASTNode } from './ast.ts';\nimport { isNode, QueryDocumentKeys } from './ast.ts';\nimport { Kind } from './kinds.ts';\n\n/** A visitor defines the callbacks called during AST traversal. */\nexport type ASTVisitor = EnterLeaveVisitor<ASTNode> | KindVisitor;\n\ntype KindVisitor = {\n readonly [NodeT in ASTNode as NodeT['kind']]?:\n | ASTVisitFn<NodeT>\n | EnterLeaveVisitor<NodeT>;\n};\n\ninterface EnterLeaveVisitor<TVisitedNode extends ASTNode> {\n readonly enter?: ASTVisitFn<TVisitedNode> | undefined;\n readonly leave?: ASTVisitFn<TVisitedNode> | undefined;\n}\n\n/**\n * A visitor is composed of visit functions called for each node during traversal.\n * @typeParam TVisitedNode - AST node type handled by this visitor function.\n */\nexport type ASTVisitFn<TVisitedNode extends ASTNode> = (\n /** Current node being visited. */\n node: TVisitedNode,\n /** Index or key for this node within the parent node or array. */\n key: string | number | undefined,\n /** Parent immediately above this node, which may be an array. */\n parent: ASTNode | ReadonlyArray<ASTNode> | undefined,\n /** Key path from the root node to this node. */\n path: ReadonlyArray<string | number>,\n /**\n * All nodes and arrays visited before reaching this node's parent.\n * These correspond to array indices in `path`.\n * Note: ancestors includes arrays that contain the visited node's parent.\n */\n ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>,\n) => any;\n\n/**\n * A reducer is composed of reducer functions that convert AST nodes into another form.\n *\n * @internal\n */\nexport type ASTReducer<R> = {\n readonly [NodeT in ASTNode as NodeT['kind']]?: {\n readonly enter?: ASTVisitFn<NodeT>;\n readonly leave: ASTReducerFn<NodeT, R>;\n };\n};\n\ntype ASTReducerFn<TReducedNode extends ASTNode, R> = (\n /**\n * Current node being visited.\n * @internal\n */\n node: { [K in keyof TReducedNode]: ReducedField<TReducedNode[K], R> },\n /**\n * Index or key for this node within the parent node or array.\n * @internal\n */\n key: string | number | undefined,\n /**\n * Parent immediately above this node, which may be an array.\n * @internal\n */\n parent: ASTNode | ReadonlyArray<ASTNode> | undefined,\n /**\n * Key path from the root node to this node.\n * @internal\n */\n path: ReadonlyArray<string | number>,\n /**\n * All nodes and arrays visited before reaching this node's parent.\n * These correspond to array indices in `path`.\n * Note: ancestors includes arrays that contain the visited node's parent.\n * @internal\n */\n ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>,\n) => R;\n\ntype ReducedField<T, R> = T extends ASTNode\n ? R\n : T extends ReadonlyArray<ASTNode>\n ? ReadonlyArray<R>\n : T;\n\n/** A visitor key map describes the traversable child properties for each node kind. */\nexport type ASTVisitorKeyMap = {\n [NodeT in ASTNode as NodeT['kind']]?: ReadonlyArray<keyof NodeT>;\n};\n\n/** A value that can be returned from a visitor function to stop traversal. */\nexport const BREAK: unknown = Object.freeze({});\n\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n * @param root - The AST node at which to start traversal.\n * @param visitor - The visitor or reducer functions to call while traversing.\n * @param visitorKeys - Optional map of child keys to visit for each AST node kind.\n * @returns The original AST, an edited AST, or a reduced value depending on the visitor.\n * @typeParam N - The root AST node type returned when visiting without reducing.\n * @example\n * ```ts\n * // Return values control traversal: undefined makes no change, false skips\n * // a subtree, BREAK stops traversal, null removes a node, and any other\n * // value replaces the current node.\n * import { Kind, parse, print, visit } from 'graphql/language';\n *\n * const document = parse('{ hero { name } }');\n * const editedAST = visit(document, {\n * Field: (node) => {\n * if (node.name.value === 'hero') {\n * return {\n * ...node,\n * name: { kind: Kind.NAME, value: 'human' },\n * };\n * }\n * },\n * });\n *\n * print(editedAST); // => '{\\n human {\\n name\\n }\\n}'\n * ```\n * @example\n * ```ts\n * // A named visitor function runs when entering nodes of that kind.\n * import { parse, visit } from 'graphql/language';\n *\n * const document = parse('{ hero { name } }');\n * const fieldNames = [];\n *\n * visit(document, {\n * Field: (node) => {\n * fieldNames.push(node.name.value);\n * },\n * });\n *\n * fieldNames; // => ['hero', 'name']\n * ```\n * @example\n * ```ts\n * // A named visitor object can provide separate enter and leave handlers for\n * // nodes of that kind.\n * import { parse, visit } from 'graphql/language';\n *\n * const document = parse('{ hero { name } }');\n * const events = [];\n *\n * visit(document, {\n * Field: {\n * enter: (node) => {\n * events.push(`enter:${node.name.value}`);\n * },\n * leave: (node) => {\n * events.push(`leave:${node.name.value}`);\n * },\n * },\n * });\n *\n * events; // => ['enter:hero', 'enter:name', 'leave:name', 'leave:hero']\n * ```\n * @example\n * ```ts\n * // Generic enter and leave handlers run for every node.\n * import { parse, visit } from 'graphql/language';\n *\n * const document = parse('{ hero { name } }');\n * let enterCount = 0;\n * let leaveCount = 0;\n *\n * visit(document, {\n * enter: (node) => {\n * enterCount += 1;\n * },\n * leave: (node) => {\n * leaveCount += 1;\n * },\n * });\n *\n * enterCount; // => leaveCount\n * enterCount > 0; // => true\n * ```\n */\nexport function visit<N extends ASTNode>(\n root: N,\n visitor: ASTVisitor,\n visitorKeys?: ASTVisitorKeyMap,\n): N;\n/**\n * Traverses an AST with reducer callbacks and returns the reduced value.\n * @param root - The AST node where traversal starts.\n * @param visitor - Reducer callbacks to invoke during traversal.\n * @param visitorKeys - Optional mapping of child keys for each AST node kind.\n * @returns The value produced by the reducer visitor.\n * @typeParam R - The value produced by reducer visitor callbacks.\n * @example\n * ```ts\n * // A reducer visitor returns values from leave handlers to build a reduced\n * // result instead of returning an edited AST.\n * import { parse, visit } from 'graphql/language';\n *\n * const document = parse('{ hero { name } }');\n * const printed = visit(document, {\n * Name: {\n * leave: (node) => {\n * return node.value;\n * },\n * },\n * Field: {\n * leave: (node) => {\n * return node.selectionSet == null\n * ? node.name\n * : `${node.name} { ${node.selectionSet} }`;\n * },\n * },\n * SelectionSet: {\n * leave: (node) => {\n * return node.selections.join(' ');\n * },\n * },\n * OperationDefinition: {\n * leave: (node) => {\n * return node.selectionSet;\n * },\n * },\n * Document: {\n * leave: (node) => {\n * return node.definitions.join('\\n');\n * },\n * },\n * });\n *\n * printed; // => 'hero { name }'\n * ```\n */\nexport function visit<R>(\n root: ASTNode,\n visitor: ASTReducer<R>,\n visitorKeys?: ASTVisitorKeyMap,\n): R;\n/**\n * Traverses an AST with visitor or reducer callbacks.\n * @internal\n */\nexport function visit(\n root: ASTNode,\n visitor: ASTVisitor | ASTReducer<any>,\n visitorKeys: ASTVisitorKeyMap = QueryDocumentKeys,\n): any {\n const enterLeaveMap = new Map<Kind, EnterLeaveVisitor<ASTNode>>();\n for (const kind of Object.values(Kind)) {\n enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));\n }\n\n /* eslint-disable no-undef-init */\n let stack: any = undefined;\n let inArray = Array.isArray(root);\n let keys: any = [root];\n let index = -1;\n let edits = [];\n let node: any = root;\n let key: any = undefined;\n let parent: any = undefined;\n const path: any = [];\n const ancestors = [];\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n const isLeaving = index === keys.length;\n const isEdited = isLeaving && edits.length !== 0;\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n\n let editOffset = 0;\n for (const [editKey, editValue] of edits) {\n const arrayKey = editKey - editOffset;\n if (editValue === null) {\n node.splice(arrayKey, 1);\n editOffset++;\n } else {\n node[arrayKey] = editValue;\n }\n }\n } else {\n node = { ...node };\n for (const [editKey, editValue] of edits) {\n node[editKey] = editValue;\n }\n }\n }\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else if (parent != null) {\n key = inArray ? index : keys[index];\n node = parent[key];\n if (node === null || node === undefined) {\n continue;\n }\n path.push(key);\n }\n\n let result;\n if (!Array.isArray(node)) {\n devAssert(isNode(node), `Invalid AST Node: ${inspect(node)}.`);\n\n const visitFn = isLeaving\n ? enterLeaveMap.get(node.kind)?.leave\n : enterLeaveMap.get(node.kind)?.enter;\n\n result = visitFn?.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n stack = { inArray, index, keys, edits, prev: stack };\n inArray = Array.isArray(node);\n keys = inArray ? node : ((visitorKeys as any)[node.kind] ?? []);\n index = -1;\n edits = [];\n if (parent != null) {\n ancestors.push(parent);\n }\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n // New root\n return edits.at(-1)[1];\n }\n\n return root;\n}\n\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n * @param visitors - The visitors to merge into one parallel visitor.\n * @returns A visitor that delegates traversal to each provided visitor.\n * @example\n * ```ts\n * import { parse, visit, visitInParallel } from 'graphql/language';\n *\n * const document = parse('{ hero { name } }');\n * const events = [];\n *\n * visit(\n * document,\n * visitInParallel([\n * { Field: (node) => { events.push(`field:${node.name.value}`); } },\n * { Name: (node) => { events.push(`name:${node.value}`); } },\n * ]),\n * );\n *\n * events; // => ['field:hero', 'name:hero', 'field:name', 'name:name']\n * ```\n */\nexport function visitInParallel(\n visitors: ReadonlyArray<ASTVisitor>,\n): ASTVisitor {\n const skipping = new Array(visitors.length).fill(null);\n const mergedVisitor = Object.create(null);\n\n for (const kind of Object.values(Kind)) {\n let hasVisitor = false;\n const enterList = new Array(visitors.length).fill(undefined);\n const leaveList = new Array(visitors.length).fill(undefined);\n\n for (let i = 0; i < visitors.length; ++i) {\n const { enter, leave } = getEnterLeaveForKind(visitors[i], kind);\n hasVisitor ||= enter != null || leave != null;\n enterList[i] = enter;\n leaveList[i] = leave;\n }\n\n if (!hasVisitor) {\n continue;\n }\n\n const mergedEnterLeave: EnterLeaveVisitor<ASTNode> = {\n enter(...args) {\n const node = args[0];\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n const result = enterList[i]?.apply(visitors[i], args);\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n },\n leave(...args) {\n const node = args[0];\n for (let i = 0; i < visitors.length; i++) {\n if (skipping[i] === null) {\n const result = leaveList[i]?.apply(visitors[i], args);\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n },\n };\n\n mergedVisitor[kind] = mergedEnterLeave;\n }\n\n return mergedVisitor;\n}\n\n/**\n * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.\n * @param visitor - The visitor object to inspect.\n * @param kind - The AST node kind to resolve handlers for.\n * @returns The enter and leave handlers that apply for the given node kind.\n * @example\n * ```ts\n * import { Kind, getEnterLeaveForKind } from 'graphql/language';\n *\n * const handlers = getEnterLeaveForKind({ Field: () => {} }, Kind.FIELD);\n *\n * typeof handlers.enter; // => 'function'\n * handlers.leave; // => undefined\n * ```\n */\nexport function getEnterLeaveForKind(\n visitor: ASTVisitor,\n kind: Kind,\n): EnterLeaveVisitor<ASTNode> {\n const kindVisitor:\n | ASTVisitFn<ASTNode>\n | EnterLeaveVisitor<ASTNode>\n | undefined = (visitor as any)[kind];\n\n if (typeof kindVisitor === 'object') {\n // { Kind: { enter() {}, leave() {} } }\n return kindVisitor;\n } else if (typeof kindVisitor === 'function') {\n // { Kind() {} }\n return { enter: kindVisitor, leave: undefined };\n }\n\n // { enter() {}, leave() {} }\n return { enter: (visitor as any).enter, leave: (visitor as any).leave };\n}\n"]}
|
package/language/visitor.mjs
CHANGED
|
@@ -8,7 +8,6 @@ export function visit(root, visitor, visitorKeys = QueryDocumentKeys) {
|
|
|
8
8
|
for (const kind of Object.values(Kind)) {
|
|
9
9
|
enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));
|
|
10
10
|
}
|
|
11
|
-
/* eslint-disable no-undef-init */
|
|
12
11
|
let stack = undefined;
|
|
13
12
|
let inArray = Array.isArray(root);
|
|
14
13
|
let keys = [root];
|
|
@@ -19,7 +18,6 @@ export function visit(root, visitor, visitorKeys = QueryDocumentKeys) {
|
|
|
19
18
|
let parent = undefined;
|
|
20
19
|
const path = [];
|
|
21
20
|
const ancestors = [];
|
|
22
|
-
/* eslint-enable no-undef-init */
|
|
23
21
|
do {
|
|
24
22
|
index++;
|
|
25
23
|
const isLeaving = index === keys.length;
|
|
@@ -113,17 +111,10 @@ export function visit(root, visitor, visitorKeys = QueryDocumentKeys) {
|
|
|
113
111
|
}
|
|
114
112
|
} while (stack !== undefined);
|
|
115
113
|
if (edits.length !== 0) {
|
|
116
|
-
// New root
|
|
117
114
|
return edits.at(-1)[1];
|
|
118
115
|
}
|
|
119
116
|
return root;
|
|
120
117
|
}
|
|
121
|
-
/**
|
|
122
|
-
* Creates a new visitor instance which delegates to many visitors to run in
|
|
123
|
-
* parallel. Each visitor will be visited for each node before moving on.
|
|
124
|
-
*
|
|
125
|
-
* If a prior visitor edits a node, no following visitors will see that node.
|
|
126
|
-
*/
|
|
127
118
|
export function visitInParallel(visitors) {
|
|
128
119
|
const skipping = new Array(visitors.length).fill(null);
|
|
129
120
|
const mergedVisitor = Object.create(null);
|
|
@@ -180,20 +171,14 @@ export function visitInParallel(visitors) {
|
|
|
180
171
|
}
|
|
181
172
|
return mergedVisitor;
|
|
182
173
|
}
|
|
183
|
-
/**
|
|
184
|
-
* Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.
|
|
185
|
-
*/
|
|
186
174
|
export function getEnterLeaveForKind(visitor, kind) {
|
|
187
175
|
const kindVisitor = visitor[kind];
|
|
188
176
|
if (typeof kindVisitor === 'object') {
|
|
189
|
-
// { Kind: { enter() {}, leave() {} } }
|
|
190
177
|
return kindVisitor;
|
|
191
178
|
}
|
|
192
179
|
else if (typeof kindVisitor === 'function') {
|
|
193
|
-
// { Kind() {} }
|
|
194
180
|
return { enter: kindVisitor, leave: undefined };
|
|
195
181
|
}
|
|
196
|
-
// { enter() {}, leave() {} }
|
|
197
182
|
return { enter: visitor.enter, leave: visitor.leave };
|
|
198
183
|
}
|
|
199
184
|
//# sourceMappingURL=visitor.js.map
|