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
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.withCancellation = withCancellation;
|
|
4
4
|
exports.cancellablePromise = cancellablePromise;
|
|
5
|
-
const
|
|
5
|
+
const promiseWithResolvers_ts_1 = require("../jsutils/promiseWithResolvers.js");
|
|
6
6
|
function withCancellation(originalPromise) {
|
|
7
|
-
const { promise, resolve, reject } = (0,
|
|
7
|
+
const { promise, resolve, reject } = (0, promiseWithResolvers_ts_1.promiseWithResolvers)();
|
|
8
8
|
let settled = false;
|
|
9
9
|
const settleResolve = (value) => {
|
|
10
10
|
if (settled) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cancellablePromise.js","sourceRoot":"","sources":["../../src/execution/cancellablePromise.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"cancellablePromise.js","sourceRoot":"","sources":["../../src/execution/cancellablePromise.ts"],"names":[],"mappings":";;AASA,4CA6BC;AAGD,gDA2BC;AApED,gFAA0E;AAS1E,SAAgB,gBAAgB,CAC9B,eAA2B;IAE3B,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAA,8CAAoB,GAAK,CAAC;IAC/D,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,MAAM,aAAa,GAAG,CAAC,KAAQ,EAAQ,EAAE;QACvC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QACD,OAAO,GAAG,IAAI,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC,CAAC;IACF,MAAM,YAAY,GAAG,CAAC,KAAc,EAAQ,EAAE;QAC5C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QACD,OAAO,GAAG,IAAI,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC,CAAC;IAEF,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAElD,OAAO;QACL,OAAO;QACP,KAAK,CAAC,MAAgB;YACpB,YAAY,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC;AAGD,SAAgB,kBAAkB,CAChC,OAAmB,EACnB,WAAwB;IAExB,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE5C,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACxB,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,SAAS,CAAC,OAAO,CAAC;IAC3B,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAClD,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC,CAAC;IACF,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE/C,SAAS,CAAC,OAAO,CAAC,IAAI,CACpB,GAAG,EAAE;QACH,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC,EACD,GAAG,EAAE;QACH,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC,CACF,CAAC;IAEF,OAAO,SAAS,CAAC,OAAO,CAAC;AAC3B,CAAC","sourcesContent":["import { promiseWithResolvers } from '../jsutils/promiseWithResolvers.ts';\n\n/** @internal */\nexport interface CancellablePromise<T> {\n promise: Promise<T>;\n abort: (reason?: unknown) => void;\n}\n\n/** @internal */\nexport function withCancellation<T>(\n originalPromise: Promise<T>,\n): CancellablePromise<T> {\n const { promise, resolve, reject } = promiseWithResolvers<T>();\n let settled = false;\n\n const settleResolve = (value: T): void => {\n if (settled) {\n return;\n }\n settled = true;\n resolve(value);\n };\n const settleReject = (error: unknown): void => {\n if (settled) {\n return;\n }\n settled = true;\n reject(error);\n };\n\n originalPromise.then(settleResolve, settleReject);\n\n return {\n promise,\n abort(reason?: unknown): void {\n settleReject(reason);\n },\n };\n}\n\n/** @internal */\nexport function cancellablePromise<T>(\n promise: Promise<T>,\n abortSignal: AbortSignal,\n): Promise<T> {\n const withAbort = withCancellation(promise);\n\n if (abortSignal.aborted) {\n withAbort.abort(abortSignal.reason);\n return withAbort.promise;\n }\n\n const onAbort = () => {\n abortSignal.removeEventListener('abort', onAbort);\n withAbort.abort(abortSignal.reason);\n };\n abortSignal.addEventListener('abort', onAbort);\n\n withAbort.promise.then(\n () => {\n abortSignal.removeEventListener('abort', onAbort);\n },\n () => {\n abortSignal.removeEventListener('abort', onAbort);\n },\n );\n\n return withAbort.promise;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cancellablePromise.js","sourceRoot":"","sources":["../../src/execution/cancellablePromise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,4CAA2C;
|
|
1
|
+
{"version":3,"file":"cancellablePromise.js","sourceRoot":"","sources":["../../src/execution/cancellablePromise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,4CAA2C;AAS1E,MAAM,UAAU,gBAAgB,CAC9B,eAA2B;IAE3B,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,oBAAoB,EAAK,CAAC;IAC/D,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,MAAM,aAAa,GAAG,CAAC,KAAQ,EAAQ,EAAE;QACvC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QACD,OAAO,GAAG,IAAI,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC,CAAC;IACF,MAAM,YAAY,GAAG,CAAC,KAAc,EAAQ,EAAE;QAC5C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QACD,OAAO,GAAG,IAAI,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC,CAAC;IAEF,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAElD,OAAO;QACL,OAAO;QACP,KAAK,CAAC,MAAgB;YACpB,YAAY,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC;AAGD,MAAM,UAAU,kBAAkB,CAChC,OAAmB,EACnB,WAAwB;IAExB,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE5C,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACxB,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,SAAS,CAAC,OAAO,CAAC;IAC3B,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAClD,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC,CAAC;IACF,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE/C,SAAS,CAAC,OAAO,CAAC,IAAI,CACpB,GAAG,EAAE;QACH,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC,EACD,GAAG,EAAE;QACH,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC,CACF,CAAC;IAEF,OAAO,SAAS,CAAC,OAAO,CAAC;AAC3B,CAAC","sourcesContent":["import { promiseWithResolvers } from '../jsutils/promiseWithResolvers.ts';\n\n/** @internal */\nexport interface CancellablePromise<T> {\n promise: Promise<T>;\n abort: (reason?: unknown) => void;\n}\n\n/** @internal */\nexport function withCancellation<T>(\n originalPromise: Promise<T>,\n): CancellablePromise<T> {\n const { promise, resolve, reject } = promiseWithResolvers<T>();\n let settled = false;\n\n const settleResolve = (value: T): void => {\n if (settled) {\n return;\n }\n settled = true;\n resolve(value);\n };\n const settleReject = (error: unknown): void => {\n if (settled) {\n return;\n }\n settled = true;\n reject(error);\n };\n\n originalPromise.then(settleResolve, settleReject);\n\n return {\n promise,\n abort(reason?: unknown): void {\n settleReject(reason);\n },\n };\n}\n\n/** @internal */\nexport function cancellablePromise<T>(\n promise: Promise<T>,\n abortSignal: AbortSignal,\n): Promise<T> {\n const withAbort = withCancellation(promise);\n\n if (abortSignal.aborted) {\n withAbort.abort(abortSignal.reason);\n return withAbort.promise;\n }\n\n const onAbort = () => {\n abortSignal.removeEventListener('abort', onAbort);\n withAbort.abort(abortSignal.reason);\n };\n abortSignal.addEventListener('abort', onAbort);\n\n withAbort.promise.then(\n () => {\n abortSignal.removeEventListener('abort', onAbort);\n },\n () => {\n abortSignal.removeEventListener('abort', onAbort);\n },\n );\n\n return withAbort.promise;\n}\n"]}
|
|
@@ -1,29 +1,36 @@
|
|
|
1
|
-
import type { ObjMap, ReadOnlyObjMap } from
|
|
2
|
-
import type {
|
|
3
|
-
import type { GraphQLObjectType } from
|
|
4
|
-
import type { GraphQLSchema } from
|
|
5
|
-
import type { GraphQLVariableSignature } from
|
|
6
|
-
import type { VariableValues } from
|
|
1
|
+
import type { ObjMap, ReadOnlyObjMap } from "../jsutils/ObjMap.mjs";
|
|
2
|
+
import type { DirectiveNode, FieldNode, FragmentDefinitionNode, SelectionSetNode, ValueNode } from "../language/ast.mjs";
|
|
3
|
+
import type { GraphQLObjectType } from "../type/definition.mjs";
|
|
4
|
+
import type { GraphQLSchema } from "../type/schema.mjs";
|
|
5
|
+
import type { GraphQLVariableSignature } from "./getVariableSignature.mjs";
|
|
6
|
+
import type { VariableValues } from "./values.mjs";
|
|
7
|
+
/** @internal */
|
|
7
8
|
export interface DeferUsage {
|
|
8
9
|
label: string | undefined;
|
|
9
10
|
parentDeferUsage: DeferUsage | undefined;
|
|
10
11
|
}
|
|
12
|
+
/** @internal */
|
|
11
13
|
export interface FragmentVariableValues {
|
|
12
14
|
readonly sources: ReadOnlyObjMap<FragmentVariableValueSource>;
|
|
13
15
|
readonly coerced: ReadOnlyObjMap<unknown>;
|
|
14
16
|
}
|
|
15
|
-
|
|
17
|
+
/** @internal */
|
|
18
|
+
export interface FragmentVariableValueSource {
|
|
16
19
|
readonly signature: GraphQLVariableSignature;
|
|
17
|
-
readonly value?:
|
|
20
|
+
readonly value?: ValueNode;
|
|
18
21
|
readonly fragmentVariableValues?: FragmentVariableValues;
|
|
19
22
|
}
|
|
23
|
+
/** @internal */
|
|
20
24
|
export interface FieldDetails {
|
|
21
25
|
node: FieldNode;
|
|
22
26
|
deferUsage?: DeferUsage | undefined;
|
|
23
27
|
fragmentVariableValues?: FragmentVariableValues | undefined;
|
|
24
28
|
}
|
|
29
|
+
/** @internal */
|
|
25
30
|
export type FieldDetailsList = ReadonlyArray<FieldDetails>;
|
|
31
|
+
/** @internal */
|
|
26
32
|
export type GroupedFieldSet = ReadonlyMap<string, FieldDetailsList>;
|
|
33
|
+
/** @internal */
|
|
27
34
|
export interface FragmentDetails {
|
|
28
35
|
definition: FragmentDefinitionNode;
|
|
29
36
|
variableSignatures?: ObjMap<GraphQLVariableSignature> | undefined;
|
|
@@ -56,4 +63,3 @@ export declare function collectSubfields(schema: GraphQLSchema, fragments: ObjMa
|
|
|
56
63
|
groupedFieldSet: GroupedFieldSet;
|
|
57
64
|
newDeferUsages: ReadonlyArray<DeferUsage>;
|
|
58
65
|
};
|
|
59
|
-
export {};
|
|
@@ -1,29 +1,36 @@
|
|
|
1
|
-
import type { ObjMap, ReadOnlyObjMap } from
|
|
2
|
-
import type {
|
|
3
|
-
import type { GraphQLObjectType } from
|
|
4
|
-
import type { GraphQLSchema } from
|
|
5
|
-
import type { GraphQLVariableSignature } from
|
|
6
|
-
import type { VariableValues } from
|
|
1
|
+
import type { ObjMap, ReadOnlyObjMap } from "../jsutils/ObjMap.js";
|
|
2
|
+
import type { DirectiveNode, FieldNode, FragmentDefinitionNode, SelectionSetNode, ValueNode } from "../language/ast.js";
|
|
3
|
+
import type { GraphQLObjectType } from "../type/definition.js";
|
|
4
|
+
import type { GraphQLSchema } from "../type/schema.js";
|
|
5
|
+
import type { GraphQLVariableSignature } from "./getVariableSignature.js";
|
|
6
|
+
import type { VariableValues } from "./values.js";
|
|
7
|
+
/** @internal */
|
|
7
8
|
export interface DeferUsage {
|
|
8
9
|
label: string | undefined;
|
|
9
10
|
parentDeferUsage: DeferUsage | undefined;
|
|
10
11
|
}
|
|
12
|
+
/** @internal */
|
|
11
13
|
export interface FragmentVariableValues {
|
|
12
14
|
readonly sources: ReadOnlyObjMap<FragmentVariableValueSource>;
|
|
13
15
|
readonly coerced: ReadOnlyObjMap<unknown>;
|
|
14
16
|
}
|
|
15
|
-
|
|
17
|
+
/** @internal */
|
|
18
|
+
export interface FragmentVariableValueSource {
|
|
16
19
|
readonly signature: GraphQLVariableSignature;
|
|
17
|
-
readonly value?:
|
|
20
|
+
readonly value?: ValueNode;
|
|
18
21
|
readonly fragmentVariableValues?: FragmentVariableValues;
|
|
19
22
|
}
|
|
23
|
+
/** @internal */
|
|
20
24
|
export interface FieldDetails {
|
|
21
25
|
node: FieldNode;
|
|
22
26
|
deferUsage?: DeferUsage | undefined;
|
|
23
27
|
fragmentVariableValues?: FragmentVariableValues | undefined;
|
|
24
28
|
}
|
|
29
|
+
/** @internal */
|
|
25
30
|
export type FieldDetailsList = ReadonlyArray<FieldDetails>;
|
|
31
|
+
/** @internal */
|
|
26
32
|
export type GroupedFieldSet = ReadonlyMap<string, FieldDetailsList>;
|
|
33
|
+
/** @internal */
|
|
27
34
|
export interface FragmentDetails {
|
|
28
35
|
definition: FragmentDefinitionNode;
|
|
29
36
|
variableSignatures?: ObjMap<GraphQLVariableSignature> | undefined;
|
|
@@ -56,4 +63,3 @@ export declare function collectSubfields(schema: GraphQLSchema, fragments: ObjMa
|
|
|
56
63
|
groupedFieldSet: GroupedFieldSet;
|
|
57
64
|
newDeferUsages: ReadonlyArray<DeferUsage>;
|
|
58
65
|
};
|
|
59
|
-
export {};
|
|
@@ -2,24 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.collectFields = collectFields;
|
|
4
4
|
exports.collectSubfields = collectSubfields;
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
/**
|
|
12
|
-
* Given a selectionSet, collects all of the fields and returns them.
|
|
13
|
-
*
|
|
14
|
-
* CollectFields requires the "runtime type" of an object. For a field that
|
|
15
|
-
* returns an Interface or Union type, the "runtime type" will be the actual
|
|
16
|
-
* object type returned by that field.
|
|
17
|
-
*
|
|
18
|
-
* @internal
|
|
19
|
-
*/
|
|
20
|
-
// eslint-disable-next-line max-params
|
|
5
|
+
const AccumulatorMap_ts_1 = require("../jsutils/AccumulatorMap.js");
|
|
6
|
+
const kinds_ts_1 = require("../language/kinds.js");
|
|
7
|
+
const definition_ts_1 = require("../type/definition.js");
|
|
8
|
+
const directives_ts_1 = require("../type/directives.js");
|
|
9
|
+
const typeFromAST_ts_1 = require("../utilities/typeFromAST.js");
|
|
10
|
+
const values_ts_1 = require("./values.js");
|
|
21
11
|
function collectFields(schema, fragments, variableValues, runtimeType, selectionSet, hideSuggestions, forbidSkipAndInclude = false) {
|
|
22
|
-
const groupedFieldSet = new
|
|
12
|
+
const groupedFieldSet = new AccumulatorMap_ts_1.AccumulatorMap();
|
|
23
13
|
const newDeferUsages = [];
|
|
24
14
|
const context = {
|
|
25
15
|
schema,
|
|
@@ -38,17 +28,6 @@ function collectFields(schema, fragments, variableValues, runtimeType, selection
|
|
|
38
28
|
forbiddenDirectiveInstances: context.forbiddenDirectiveInstances,
|
|
39
29
|
};
|
|
40
30
|
}
|
|
41
|
-
/**
|
|
42
|
-
* Given an array of field nodes, collects all of the subfields of the passed
|
|
43
|
-
* in fields, and returns them at the end.
|
|
44
|
-
*
|
|
45
|
-
* CollectSubFields requires the "return type" of an object. For a field that
|
|
46
|
-
* returns an Interface or Union type, the "return type" will be the actual
|
|
47
|
-
* object type returned by that field.
|
|
48
|
-
*
|
|
49
|
-
* @internal
|
|
50
|
-
*/
|
|
51
|
-
// eslint-disable-next-line max-params
|
|
52
31
|
function collectSubfields(schema, fragments, variableValues, returnType, fieldDetailsList, hideSuggestions) {
|
|
53
32
|
const context = {
|
|
54
33
|
schema,
|
|
@@ -60,7 +39,7 @@ function collectSubfields(schema, fragments, variableValues, returnType, fieldDe
|
|
|
60
39
|
forbiddenDirectiveInstances: [],
|
|
61
40
|
forbidSkipAndInclude: false,
|
|
62
41
|
};
|
|
63
|
-
const subGroupedFieldSet = new
|
|
42
|
+
const subGroupedFieldSet = new AccumulatorMap_ts_1.AccumulatorMap();
|
|
64
43
|
const newDeferUsages = [];
|
|
65
44
|
for (const fieldDetail of fieldDetailsList) {
|
|
66
45
|
const selectionSet = fieldDetail.node.selectionSet;
|
|
@@ -74,12 +53,11 @@ function collectSubfields(schema, fragments, variableValues, returnType, fieldDe
|
|
|
74
53
|
newDeferUsages,
|
|
75
54
|
};
|
|
76
55
|
}
|
|
77
|
-
// eslint-disable-next-line max-params
|
|
78
56
|
function collectFieldsImpl(context, selectionSet, groupedFieldSet, newDeferUsages, deferUsage, fragmentVariableValues) {
|
|
79
57
|
const { schema, fragments, variableValues, runtimeType, visitedFragmentNames, hideSuggestions, } = context;
|
|
80
58
|
for (const selection of selectionSet.selections) {
|
|
81
59
|
switch (selection.kind) {
|
|
82
|
-
case
|
|
60
|
+
case kinds_ts_1.Kind.FIELD: {
|
|
83
61
|
if (!shouldIncludeNode(context, selection, variableValues, fragmentVariableValues)) {
|
|
84
62
|
continue;
|
|
85
63
|
}
|
|
@@ -90,7 +68,7 @@ function collectFieldsImpl(context, selectionSet, groupedFieldSet, newDeferUsage
|
|
|
90
68
|
});
|
|
91
69
|
break;
|
|
92
70
|
}
|
|
93
|
-
case
|
|
71
|
+
case kinds_ts_1.Kind.INLINE_FRAGMENT: {
|
|
94
72
|
if (!shouldIncludeNode(context, selection, variableValues, fragmentVariableValues) ||
|
|
95
73
|
!doesFragmentConditionMatch(schema, selection, runtimeType)) {
|
|
96
74
|
continue;
|
|
@@ -105,7 +83,7 @@ function collectFieldsImpl(context, selectionSet, groupedFieldSet, newDeferUsage
|
|
|
105
83
|
}
|
|
106
84
|
break;
|
|
107
85
|
}
|
|
108
|
-
case
|
|
86
|
+
case kinds_ts_1.Kind.FRAGMENT_SPREAD: {
|
|
109
87
|
const fragName = selection.name.value;
|
|
110
88
|
if (!shouldIncludeNode(context, selection, variableValues, fragmentVariableValues)) {
|
|
111
89
|
continue;
|
|
@@ -119,9 +97,6 @@ function collectFieldsImpl(context, selectionSet, groupedFieldSet, newDeferUsage
|
|
|
119
97
|
const visitedAsDeferred = visitedFragmentNames.get(fragName);
|
|
120
98
|
let maybeNewDeferUsage;
|
|
121
99
|
if (!newDeferUsage) {
|
|
122
|
-
// If this spread is not deferred, it may be skipped when already visited
|
|
123
|
-
// as a non-deferred spread. If it was previously visited as a deferred spread,
|
|
124
|
-
// it must be revisited.
|
|
125
100
|
if (visitedAsDeferred === false) {
|
|
126
101
|
continue;
|
|
127
102
|
}
|
|
@@ -129,7 +104,6 @@ function collectFieldsImpl(context, selectionSet, groupedFieldSet, newDeferUsage
|
|
|
129
104
|
maybeNewDeferUsage = deferUsage;
|
|
130
105
|
}
|
|
131
106
|
else {
|
|
132
|
-
// If this spread is deferred, it can be skipped if it has already been visited.
|
|
133
107
|
if (visitedAsDeferred !== undefined) {
|
|
134
108
|
continue;
|
|
135
109
|
}
|
|
@@ -140,7 +114,7 @@ function collectFieldsImpl(context, selectionSet, groupedFieldSet, newDeferUsage
|
|
|
140
114
|
const fragmentVariableSignatures = fragment.variableSignatures;
|
|
141
115
|
let newFragmentVariableValues;
|
|
142
116
|
if (fragmentVariableSignatures) {
|
|
143
|
-
newFragmentVariableValues = (0,
|
|
117
|
+
newFragmentVariableValues = (0, values_ts_1.getFragmentVariableValues)(selection, fragmentVariableSignatures, variableValues, fragmentVariableValues, hideSuggestions);
|
|
144
118
|
}
|
|
145
119
|
collectFieldsImpl(context, fragment.definition.selectionSet, groupedFieldSet, newDeferUsages, maybeNewDeferUsage, newFragmentVariableValues);
|
|
146
120
|
break;
|
|
@@ -148,13 +122,8 @@ function collectFieldsImpl(context, selectionSet, groupedFieldSet, newDeferUsage
|
|
|
148
122
|
}
|
|
149
123
|
}
|
|
150
124
|
}
|
|
151
|
-
/**
|
|
152
|
-
* Returns an object containing the `@defer` arguments if a field should be
|
|
153
|
-
* deferred based on the experimental flag, defer directive present and
|
|
154
|
-
* not disabled by the "if" argument.
|
|
155
|
-
*/
|
|
156
125
|
function getDeferUsage(variableValues, fragmentVariableValues, node, parentDeferUsage) {
|
|
157
|
-
const defer = (0,
|
|
126
|
+
const defer = (0, values_ts_1.getDirectiveValues)(directives_ts_1.GraphQLDeferDirective, node, variableValues, fragmentVariableValues);
|
|
158
127
|
if (!defer) {
|
|
159
128
|
return;
|
|
160
129
|
}
|
|
@@ -166,55 +135,45 @@ function getDeferUsage(variableValues, fragmentVariableValues, node, parentDefer
|
|
|
166
135
|
parentDeferUsage,
|
|
167
136
|
};
|
|
168
137
|
}
|
|
169
|
-
/**
|
|
170
|
-
* Determines if a field should be included based on the `@include` and `@skip`
|
|
171
|
-
* directives, where `@skip` has higher precedence than `@include`.
|
|
172
|
-
*/
|
|
173
138
|
function shouldIncludeNode(context, node, variableValues, fragmentVariableValues) {
|
|
174
|
-
const skipDirectiveNode = node.directives?.find((directive) => directive.name.value ===
|
|
139
|
+
const skipDirectiveNode = node.directives?.find((directive) => directive.name.value === directives_ts_1.GraphQLSkipDirective.name);
|
|
175
140
|
if (skipDirectiveNode && context.forbidSkipAndInclude) {
|
|
176
141
|
context.forbiddenDirectiveInstances.push(skipDirectiveNode);
|
|
177
142
|
return false;
|
|
178
143
|
}
|
|
179
144
|
const skip = skipDirectiveNode
|
|
180
|
-
? (0,
|
|
145
|
+
? (0, values_ts_1.getArgumentValues)(directives_ts_1.GraphQLSkipDirective, skipDirectiveNode, variableValues, fragmentVariableValues, context.hideSuggestions)
|
|
181
146
|
: undefined;
|
|
182
147
|
if (skip?.if === true) {
|
|
183
148
|
return false;
|
|
184
149
|
}
|
|
185
|
-
const includeDirectiveNode = node.directives?.find((directive) => directive.name.value ===
|
|
150
|
+
const includeDirectiveNode = node.directives?.find((directive) => directive.name.value === directives_ts_1.GraphQLIncludeDirective.name);
|
|
186
151
|
if (includeDirectiveNode && context.forbidSkipAndInclude) {
|
|
187
152
|
context.forbiddenDirectiveInstances.push(includeDirectiveNode);
|
|
188
153
|
return false;
|
|
189
154
|
}
|
|
190
155
|
const include = includeDirectiveNode
|
|
191
|
-
? (0,
|
|
156
|
+
? (0, values_ts_1.getArgumentValues)(directives_ts_1.GraphQLIncludeDirective, includeDirectiveNode, variableValues, fragmentVariableValues, context.hideSuggestions)
|
|
192
157
|
: undefined;
|
|
193
158
|
if (include?.if === false) {
|
|
194
159
|
return false;
|
|
195
160
|
}
|
|
196
161
|
return true;
|
|
197
162
|
}
|
|
198
|
-
/**
|
|
199
|
-
* Determines if a fragment is applicable to the given type.
|
|
200
|
-
*/
|
|
201
163
|
function doesFragmentConditionMatch(schema, fragment, type) {
|
|
202
164
|
const typeConditionNode = fragment.typeCondition;
|
|
203
165
|
if (!typeConditionNode) {
|
|
204
166
|
return true;
|
|
205
167
|
}
|
|
206
|
-
const conditionalType = (0,
|
|
168
|
+
const conditionalType = (0, typeFromAST_ts_1.typeFromAST)(schema, typeConditionNode);
|
|
207
169
|
if (conditionalType === type) {
|
|
208
170
|
return true;
|
|
209
171
|
}
|
|
210
|
-
if ((0,
|
|
172
|
+
if ((0, definition_ts_1.isAbstractType)(conditionalType)) {
|
|
211
173
|
return schema.isSubType(conditionalType, type);
|
|
212
174
|
}
|
|
213
175
|
return false;
|
|
214
176
|
}
|
|
215
|
-
/**
|
|
216
|
-
* Implements the logic to compute the key of a given field's entry
|
|
217
|
-
*/
|
|
218
177
|
function getFieldEntryKey(node) {
|
|
219
178
|
return node.alias ? node.alias.value : node.name.value;
|
|
220
179
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collectFields.js","sourceRoot":"","sources":["../../src/execution/collectFields.ts"],"names":[],"mappings":"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","sourcesContent":["import { AccumulatorMap } from '../jsutils/AccumulatorMap.js';\nimport type { ObjMap, ReadOnlyObjMap } from '../jsutils/ObjMap.js';\n\nimport type {\n ConstValueNode,\n DirectiveNode,\n FieldNode,\n FragmentDefinitionNode,\n FragmentSpreadNode,\n InlineFragmentNode,\n SelectionSetNode,\n} from '../language/ast.js';\nimport { Kind } from '../language/kinds.js';\n\nimport type { GraphQLObjectType } from '../type/definition.js';\nimport { isAbstractType } from '../type/definition.js';\nimport {\n GraphQLDeferDirective,\n GraphQLIncludeDirective,\n GraphQLSkipDirective,\n} from '../type/directives.js';\nimport type { GraphQLSchema } from '../type/schema.js';\n\nimport { typeFromAST } from '../utilities/typeFromAST.js';\n\nimport type { GraphQLVariableSignature } from './getVariableSignature.js';\nimport type { VariableValues } from './values.js';\nimport {\n getArgumentValues,\n getDirectiveValues,\n getFragmentVariableValues,\n} from './values.js';\n\nexport interface DeferUsage {\n label: string | undefined;\n parentDeferUsage: DeferUsage | undefined;\n}\n\nexport interface FragmentVariableValues {\n readonly sources: ReadOnlyObjMap<FragmentVariableValueSource>;\n readonly coerced: ReadOnlyObjMap<unknown>;\n}\n\ninterface FragmentVariableValueSource {\n readonly signature: GraphQLVariableSignature;\n readonly value?: ConstValueNode;\n readonly fragmentVariableValues?: FragmentVariableValues;\n}\n\nexport interface FieldDetails {\n node: FieldNode;\n deferUsage?: DeferUsage | undefined;\n fragmentVariableValues?: FragmentVariableValues | undefined;\n}\n\nexport type FieldDetailsList = ReadonlyArray<FieldDetails>;\n\nexport type GroupedFieldSet = ReadonlyMap<string, FieldDetailsList>;\n\nexport interface FragmentDetails {\n definition: FragmentDefinitionNode;\n variableSignatures?: ObjMap<GraphQLVariableSignature> | undefined;\n}\n\ninterface CollectFieldsContext {\n schema: GraphQLSchema;\n fragments: ObjMap<FragmentDetails>;\n variableValues: VariableValues;\n runtimeType: GraphQLObjectType;\n visitedFragmentNames: Map<string, boolean>;\n hideSuggestions: boolean;\n forbiddenDirectiveInstances: Array<DirectiveNode>;\n forbidSkipAndInclude: boolean;\n}\n\n/**\n * Given a selectionSet, collects all of the fields and returns them.\n *\n * CollectFields requires the \"runtime type\" of an object. For a field that\n * returns an Interface or Union type, the \"runtime type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\n// eslint-disable-next-line max-params\nexport function collectFields(\n schema: GraphQLSchema,\n fragments: ObjMap<FragmentDetails>,\n variableValues: VariableValues,\n runtimeType: GraphQLObjectType,\n selectionSet: SelectionSetNode,\n hideSuggestions: boolean,\n forbidSkipAndInclude = false,\n): {\n groupedFieldSet: GroupedFieldSet;\n newDeferUsages: ReadonlyArray<DeferUsage>;\n forbiddenDirectiveInstances: ReadonlyArray<DirectiveNode>;\n} {\n const groupedFieldSet = new AccumulatorMap<string, FieldDetails>();\n const newDeferUsages: Array<DeferUsage> = [];\n const context: CollectFieldsContext = {\n schema,\n fragments,\n variableValues,\n runtimeType,\n visitedFragmentNames: new Map(),\n hideSuggestions,\n forbiddenDirectiveInstances: [],\n forbidSkipAndInclude,\n };\n\n collectFieldsImpl(context, selectionSet, groupedFieldSet, newDeferUsages);\n return {\n groupedFieldSet,\n newDeferUsages,\n forbiddenDirectiveInstances: context.forbiddenDirectiveInstances,\n };\n}\n\n/**\n * Given an array of field nodes, collects all of the subfields of the passed\n * in fields, and returns them at the end.\n *\n * CollectSubFields requires the \"return type\" of an object. For a field that\n * returns an Interface or Union type, the \"return type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\n// eslint-disable-next-line max-params\nexport function collectSubfields(\n schema: GraphQLSchema,\n fragments: ObjMap<FragmentDetails>,\n variableValues: VariableValues,\n returnType: GraphQLObjectType,\n fieldDetailsList: FieldDetailsList,\n hideSuggestions: boolean,\n): {\n groupedFieldSet: GroupedFieldSet;\n newDeferUsages: ReadonlyArray<DeferUsage>;\n} {\n const context: CollectFieldsContext = {\n schema,\n fragments,\n variableValues,\n runtimeType: returnType,\n visitedFragmentNames: new Map(),\n hideSuggestions,\n forbiddenDirectiveInstances: [],\n forbidSkipAndInclude: false,\n };\n const subGroupedFieldSet = new AccumulatorMap<string, FieldDetails>();\n const newDeferUsages: Array<DeferUsage> = [];\n\n for (const fieldDetail of fieldDetailsList) {\n const selectionSet = fieldDetail.node.selectionSet;\n if (selectionSet) {\n const { deferUsage, fragmentVariableValues } = fieldDetail;\n collectFieldsImpl(\n context,\n selectionSet,\n subGroupedFieldSet,\n newDeferUsages,\n deferUsage,\n fragmentVariableValues,\n );\n }\n }\n\n return {\n groupedFieldSet: subGroupedFieldSet,\n newDeferUsages,\n };\n}\n\n// eslint-disable-next-line max-params\nfunction collectFieldsImpl(\n context: CollectFieldsContext,\n selectionSet: SelectionSetNode,\n groupedFieldSet: AccumulatorMap<string, FieldDetails>,\n newDeferUsages: Array<DeferUsage>,\n deferUsage?: DeferUsage,\n fragmentVariableValues?: FragmentVariableValues,\n): void {\n const {\n schema,\n fragments,\n variableValues,\n runtimeType,\n visitedFragmentNames,\n hideSuggestions,\n } = context;\n\n for (const selection of selectionSet.selections) {\n switch (selection.kind) {\n case Kind.FIELD: {\n if (\n !shouldIncludeNode(\n context,\n selection,\n variableValues,\n fragmentVariableValues,\n )\n ) {\n continue;\n }\n groupedFieldSet.add(getFieldEntryKey(selection), {\n node: selection,\n deferUsage,\n fragmentVariableValues,\n });\n break;\n }\n case Kind.INLINE_FRAGMENT: {\n if (\n !shouldIncludeNode(\n context,\n selection,\n variableValues,\n fragmentVariableValues,\n ) ||\n !doesFragmentConditionMatch(schema, selection, runtimeType)\n ) {\n continue;\n }\n\n const newDeferUsage = getDeferUsage(\n variableValues,\n fragmentVariableValues,\n selection,\n deferUsage,\n );\n\n if (!newDeferUsage) {\n collectFieldsImpl(\n context,\n selection.selectionSet,\n groupedFieldSet,\n newDeferUsages,\n deferUsage,\n fragmentVariableValues,\n );\n } else {\n newDeferUsages.push(newDeferUsage);\n collectFieldsImpl(\n context,\n selection.selectionSet,\n groupedFieldSet,\n newDeferUsages,\n newDeferUsage,\n fragmentVariableValues,\n );\n }\n\n break;\n }\n case Kind.FRAGMENT_SPREAD: {\n const fragName = selection.name.value;\n\n if (\n !shouldIncludeNode(\n context,\n selection,\n variableValues,\n fragmentVariableValues,\n )\n ) {\n continue;\n }\n\n const fragment = fragments[fragName];\n if (\n fragment == null ||\n !doesFragmentConditionMatch(schema, fragment.definition, runtimeType)\n ) {\n continue;\n }\n\n const newDeferUsage = getDeferUsage(\n variableValues,\n fragmentVariableValues,\n selection,\n deferUsage,\n );\n\n const visitedAsDeferred = visitedFragmentNames.get(fragName);\n\n let maybeNewDeferUsage: DeferUsage | undefined;\n if (!newDeferUsage) {\n // If this spread is not deferred, it may be skipped when already visited\n // as a non-deferred spread. If it was previously visited as a deferred spread,\n // it must be revisited.\n if (visitedAsDeferred === false) {\n continue;\n }\n visitedFragmentNames.set(fragName, false);\n maybeNewDeferUsage = deferUsage;\n } else {\n // If this spread is deferred, it can be skipped if it has already been visited.\n if (visitedAsDeferred !== undefined) {\n continue;\n }\n visitedFragmentNames.set(fragName, true);\n newDeferUsages.push(newDeferUsage);\n maybeNewDeferUsage = newDeferUsage;\n }\n\n const fragmentVariableSignatures = fragment.variableSignatures;\n let newFragmentVariableValues: FragmentVariableValues | undefined;\n if (fragmentVariableSignatures) {\n newFragmentVariableValues = getFragmentVariableValues(\n selection,\n fragmentVariableSignatures,\n variableValues,\n fragmentVariableValues,\n hideSuggestions,\n );\n }\n\n collectFieldsImpl(\n context,\n fragment.definition.selectionSet,\n groupedFieldSet,\n newDeferUsages,\n maybeNewDeferUsage,\n newFragmentVariableValues,\n );\n break;\n }\n }\n }\n}\n\n/**\n * Returns an object containing the `@defer` arguments if a field should be\n * deferred based on the experimental flag, defer directive present and\n * not disabled by the \"if\" argument.\n */\nfunction getDeferUsage(\n variableValues: VariableValues,\n fragmentVariableValues: FragmentVariableValues | undefined,\n node: FragmentSpreadNode | InlineFragmentNode,\n parentDeferUsage: DeferUsage | undefined,\n): DeferUsage | undefined {\n const defer = getDirectiveValues(\n GraphQLDeferDirective,\n node,\n variableValues,\n fragmentVariableValues,\n );\n\n if (!defer) {\n return;\n }\n\n if (defer.if === false) {\n return;\n }\n\n return {\n label: typeof defer.label === 'string' ? defer.label : undefined,\n parentDeferUsage,\n };\n}\n\n/**\n * Determines if a field should be included based on the `@include` and `@skip`\n * directives, where `@skip` has higher precedence than `@include`.\n */\nfunction shouldIncludeNode(\n context: CollectFieldsContext,\n node: FragmentSpreadNode | FieldNode | InlineFragmentNode,\n variableValues: VariableValues,\n fragmentVariableValues: FragmentVariableValues | undefined,\n): boolean {\n const skipDirectiveNode = node.directives?.find(\n (directive) => directive.name.value === GraphQLSkipDirective.name,\n );\n if (skipDirectiveNode && context.forbidSkipAndInclude) {\n context.forbiddenDirectiveInstances.push(skipDirectiveNode);\n return false;\n }\n const skip = skipDirectiveNode\n ? getArgumentValues(\n GraphQLSkipDirective,\n skipDirectiveNode,\n variableValues,\n fragmentVariableValues,\n context.hideSuggestions,\n )\n : undefined;\n if (skip?.if === true) {\n return false;\n }\n\n const includeDirectiveNode = node.directives?.find(\n (directive) => directive.name.value === GraphQLIncludeDirective.name,\n );\n if (includeDirectiveNode && context.forbidSkipAndInclude) {\n context.forbiddenDirectiveInstances.push(includeDirectiveNode);\n return false;\n }\n const include = includeDirectiveNode\n ? getArgumentValues(\n GraphQLIncludeDirective,\n includeDirectiveNode,\n variableValues,\n fragmentVariableValues,\n context.hideSuggestions,\n )\n : undefined;\n if (include?.if === false) {\n return false;\n }\n return true;\n}\n\n/**\n * Determines if a fragment is applicable to the given type.\n */\nfunction doesFragmentConditionMatch(\n schema: GraphQLSchema,\n fragment: FragmentDefinitionNode | InlineFragmentNode,\n type: GraphQLObjectType,\n): boolean {\n const typeConditionNode = fragment.typeCondition;\n if (!typeConditionNode) {\n return true;\n }\n const conditionalType = typeFromAST(schema, typeConditionNode);\n if (conditionalType === type) {\n return true;\n }\n if (isAbstractType(conditionalType)) {\n return schema.isSubType(conditionalType, type);\n }\n return false;\n}\n\n/**\n * Implements the logic to compute the key of a given field's entry\n */\nfunction getFieldEntryKey(node: FieldNode): string {\n return node.alias ? node.alias.value : node.name.value;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"collectFields.js","sourceRoot":"","sources":["../../src/execution/collectFields.ts"],"names":[],"mappings":"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","sourcesContent":["import { AccumulatorMap } from '../jsutils/AccumulatorMap.ts';\nimport type { ObjMap, ReadOnlyObjMap } from '../jsutils/ObjMap.ts';\n\nimport type {\n DirectiveNode,\n FieldNode,\n FragmentDefinitionNode,\n FragmentSpreadNode,\n InlineFragmentNode,\n SelectionSetNode,\n ValueNode,\n} from '../language/ast.ts';\nimport { Kind } from '../language/kinds.ts';\n\nimport type { GraphQLObjectType } from '../type/definition.ts';\nimport { isAbstractType } from '../type/definition.ts';\nimport {\n GraphQLDeferDirective,\n GraphQLIncludeDirective,\n GraphQLSkipDirective,\n} from '../type/directives.ts';\nimport type { GraphQLSchema } from '../type/schema.ts';\n\nimport { typeFromAST } from '../utilities/typeFromAST.ts';\n\nimport type { GraphQLVariableSignature } from './getVariableSignature.ts';\nimport type { VariableValues } from './values.ts';\nimport {\n getArgumentValues,\n getDirectiveValues,\n getFragmentVariableValues,\n} from './values.ts';\n\n/** @internal */\nexport interface DeferUsage {\n label: string | undefined;\n parentDeferUsage: DeferUsage | undefined;\n}\n\n/** @internal */\nexport interface FragmentVariableValues {\n readonly sources: ReadOnlyObjMap<FragmentVariableValueSource>;\n readonly coerced: ReadOnlyObjMap<unknown>;\n}\n\n/** @internal */\nexport interface FragmentVariableValueSource {\n readonly signature: GraphQLVariableSignature;\n readonly value?: ValueNode;\n readonly fragmentVariableValues?: FragmentVariableValues;\n}\n\n/** @internal */\nexport interface FieldDetails {\n node: FieldNode;\n deferUsage?: DeferUsage | undefined;\n fragmentVariableValues?: FragmentVariableValues | undefined;\n}\n\n/** @internal */\nexport type FieldDetailsList = ReadonlyArray<FieldDetails>;\n\n/** @internal */\nexport type GroupedFieldSet = ReadonlyMap<string, FieldDetailsList>;\n\n/** @internal */\nexport interface FragmentDetails {\n definition: FragmentDefinitionNode;\n variableSignatures?: ObjMap<GraphQLVariableSignature> | undefined;\n}\n\ninterface CollectFieldsContext {\n schema: GraphQLSchema;\n fragments: ObjMap<FragmentDetails>;\n variableValues: VariableValues;\n runtimeType: GraphQLObjectType;\n visitedFragmentNames: Map<string, boolean>;\n hideSuggestions: boolean;\n forbiddenDirectiveInstances: Array<DirectiveNode>;\n forbidSkipAndInclude: boolean;\n}\n\n/**\n * Given a selectionSet, collects all of the fields and returns them.\n *\n * CollectFields requires the \"runtime type\" of an object. For a field that\n * returns an Interface or Union type, the \"runtime type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\n// eslint-disable-next-line max-params\nexport function collectFields(\n schema: GraphQLSchema,\n fragments: ObjMap<FragmentDetails>,\n variableValues: VariableValues,\n runtimeType: GraphQLObjectType,\n selectionSet: SelectionSetNode,\n hideSuggestions: boolean,\n forbidSkipAndInclude = false,\n): {\n groupedFieldSet: GroupedFieldSet;\n newDeferUsages: ReadonlyArray<DeferUsage>;\n forbiddenDirectiveInstances: ReadonlyArray<DirectiveNode>;\n} {\n const groupedFieldSet = new AccumulatorMap<string, FieldDetails>();\n const newDeferUsages: Array<DeferUsage> = [];\n const context: CollectFieldsContext = {\n schema,\n fragments,\n variableValues,\n runtimeType,\n visitedFragmentNames: new Map(),\n hideSuggestions,\n forbiddenDirectiveInstances: [],\n forbidSkipAndInclude,\n };\n\n collectFieldsImpl(context, selectionSet, groupedFieldSet, newDeferUsages);\n return {\n groupedFieldSet,\n newDeferUsages,\n forbiddenDirectiveInstances: context.forbiddenDirectiveInstances,\n };\n}\n\n/**\n * Given an array of field nodes, collects all of the subfields of the passed\n * in fields, and returns them at the end.\n *\n * CollectSubFields requires the \"return type\" of an object. For a field that\n * returns an Interface or Union type, the \"return type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\n// eslint-disable-next-line max-params\nexport function collectSubfields(\n schema: GraphQLSchema,\n fragments: ObjMap<FragmentDetails>,\n variableValues: VariableValues,\n returnType: GraphQLObjectType,\n fieldDetailsList: FieldDetailsList,\n hideSuggestions: boolean,\n): {\n groupedFieldSet: GroupedFieldSet;\n newDeferUsages: ReadonlyArray<DeferUsage>;\n} {\n const context: CollectFieldsContext = {\n schema,\n fragments,\n variableValues,\n runtimeType: returnType,\n visitedFragmentNames: new Map(),\n hideSuggestions,\n forbiddenDirectiveInstances: [],\n forbidSkipAndInclude: false,\n };\n const subGroupedFieldSet = new AccumulatorMap<string, FieldDetails>();\n const newDeferUsages: Array<DeferUsage> = [];\n\n for (const fieldDetail of fieldDetailsList) {\n const selectionSet = fieldDetail.node.selectionSet;\n if (selectionSet) {\n const { deferUsage, fragmentVariableValues } = fieldDetail;\n collectFieldsImpl(\n context,\n selectionSet,\n subGroupedFieldSet,\n newDeferUsages,\n deferUsage,\n fragmentVariableValues,\n );\n }\n }\n\n return {\n groupedFieldSet: subGroupedFieldSet,\n newDeferUsages,\n };\n}\n\n/** @internal */\n// eslint-disable-next-line max-params\nfunction collectFieldsImpl(\n context: CollectFieldsContext,\n selectionSet: SelectionSetNode,\n groupedFieldSet: AccumulatorMap<string, FieldDetails>,\n newDeferUsages: Array<DeferUsage>,\n deferUsage?: DeferUsage,\n fragmentVariableValues?: FragmentVariableValues,\n): void {\n const {\n schema,\n fragments,\n variableValues,\n runtimeType,\n visitedFragmentNames,\n hideSuggestions,\n } = context;\n\n for (const selection of selectionSet.selections) {\n switch (selection.kind) {\n case Kind.FIELD: {\n if (\n !shouldIncludeNode(\n context,\n selection,\n variableValues,\n fragmentVariableValues,\n )\n ) {\n continue;\n }\n groupedFieldSet.add(getFieldEntryKey(selection), {\n node: selection,\n deferUsage,\n fragmentVariableValues,\n });\n break;\n }\n case Kind.INLINE_FRAGMENT: {\n if (\n !shouldIncludeNode(\n context,\n selection,\n variableValues,\n fragmentVariableValues,\n ) ||\n !doesFragmentConditionMatch(schema, selection, runtimeType)\n ) {\n continue;\n }\n\n const newDeferUsage = getDeferUsage(\n variableValues,\n fragmentVariableValues,\n selection,\n deferUsage,\n );\n\n if (!newDeferUsage) {\n collectFieldsImpl(\n context,\n selection.selectionSet,\n groupedFieldSet,\n newDeferUsages,\n deferUsage,\n fragmentVariableValues,\n );\n } else {\n newDeferUsages.push(newDeferUsage);\n collectFieldsImpl(\n context,\n selection.selectionSet,\n groupedFieldSet,\n newDeferUsages,\n newDeferUsage,\n fragmentVariableValues,\n );\n }\n\n break;\n }\n case Kind.FRAGMENT_SPREAD: {\n const fragName = selection.name.value;\n\n if (\n !shouldIncludeNode(\n context,\n selection,\n variableValues,\n fragmentVariableValues,\n )\n ) {\n continue;\n }\n\n const fragment = fragments[fragName];\n if (\n fragment == null ||\n !doesFragmentConditionMatch(schema, fragment.definition, runtimeType)\n ) {\n continue;\n }\n\n const newDeferUsage = getDeferUsage(\n variableValues,\n fragmentVariableValues,\n selection,\n deferUsage,\n );\n\n const visitedAsDeferred = visitedFragmentNames.get(fragName);\n\n let maybeNewDeferUsage: DeferUsage | undefined;\n if (!newDeferUsage) {\n // If this spread is not deferred, it may be skipped when already visited\n // as a non-deferred spread. If it was previously visited as a deferred spread,\n // it must be revisited.\n if (visitedAsDeferred === false) {\n continue;\n }\n visitedFragmentNames.set(fragName, false);\n maybeNewDeferUsage = deferUsage;\n } else {\n // If this spread is deferred, it can be skipped if it has already been visited.\n if (visitedAsDeferred !== undefined) {\n continue;\n }\n visitedFragmentNames.set(fragName, true);\n newDeferUsages.push(newDeferUsage);\n maybeNewDeferUsage = newDeferUsage;\n }\n\n const fragmentVariableSignatures = fragment.variableSignatures;\n let newFragmentVariableValues: FragmentVariableValues | undefined;\n if (fragmentVariableSignatures) {\n newFragmentVariableValues = getFragmentVariableValues(\n selection,\n fragmentVariableSignatures,\n variableValues,\n fragmentVariableValues,\n hideSuggestions,\n );\n }\n\n collectFieldsImpl(\n context,\n fragment.definition.selectionSet,\n groupedFieldSet,\n newDeferUsages,\n maybeNewDeferUsage,\n newFragmentVariableValues,\n );\n break;\n }\n }\n }\n}\n\n/**\n * Returns an object containing the `@defer` arguments if a field should be\n * deferred based on the experimental flag, defer directive present and\n * not disabled by the \"if\" argument.\n *\n * @internal\n */\nfunction getDeferUsage(\n variableValues: VariableValues,\n fragmentVariableValues: FragmentVariableValues | undefined,\n node: FragmentSpreadNode | InlineFragmentNode,\n parentDeferUsage: DeferUsage | undefined,\n): DeferUsage | undefined {\n const defer = getDirectiveValues(\n GraphQLDeferDirective,\n node,\n variableValues,\n fragmentVariableValues,\n );\n\n if (!defer) {\n return;\n }\n\n if (defer.if === false) {\n return;\n }\n\n return {\n label: typeof defer.label === 'string' ? defer.label : undefined,\n parentDeferUsage,\n };\n}\n\n/**\n * Determines if a field should be included based on the `@include` and `@skip`\n * directives, where `@skip` has higher precedence than `@include`.\n *\n * @internal\n */\nfunction shouldIncludeNode(\n context: CollectFieldsContext,\n node: FragmentSpreadNode | FieldNode | InlineFragmentNode,\n variableValues: VariableValues,\n fragmentVariableValues: FragmentVariableValues | undefined,\n): boolean {\n const skipDirectiveNode = node.directives?.find(\n (directive) => directive.name.value === GraphQLSkipDirective.name,\n );\n if (skipDirectiveNode && context.forbidSkipAndInclude) {\n context.forbiddenDirectiveInstances.push(skipDirectiveNode);\n return false;\n }\n const skip = skipDirectiveNode\n ? getArgumentValues(\n GraphQLSkipDirective,\n skipDirectiveNode,\n variableValues,\n fragmentVariableValues,\n context.hideSuggestions,\n )\n : undefined;\n if (skip?.if === true) {\n return false;\n }\n\n const includeDirectiveNode = node.directives?.find(\n (directive) => directive.name.value === GraphQLIncludeDirective.name,\n );\n if (includeDirectiveNode && context.forbidSkipAndInclude) {\n context.forbiddenDirectiveInstances.push(includeDirectiveNode);\n return false;\n }\n const include = includeDirectiveNode\n ? getArgumentValues(\n GraphQLIncludeDirective,\n includeDirectiveNode,\n variableValues,\n fragmentVariableValues,\n context.hideSuggestions,\n )\n : undefined;\n if (include?.if === false) {\n return false;\n }\n return true;\n}\n\n/**\n * Determines if a fragment is applicable to the given type.\n *\n * @internal\n */\nfunction doesFragmentConditionMatch(\n schema: GraphQLSchema,\n fragment: FragmentDefinitionNode | InlineFragmentNode,\n type: GraphQLObjectType,\n): boolean {\n const typeConditionNode = fragment.typeCondition;\n if (!typeConditionNode) {\n return true;\n }\n const conditionalType = typeFromAST(schema, typeConditionNode);\n if (conditionalType === type) {\n return true;\n }\n if (isAbstractType(conditionalType)) {\n return schema.isSubType(conditionalType, type);\n }\n return false;\n}\n\n/**\n * Implements the logic to compute the key of a given field's entry\n *\n * @internal\n */\nfunction getFieldEntryKey(node: FieldNode): string {\n return node.alias ? node.alias.value : node.name.value;\n}\n"]}
|
|
@@ -4,16 +4,6 @@ import { isAbstractType } from "../type/definition.mjs";
|
|
|
4
4
|
import { GraphQLDeferDirective, GraphQLIncludeDirective, GraphQLSkipDirective, } from "../type/directives.mjs";
|
|
5
5
|
import { typeFromAST } from "../utilities/typeFromAST.mjs";
|
|
6
6
|
import { getArgumentValues, getDirectiveValues, getFragmentVariableValues, } from "./values.mjs";
|
|
7
|
-
/**
|
|
8
|
-
* Given a selectionSet, collects all of the fields and returns them.
|
|
9
|
-
*
|
|
10
|
-
* CollectFields requires the "runtime type" of an object. For a field that
|
|
11
|
-
* returns an Interface or Union type, the "runtime type" will be the actual
|
|
12
|
-
* object type returned by that field.
|
|
13
|
-
*
|
|
14
|
-
* @internal
|
|
15
|
-
*/
|
|
16
|
-
// eslint-disable-next-line max-params
|
|
17
7
|
export function collectFields(schema, fragments, variableValues, runtimeType, selectionSet, hideSuggestions, forbidSkipAndInclude = false) {
|
|
18
8
|
const groupedFieldSet = new AccumulatorMap();
|
|
19
9
|
const newDeferUsages = [];
|
|
@@ -34,17 +24,6 @@ export function collectFields(schema, fragments, variableValues, runtimeType, se
|
|
|
34
24
|
forbiddenDirectiveInstances: context.forbiddenDirectiveInstances,
|
|
35
25
|
};
|
|
36
26
|
}
|
|
37
|
-
/**
|
|
38
|
-
* Given an array of field nodes, collects all of the subfields of the passed
|
|
39
|
-
* in fields, and returns them at the end.
|
|
40
|
-
*
|
|
41
|
-
* CollectSubFields requires the "return type" of an object. For a field that
|
|
42
|
-
* returns an Interface or Union type, the "return type" will be the actual
|
|
43
|
-
* object type returned by that field.
|
|
44
|
-
*
|
|
45
|
-
* @internal
|
|
46
|
-
*/
|
|
47
|
-
// eslint-disable-next-line max-params
|
|
48
27
|
export function collectSubfields(schema, fragments, variableValues, returnType, fieldDetailsList, hideSuggestions) {
|
|
49
28
|
const context = {
|
|
50
29
|
schema,
|
|
@@ -70,7 +49,6 @@ export function collectSubfields(schema, fragments, variableValues, returnType,
|
|
|
70
49
|
newDeferUsages,
|
|
71
50
|
};
|
|
72
51
|
}
|
|
73
|
-
// eslint-disable-next-line max-params
|
|
74
52
|
function collectFieldsImpl(context, selectionSet, groupedFieldSet, newDeferUsages, deferUsage, fragmentVariableValues) {
|
|
75
53
|
const { schema, fragments, variableValues, runtimeType, visitedFragmentNames, hideSuggestions, } = context;
|
|
76
54
|
for (const selection of selectionSet.selections) {
|
|
@@ -115,9 +93,6 @@ function collectFieldsImpl(context, selectionSet, groupedFieldSet, newDeferUsage
|
|
|
115
93
|
const visitedAsDeferred = visitedFragmentNames.get(fragName);
|
|
116
94
|
let maybeNewDeferUsage;
|
|
117
95
|
if (!newDeferUsage) {
|
|
118
|
-
// If this spread is not deferred, it may be skipped when already visited
|
|
119
|
-
// as a non-deferred spread. If it was previously visited as a deferred spread,
|
|
120
|
-
// it must be revisited.
|
|
121
96
|
if (visitedAsDeferred === false) {
|
|
122
97
|
continue;
|
|
123
98
|
}
|
|
@@ -125,7 +100,6 @@ function collectFieldsImpl(context, selectionSet, groupedFieldSet, newDeferUsage
|
|
|
125
100
|
maybeNewDeferUsage = deferUsage;
|
|
126
101
|
}
|
|
127
102
|
else {
|
|
128
|
-
// If this spread is deferred, it can be skipped if it has already been visited.
|
|
129
103
|
if (visitedAsDeferred !== undefined) {
|
|
130
104
|
continue;
|
|
131
105
|
}
|
|
@@ -144,11 +118,6 @@ function collectFieldsImpl(context, selectionSet, groupedFieldSet, newDeferUsage
|
|
|
144
118
|
}
|
|
145
119
|
}
|
|
146
120
|
}
|
|
147
|
-
/**
|
|
148
|
-
* Returns an object containing the `@defer` arguments if a field should be
|
|
149
|
-
* deferred based on the experimental flag, defer directive present and
|
|
150
|
-
* not disabled by the "if" argument.
|
|
151
|
-
*/
|
|
152
121
|
function getDeferUsage(variableValues, fragmentVariableValues, node, parentDeferUsage) {
|
|
153
122
|
const defer = getDirectiveValues(GraphQLDeferDirective, node, variableValues, fragmentVariableValues);
|
|
154
123
|
if (!defer) {
|
|
@@ -162,10 +131,6 @@ function getDeferUsage(variableValues, fragmentVariableValues, node, parentDefer
|
|
|
162
131
|
parentDeferUsage,
|
|
163
132
|
};
|
|
164
133
|
}
|
|
165
|
-
/**
|
|
166
|
-
* Determines if a field should be included based on the `@include` and `@skip`
|
|
167
|
-
* directives, where `@skip` has higher precedence than `@include`.
|
|
168
|
-
*/
|
|
169
134
|
function shouldIncludeNode(context, node, variableValues, fragmentVariableValues) {
|
|
170
135
|
const skipDirectiveNode = node.directives?.find((directive) => directive.name.value === GraphQLSkipDirective.name);
|
|
171
136
|
if (skipDirectiveNode && context.forbidSkipAndInclude) {
|
|
@@ -191,9 +156,6 @@ function shouldIncludeNode(context, node, variableValues, fragmentVariableValues
|
|
|
191
156
|
}
|
|
192
157
|
return true;
|
|
193
158
|
}
|
|
194
|
-
/**
|
|
195
|
-
* Determines if a fragment is applicable to the given type.
|
|
196
|
-
*/
|
|
197
159
|
function doesFragmentConditionMatch(schema, fragment, type) {
|
|
198
160
|
const typeConditionNode = fragment.typeCondition;
|
|
199
161
|
if (!typeConditionNode) {
|
|
@@ -208,9 +170,6 @@ function doesFragmentConditionMatch(schema, fragment, type) {
|
|
|
208
170
|
}
|
|
209
171
|
return false;
|
|
210
172
|
}
|
|
211
|
-
/**
|
|
212
|
-
* Implements the logic to compute the key of a given field's entry
|
|
213
|
-
*/
|
|
214
173
|
function getFieldEntryKey(node) {
|
|
215
174
|
return node.alias ? node.alias.value : node.name.value;
|
|
216
175
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collectFields.js","sourceRoot":"","sources":["../../src/execution/collectFields.ts"],"names":[],"mappings":"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","sourcesContent":["import { AccumulatorMap } from '../jsutils/AccumulatorMap.js';\nimport type { ObjMap, ReadOnlyObjMap } from '../jsutils/ObjMap.js';\n\nimport type {\n ConstValueNode,\n DirectiveNode,\n FieldNode,\n FragmentDefinitionNode,\n FragmentSpreadNode,\n InlineFragmentNode,\n SelectionSetNode,\n} from '../language/ast.js';\nimport { Kind } from '../language/kinds.js';\n\nimport type { GraphQLObjectType } from '../type/definition.js';\nimport { isAbstractType } from '../type/definition.js';\nimport {\n GraphQLDeferDirective,\n GraphQLIncludeDirective,\n GraphQLSkipDirective,\n} from '../type/directives.js';\nimport type { GraphQLSchema } from '../type/schema.js';\n\nimport { typeFromAST } from '../utilities/typeFromAST.js';\n\nimport type { GraphQLVariableSignature } from './getVariableSignature.js';\nimport type { VariableValues } from './values.js';\nimport {\n getArgumentValues,\n getDirectiveValues,\n getFragmentVariableValues,\n} from './values.js';\n\nexport interface DeferUsage {\n label: string | undefined;\n parentDeferUsage: DeferUsage | undefined;\n}\n\nexport interface FragmentVariableValues {\n readonly sources: ReadOnlyObjMap<FragmentVariableValueSource>;\n readonly coerced: ReadOnlyObjMap<unknown>;\n}\n\ninterface FragmentVariableValueSource {\n readonly signature: GraphQLVariableSignature;\n readonly value?: ConstValueNode;\n readonly fragmentVariableValues?: FragmentVariableValues;\n}\n\nexport interface FieldDetails {\n node: FieldNode;\n deferUsage?: DeferUsage | undefined;\n fragmentVariableValues?: FragmentVariableValues | undefined;\n}\n\nexport type FieldDetailsList = ReadonlyArray<FieldDetails>;\n\nexport type GroupedFieldSet = ReadonlyMap<string, FieldDetailsList>;\n\nexport interface FragmentDetails {\n definition: FragmentDefinitionNode;\n variableSignatures?: ObjMap<GraphQLVariableSignature> | undefined;\n}\n\ninterface CollectFieldsContext {\n schema: GraphQLSchema;\n fragments: ObjMap<FragmentDetails>;\n variableValues: VariableValues;\n runtimeType: GraphQLObjectType;\n visitedFragmentNames: Map<string, boolean>;\n hideSuggestions: boolean;\n forbiddenDirectiveInstances: Array<DirectiveNode>;\n forbidSkipAndInclude: boolean;\n}\n\n/**\n * Given a selectionSet, collects all of the fields and returns them.\n *\n * CollectFields requires the \"runtime type\" of an object. For a field that\n * returns an Interface or Union type, the \"runtime type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\n// eslint-disable-next-line max-params\nexport function collectFields(\n schema: GraphQLSchema,\n fragments: ObjMap<FragmentDetails>,\n variableValues: VariableValues,\n runtimeType: GraphQLObjectType,\n selectionSet: SelectionSetNode,\n hideSuggestions: boolean,\n forbidSkipAndInclude = false,\n): {\n groupedFieldSet: GroupedFieldSet;\n newDeferUsages: ReadonlyArray<DeferUsage>;\n forbiddenDirectiveInstances: ReadonlyArray<DirectiveNode>;\n} {\n const groupedFieldSet = new AccumulatorMap<string, FieldDetails>();\n const newDeferUsages: Array<DeferUsage> = [];\n const context: CollectFieldsContext = {\n schema,\n fragments,\n variableValues,\n runtimeType,\n visitedFragmentNames: new Map(),\n hideSuggestions,\n forbiddenDirectiveInstances: [],\n forbidSkipAndInclude,\n };\n\n collectFieldsImpl(context, selectionSet, groupedFieldSet, newDeferUsages);\n return {\n groupedFieldSet,\n newDeferUsages,\n forbiddenDirectiveInstances: context.forbiddenDirectiveInstances,\n };\n}\n\n/**\n * Given an array of field nodes, collects all of the subfields of the passed\n * in fields, and returns them at the end.\n *\n * CollectSubFields requires the \"return type\" of an object. For a field that\n * returns an Interface or Union type, the \"return type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\n// eslint-disable-next-line max-params\nexport function collectSubfields(\n schema: GraphQLSchema,\n fragments: ObjMap<FragmentDetails>,\n variableValues: VariableValues,\n returnType: GraphQLObjectType,\n fieldDetailsList: FieldDetailsList,\n hideSuggestions: boolean,\n): {\n groupedFieldSet: GroupedFieldSet;\n newDeferUsages: ReadonlyArray<DeferUsage>;\n} {\n const context: CollectFieldsContext = {\n schema,\n fragments,\n variableValues,\n runtimeType: returnType,\n visitedFragmentNames: new Map(),\n hideSuggestions,\n forbiddenDirectiveInstances: [],\n forbidSkipAndInclude: false,\n };\n const subGroupedFieldSet = new AccumulatorMap<string, FieldDetails>();\n const newDeferUsages: Array<DeferUsage> = [];\n\n for (const fieldDetail of fieldDetailsList) {\n const selectionSet = fieldDetail.node.selectionSet;\n if (selectionSet) {\n const { deferUsage, fragmentVariableValues } = fieldDetail;\n collectFieldsImpl(\n context,\n selectionSet,\n subGroupedFieldSet,\n newDeferUsages,\n deferUsage,\n fragmentVariableValues,\n );\n }\n }\n\n return {\n groupedFieldSet: subGroupedFieldSet,\n newDeferUsages,\n };\n}\n\n// eslint-disable-next-line max-params\nfunction collectFieldsImpl(\n context: CollectFieldsContext,\n selectionSet: SelectionSetNode,\n groupedFieldSet: AccumulatorMap<string, FieldDetails>,\n newDeferUsages: Array<DeferUsage>,\n deferUsage?: DeferUsage,\n fragmentVariableValues?: FragmentVariableValues,\n): void {\n const {\n schema,\n fragments,\n variableValues,\n runtimeType,\n visitedFragmentNames,\n hideSuggestions,\n } = context;\n\n for (const selection of selectionSet.selections) {\n switch (selection.kind) {\n case Kind.FIELD: {\n if (\n !shouldIncludeNode(\n context,\n selection,\n variableValues,\n fragmentVariableValues,\n )\n ) {\n continue;\n }\n groupedFieldSet.add(getFieldEntryKey(selection), {\n node: selection,\n deferUsage,\n fragmentVariableValues,\n });\n break;\n }\n case Kind.INLINE_FRAGMENT: {\n if (\n !shouldIncludeNode(\n context,\n selection,\n variableValues,\n fragmentVariableValues,\n ) ||\n !doesFragmentConditionMatch(schema, selection, runtimeType)\n ) {\n continue;\n }\n\n const newDeferUsage = getDeferUsage(\n variableValues,\n fragmentVariableValues,\n selection,\n deferUsage,\n );\n\n if (!newDeferUsage) {\n collectFieldsImpl(\n context,\n selection.selectionSet,\n groupedFieldSet,\n newDeferUsages,\n deferUsage,\n fragmentVariableValues,\n );\n } else {\n newDeferUsages.push(newDeferUsage);\n collectFieldsImpl(\n context,\n selection.selectionSet,\n groupedFieldSet,\n newDeferUsages,\n newDeferUsage,\n fragmentVariableValues,\n );\n }\n\n break;\n }\n case Kind.FRAGMENT_SPREAD: {\n const fragName = selection.name.value;\n\n if (\n !shouldIncludeNode(\n context,\n selection,\n variableValues,\n fragmentVariableValues,\n )\n ) {\n continue;\n }\n\n const fragment = fragments[fragName];\n if (\n fragment == null ||\n !doesFragmentConditionMatch(schema, fragment.definition, runtimeType)\n ) {\n continue;\n }\n\n const newDeferUsage = getDeferUsage(\n variableValues,\n fragmentVariableValues,\n selection,\n deferUsage,\n );\n\n const visitedAsDeferred = visitedFragmentNames.get(fragName);\n\n let maybeNewDeferUsage: DeferUsage | undefined;\n if (!newDeferUsage) {\n // If this spread is not deferred, it may be skipped when already visited\n // as a non-deferred spread. If it was previously visited as a deferred spread,\n // it must be revisited.\n if (visitedAsDeferred === false) {\n continue;\n }\n visitedFragmentNames.set(fragName, false);\n maybeNewDeferUsage = deferUsage;\n } else {\n // If this spread is deferred, it can be skipped if it has already been visited.\n if (visitedAsDeferred !== undefined) {\n continue;\n }\n visitedFragmentNames.set(fragName, true);\n newDeferUsages.push(newDeferUsage);\n maybeNewDeferUsage = newDeferUsage;\n }\n\n const fragmentVariableSignatures = fragment.variableSignatures;\n let newFragmentVariableValues: FragmentVariableValues | undefined;\n if (fragmentVariableSignatures) {\n newFragmentVariableValues = getFragmentVariableValues(\n selection,\n fragmentVariableSignatures,\n variableValues,\n fragmentVariableValues,\n hideSuggestions,\n );\n }\n\n collectFieldsImpl(\n context,\n fragment.definition.selectionSet,\n groupedFieldSet,\n newDeferUsages,\n maybeNewDeferUsage,\n newFragmentVariableValues,\n );\n break;\n }\n }\n }\n}\n\n/**\n * Returns an object containing the `@defer` arguments if a field should be\n * deferred based on the experimental flag, defer directive present and\n * not disabled by the \"if\" argument.\n */\nfunction getDeferUsage(\n variableValues: VariableValues,\n fragmentVariableValues: FragmentVariableValues | undefined,\n node: FragmentSpreadNode | InlineFragmentNode,\n parentDeferUsage: DeferUsage | undefined,\n): DeferUsage | undefined {\n const defer = getDirectiveValues(\n GraphQLDeferDirective,\n node,\n variableValues,\n fragmentVariableValues,\n );\n\n if (!defer) {\n return;\n }\n\n if (defer.if === false) {\n return;\n }\n\n return {\n label: typeof defer.label === 'string' ? defer.label : undefined,\n parentDeferUsage,\n };\n}\n\n/**\n * Determines if a field should be included based on the `@include` and `@skip`\n * directives, where `@skip` has higher precedence than `@include`.\n */\nfunction shouldIncludeNode(\n context: CollectFieldsContext,\n node: FragmentSpreadNode | FieldNode | InlineFragmentNode,\n variableValues: VariableValues,\n fragmentVariableValues: FragmentVariableValues | undefined,\n): boolean {\n const skipDirectiveNode = node.directives?.find(\n (directive) => directive.name.value === GraphQLSkipDirective.name,\n );\n if (skipDirectiveNode && context.forbidSkipAndInclude) {\n context.forbiddenDirectiveInstances.push(skipDirectiveNode);\n return false;\n }\n const skip = skipDirectiveNode\n ? getArgumentValues(\n GraphQLSkipDirective,\n skipDirectiveNode,\n variableValues,\n fragmentVariableValues,\n context.hideSuggestions,\n )\n : undefined;\n if (skip?.if === true) {\n return false;\n }\n\n const includeDirectiveNode = node.directives?.find(\n (directive) => directive.name.value === GraphQLIncludeDirective.name,\n );\n if (includeDirectiveNode && context.forbidSkipAndInclude) {\n context.forbiddenDirectiveInstances.push(includeDirectiveNode);\n return false;\n }\n const include = includeDirectiveNode\n ? getArgumentValues(\n GraphQLIncludeDirective,\n includeDirectiveNode,\n variableValues,\n fragmentVariableValues,\n context.hideSuggestions,\n )\n : undefined;\n if (include?.if === false) {\n return false;\n }\n return true;\n}\n\n/**\n * Determines if a fragment is applicable to the given type.\n */\nfunction doesFragmentConditionMatch(\n schema: GraphQLSchema,\n fragment: FragmentDefinitionNode | InlineFragmentNode,\n type: GraphQLObjectType,\n): boolean {\n const typeConditionNode = fragment.typeCondition;\n if (!typeConditionNode) {\n return true;\n }\n const conditionalType = typeFromAST(schema, typeConditionNode);\n if (conditionalType === type) {\n return true;\n }\n if (isAbstractType(conditionalType)) {\n return schema.isSubType(conditionalType, type);\n }\n return false;\n}\n\n/**\n * Implements the logic to compute the key of a given field's entry\n */\nfunction getFieldEntryKey(node: FieldNode): string {\n return node.alias ? node.alias.value : node.name.value;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"collectFields.js","sourceRoot":"","sources":["../../src/execution/collectFields.ts"],"names":[],"mappings":"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","sourcesContent":["import { AccumulatorMap } from '../jsutils/AccumulatorMap.ts';\nimport type { ObjMap, ReadOnlyObjMap } from '../jsutils/ObjMap.ts';\n\nimport type {\n DirectiveNode,\n FieldNode,\n FragmentDefinitionNode,\n FragmentSpreadNode,\n InlineFragmentNode,\n SelectionSetNode,\n ValueNode,\n} from '../language/ast.ts';\nimport { Kind } from '../language/kinds.ts';\n\nimport type { GraphQLObjectType } from '../type/definition.ts';\nimport { isAbstractType } from '../type/definition.ts';\nimport {\n GraphQLDeferDirective,\n GraphQLIncludeDirective,\n GraphQLSkipDirective,\n} from '../type/directives.ts';\nimport type { GraphQLSchema } from '../type/schema.ts';\n\nimport { typeFromAST } from '../utilities/typeFromAST.ts';\n\nimport type { GraphQLVariableSignature } from './getVariableSignature.ts';\nimport type { VariableValues } from './values.ts';\nimport {\n getArgumentValues,\n getDirectiveValues,\n getFragmentVariableValues,\n} from './values.ts';\n\n/** @internal */\nexport interface DeferUsage {\n label: string | undefined;\n parentDeferUsage: DeferUsage | undefined;\n}\n\n/** @internal */\nexport interface FragmentVariableValues {\n readonly sources: ReadOnlyObjMap<FragmentVariableValueSource>;\n readonly coerced: ReadOnlyObjMap<unknown>;\n}\n\n/** @internal */\nexport interface FragmentVariableValueSource {\n readonly signature: GraphQLVariableSignature;\n readonly value?: ValueNode;\n readonly fragmentVariableValues?: FragmentVariableValues;\n}\n\n/** @internal */\nexport interface FieldDetails {\n node: FieldNode;\n deferUsage?: DeferUsage | undefined;\n fragmentVariableValues?: FragmentVariableValues | undefined;\n}\n\n/** @internal */\nexport type FieldDetailsList = ReadonlyArray<FieldDetails>;\n\n/** @internal */\nexport type GroupedFieldSet = ReadonlyMap<string, FieldDetailsList>;\n\n/** @internal */\nexport interface FragmentDetails {\n definition: FragmentDefinitionNode;\n variableSignatures?: ObjMap<GraphQLVariableSignature> | undefined;\n}\n\ninterface CollectFieldsContext {\n schema: GraphQLSchema;\n fragments: ObjMap<FragmentDetails>;\n variableValues: VariableValues;\n runtimeType: GraphQLObjectType;\n visitedFragmentNames: Map<string, boolean>;\n hideSuggestions: boolean;\n forbiddenDirectiveInstances: Array<DirectiveNode>;\n forbidSkipAndInclude: boolean;\n}\n\n/**\n * Given a selectionSet, collects all of the fields and returns them.\n *\n * CollectFields requires the \"runtime type\" of an object. For a field that\n * returns an Interface or Union type, the \"runtime type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\n// eslint-disable-next-line max-params\nexport function collectFields(\n schema: GraphQLSchema,\n fragments: ObjMap<FragmentDetails>,\n variableValues: VariableValues,\n runtimeType: GraphQLObjectType,\n selectionSet: SelectionSetNode,\n hideSuggestions: boolean,\n forbidSkipAndInclude = false,\n): {\n groupedFieldSet: GroupedFieldSet;\n newDeferUsages: ReadonlyArray<DeferUsage>;\n forbiddenDirectiveInstances: ReadonlyArray<DirectiveNode>;\n} {\n const groupedFieldSet = new AccumulatorMap<string, FieldDetails>();\n const newDeferUsages: Array<DeferUsage> = [];\n const context: CollectFieldsContext = {\n schema,\n fragments,\n variableValues,\n runtimeType,\n visitedFragmentNames: new Map(),\n hideSuggestions,\n forbiddenDirectiveInstances: [],\n forbidSkipAndInclude,\n };\n\n collectFieldsImpl(context, selectionSet, groupedFieldSet, newDeferUsages);\n return {\n groupedFieldSet,\n newDeferUsages,\n forbiddenDirectiveInstances: context.forbiddenDirectiveInstances,\n };\n}\n\n/**\n * Given an array of field nodes, collects all of the subfields of the passed\n * in fields, and returns them at the end.\n *\n * CollectSubFields requires the \"return type\" of an object. For a field that\n * returns an Interface or Union type, the \"return type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\n// eslint-disable-next-line max-params\nexport function collectSubfields(\n schema: GraphQLSchema,\n fragments: ObjMap<FragmentDetails>,\n variableValues: VariableValues,\n returnType: GraphQLObjectType,\n fieldDetailsList: FieldDetailsList,\n hideSuggestions: boolean,\n): {\n groupedFieldSet: GroupedFieldSet;\n newDeferUsages: ReadonlyArray<DeferUsage>;\n} {\n const context: CollectFieldsContext = {\n schema,\n fragments,\n variableValues,\n runtimeType: returnType,\n visitedFragmentNames: new Map(),\n hideSuggestions,\n forbiddenDirectiveInstances: [],\n forbidSkipAndInclude: false,\n };\n const subGroupedFieldSet = new AccumulatorMap<string, FieldDetails>();\n const newDeferUsages: Array<DeferUsage> = [];\n\n for (const fieldDetail of fieldDetailsList) {\n const selectionSet = fieldDetail.node.selectionSet;\n if (selectionSet) {\n const { deferUsage, fragmentVariableValues } = fieldDetail;\n collectFieldsImpl(\n context,\n selectionSet,\n subGroupedFieldSet,\n newDeferUsages,\n deferUsage,\n fragmentVariableValues,\n );\n }\n }\n\n return {\n groupedFieldSet: subGroupedFieldSet,\n newDeferUsages,\n };\n}\n\n/** @internal */\n// eslint-disable-next-line max-params\nfunction collectFieldsImpl(\n context: CollectFieldsContext,\n selectionSet: SelectionSetNode,\n groupedFieldSet: AccumulatorMap<string, FieldDetails>,\n newDeferUsages: Array<DeferUsage>,\n deferUsage?: DeferUsage,\n fragmentVariableValues?: FragmentVariableValues,\n): void {\n const {\n schema,\n fragments,\n variableValues,\n runtimeType,\n visitedFragmentNames,\n hideSuggestions,\n } = context;\n\n for (const selection of selectionSet.selections) {\n switch (selection.kind) {\n case Kind.FIELD: {\n if (\n !shouldIncludeNode(\n context,\n selection,\n variableValues,\n fragmentVariableValues,\n )\n ) {\n continue;\n }\n groupedFieldSet.add(getFieldEntryKey(selection), {\n node: selection,\n deferUsage,\n fragmentVariableValues,\n });\n break;\n }\n case Kind.INLINE_FRAGMENT: {\n if (\n !shouldIncludeNode(\n context,\n selection,\n variableValues,\n fragmentVariableValues,\n ) ||\n !doesFragmentConditionMatch(schema, selection, runtimeType)\n ) {\n continue;\n }\n\n const newDeferUsage = getDeferUsage(\n variableValues,\n fragmentVariableValues,\n selection,\n deferUsage,\n );\n\n if (!newDeferUsage) {\n collectFieldsImpl(\n context,\n selection.selectionSet,\n groupedFieldSet,\n newDeferUsages,\n deferUsage,\n fragmentVariableValues,\n );\n } else {\n newDeferUsages.push(newDeferUsage);\n collectFieldsImpl(\n context,\n selection.selectionSet,\n groupedFieldSet,\n newDeferUsages,\n newDeferUsage,\n fragmentVariableValues,\n );\n }\n\n break;\n }\n case Kind.FRAGMENT_SPREAD: {\n const fragName = selection.name.value;\n\n if (\n !shouldIncludeNode(\n context,\n selection,\n variableValues,\n fragmentVariableValues,\n )\n ) {\n continue;\n }\n\n const fragment = fragments[fragName];\n if (\n fragment == null ||\n !doesFragmentConditionMatch(schema, fragment.definition, runtimeType)\n ) {\n continue;\n }\n\n const newDeferUsage = getDeferUsage(\n variableValues,\n fragmentVariableValues,\n selection,\n deferUsage,\n );\n\n const visitedAsDeferred = visitedFragmentNames.get(fragName);\n\n let maybeNewDeferUsage: DeferUsage | undefined;\n if (!newDeferUsage) {\n // If this spread is not deferred, it may be skipped when already visited\n // as a non-deferred spread. If it was previously visited as a deferred spread,\n // it must be revisited.\n if (visitedAsDeferred === false) {\n continue;\n }\n visitedFragmentNames.set(fragName, false);\n maybeNewDeferUsage = deferUsage;\n } else {\n // If this spread is deferred, it can be skipped if it has already been visited.\n if (visitedAsDeferred !== undefined) {\n continue;\n }\n visitedFragmentNames.set(fragName, true);\n newDeferUsages.push(newDeferUsage);\n maybeNewDeferUsage = newDeferUsage;\n }\n\n const fragmentVariableSignatures = fragment.variableSignatures;\n let newFragmentVariableValues: FragmentVariableValues | undefined;\n if (fragmentVariableSignatures) {\n newFragmentVariableValues = getFragmentVariableValues(\n selection,\n fragmentVariableSignatures,\n variableValues,\n fragmentVariableValues,\n hideSuggestions,\n );\n }\n\n collectFieldsImpl(\n context,\n fragment.definition.selectionSet,\n groupedFieldSet,\n newDeferUsages,\n maybeNewDeferUsage,\n newFragmentVariableValues,\n );\n break;\n }\n }\n }\n}\n\n/**\n * Returns an object containing the `@defer` arguments if a field should be\n * deferred based on the experimental flag, defer directive present and\n * not disabled by the \"if\" argument.\n *\n * @internal\n */\nfunction getDeferUsage(\n variableValues: VariableValues,\n fragmentVariableValues: FragmentVariableValues | undefined,\n node: FragmentSpreadNode | InlineFragmentNode,\n parentDeferUsage: DeferUsage | undefined,\n): DeferUsage | undefined {\n const defer = getDirectiveValues(\n GraphQLDeferDirective,\n node,\n variableValues,\n fragmentVariableValues,\n );\n\n if (!defer) {\n return;\n }\n\n if (defer.if === false) {\n return;\n }\n\n return {\n label: typeof defer.label === 'string' ? defer.label : undefined,\n parentDeferUsage,\n };\n}\n\n/**\n * Determines if a field should be included based on the `@include` and `@skip`\n * directives, where `@skip` has higher precedence than `@include`.\n *\n * @internal\n */\nfunction shouldIncludeNode(\n context: CollectFieldsContext,\n node: FragmentSpreadNode | FieldNode | InlineFragmentNode,\n variableValues: VariableValues,\n fragmentVariableValues: FragmentVariableValues | undefined,\n): boolean {\n const skipDirectiveNode = node.directives?.find(\n (directive) => directive.name.value === GraphQLSkipDirective.name,\n );\n if (skipDirectiveNode && context.forbidSkipAndInclude) {\n context.forbiddenDirectiveInstances.push(skipDirectiveNode);\n return false;\n }\n const skip = skipDirectiveNode\n ? getArgumentValues(\n GraphQLSkipDirective,\n skipDirectiveNode,\n variableValues,\n fragmentVariableValues,\n context.hideSuggestions,\n )\n : undefined;\n if (skip?.if === true) {\n return false;\n }\n\n const includeDirectiveNode = node.directives?.find(\n (directive) => directive.name.value === GraphQLIncludeDirective.name,\n );\n if (includeDirectiveNode && context.forbidSkipAndInclude) {\n context.forbiddenDirectiveInstances.push(includeDirectiveNode);\n return false;\n }\n const include = includeDirectiveNode\n ? getArgumentValues(\n GraphQLIncludeDirective,\n includeDirectiveNode,\n variableValues,\n fragmentVariableValues,\n context.hideSuggestions,\n )\n : undefined;\n if (include?.if === false) {\n return false;\n }\n return true;\n}\n\n/**\n * Determines if a fragment is applicable to the given type.\n *\n * @internal\n */\nfunction doesFragmentConditionMatch(\n schema: GraphQLSchema,\n fragment: FragmentDefinitionNode | InlineFragmentNode,\n type: GraphQLObjectType,\n): boolean {\n const typeConditionNode = fragment.typeCondition;\n if (!typeConditionNode) {\n return true;\n }\n const conditionalType = typeFromAST(schema, typeConditionNode);\n if (conditionalType === type) {\n return true;\n }\n if (isAbstractType(conditionalType)) {\n return schema.isSubType(conditionalType, type);\n }\n return false;\n}\n\n/**\n * Implements the logic to compute the key of a given field's entry\n *\n * @internal\n */\nfunction getFieldEntryKey(node: FieldNode): string {\n return node.alias ? node.alias.value : node.name.value;\n}\n"]}
|