graphql 16.14.0 → 16.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/error/GraphQLError.d.ts +151 -15
- package/error/GraphQLError.js +143 -12
- package/error/GraphQLError.mjs +143 -12
- package/error/index.d.ts +6 -0
- package/error/index.mjs +6 -0
- package/error/locatedError.d.ts +20 -0
- package/error/locatedError.js +21 -0
- package/error/locatedError.mjs +20 -0
- package/error/syntaxError.d.ts +15 -0
- package/error/syntaxError.js +16 -0
- package/error/syntaxError.mjs +15 -0
- package/execution/collectFields.js +6 -0
- package/execution/collectFields.mjs +6 -0
- package/execution/execute.d.ts +211 -12
- package/execution/execute.js +214 -23
- package/execution/execute.mjs +213 -23
- package/execution/index.d.ts +6 -0
- package/execution/index.mjs +6 -0
- package/execution/mapAsyncIterator.d.ts +2 -0
- package/execution/mapAsyncIterator.js +2 -0
- package/execution/mapAsyncIterator.mjs +2 -0
- package/execution/subscribe.d.ts +195 -5
- package/execution/subscribe.js +154 -11
- package/execution/subscribe.mjs +153 -11
- package/execution/values.d.ts +167 -10
- package/execution/values.js +149 -5
- package/execution/values.mjs +148 -5
- package/graphql.d.ts +163 -41
- package/graphql.js +126 -4
- package/graphql.mjs +131 -41
- package/index.d.ts +11 -17
- package/index.mjs +13 -19
- package/jsutils/Maybe.d.ts +5 -1
- package/jsutils/ObjMap.d.ts +4 -0
- package/jsutils/Path.d.ts +30 -0
- package/jsutils/Path.js +29 -0
- package/jsutils/Path.mjs +29 -0
- package/jsutils/PromiseOrValue.d.ts +1 -0
- package/jsutils/devAssert.d.ts +1 -0
- package/jsutils/devAssert.js +1 -0
- package/jsutils/devAssert.mjs +1 -0
- package/jsutils/didYouMean.d.ts +4 -1
- package/jsutils/didYouMean.js +4 -1
- package/jsutils/didYouMean.mjs +4 -1
- package/jsutils/groupBy.d.ts +2 -0
- package/jsutils/groupBy.js +2 -0
- package/jsutils/groupBy.mjs +2 -0
- package/jsutils/identityFunc.d.ts +2 -0
- package/jsutils/identityFunc.js +2 -0
- package/jsutils/identityFunc.mjs +2 -0
- package/jsutils/inspect.d.ts +2 -0
- package/jsutils/inspect.js +2 -0
- package/jsutils/inspect.mjs +2 -0
- package/jsutils/instanceOf.d.ts +2 -0
- package/jsutils/instanceOf.js +2 -0
- package/jsutils/instanceOf.mjs +2 -0
- package/jsutils/invariant.d.ts +1 -0
- package/jsutils/invariant.js +1 -0
- package/jsutils/invariant.mjs +1 -0
- package/jsutils/isAsyncIterable.d.ts +2 -0
- package/jsutils/isAsyncIterable.js +2 -0
- package/jsutils/isAsyncIterable.mjs +2 -0
- package/jsutils/isIterableObject.d.ts +6 -5
- package/jsutils/isIterableObject.js +6 -5
- package/jsutils/isIterableObject.mjs +6 -5
- package/jsutils/isObjectLike.d.ts +2 -0
- package/jsutils/isObjectLike.js +2 -0
- package/jsutils/isObjectLike.mjs +2 -0
- package/jsutils/isPromise.d.ts +2 -0
- package/jsutils/isPromise.js +2 -0
- package/jsutils/isPromise.mjs +2 -0
- package/jsutils/keyMap.d.ts +7 -14
- package/jsutils/keyMap.js +7 -14
- package/jsutils/keyMap.mjs +7 -14
- package/jsutils/keyValMap.d.ts +9 -6
- package/jsutils/keyValMap.js +9 -6
- package/jsutils/keyValMap.mjs +9 -6
- package/jsutils/mapValue.d.ts +2 -0
- package/jsutils/mapValue.js +2 -0
- package/jsutils/mapValue.mjs +2 -0
- package/jsutils/memoize3.d.ts +2 -0
- package/jsutils/memoize3.js +2 -0
- package/jsutils/memoize3.mjs +2 -0
- package/jsutils/naturalCompare.d.ts +2 -0
- package/jsutils/naturalCompare.js +2 -0
- package/jsutils/naturalCompare.mjs +2 -0
- package/jsutils/printPathArray.d.ts +2 -0
- package/jsutils/printPathArray.js +2 -0
- package/jsutils/printPathArray.mjs +2 -0
- package/jsutils/promiseForObject.d.ts +2 -0
- package/jsutils/promiseForObject.js +2 -0
- package/jsutils/promiseForObject.mjs +2 -0
- package/jsutils/promiseReduce.d.ts +2 -0
- package/jsutils/promiseReduce.js +2 -0
- package/jsutils/promiseReduce.mjs +2 -0
- package/jsutils/suggestionList.d.ts +2 -0
- package/jsutils/suggestionList.js +4 -0
- package/jsutils/suggestionList.mjs +4 -0
- package/jsutils/toError.d.ts +2 -0
- package/jsutils/toError.js +2 -0
- package/jsutils/toError.mjs +2 -0
- package/jsutils/toObjMap.d.ts +1 -0
- package/jsutils/toObjMap.js +1 -0
- package/jsutils/toObjMap.mjs +1 -0
- package/language/ast.d.ts +412 -54
- package/language/ast.js +95 -38
- package/language/ast.mjs +95 -38
- package/language/blockString.d.ts +1 -3
- package/language/blockString.js +1 -3
- package/language/blockString.mjs +1 -3
- package/language/directiveLocation.d.ts +28 -8
- package/language/directiveLocation.js +9 -6
- package/language/directiveLocation.mjs +9 -6
- package/language/index.d.ts +6 -0
- package/language/index.mjs +6 -0
- package/language/kinds.d.ts +57 -18
- package/language/kinds.js +9 -6
- package/language/kinds.mjs +9 -6
- package/language/lexer.d.ts +47 -14
- package/language/lexer.js +71 -13
- package/language/lexer.mjs +70 -13
- package/language/location.d.ts +16 -3
- package/language/location.js +14 -3
- package/language/location.mjs +14 -3
- package/language/parser.d.ts +236 -13
- package/language/parser.js +224 -0
- package/language/parser.mjs +224 -3
- package/language/predicates.d.ts +169 -0
- package/language/predicates.js +170 -0
- package/language/predicates.mjs +180 -0
- package/language/printLocation.d.ts +28 -0
- package/language/printLocation.js +29 -0
- package/language/printLocation.mjs +28 -0
- package/language/printString.d.ts +2 -0
- package/language/printString.js +5 -1
- package/language/printString.mjs +5 -1
- package/language/printer.d.ts +12 -0
- package/language/printer.js +19 -0
- package/language/printer.mjs +18 -0
- package/language/schemaCoordinateLexer.d.ts +8 -6
- package/language/schemaCoordinateLexer.js +10 -6
- package/language/schemaCoordinateLexer.mjs +10 -6
- package/language/source.d.ts +28 -0
- package/language/source.js +32 -0
- package/language/source.mjs +31 -0
- package/language/tokenKind.d.ts +30 -3
- package/language/tokenKind.js +8 -3
- package/language/tokenKind.mjs +8 -3
- package/language/visitor.d.ts +200 -72
- package/language/visitor.js +122 -50
- package/language/visitor.mjs +122 -54
- package/package.json +1 -1
- package/subscription/index.d.ts +9 -3
- package/subscription/index.mjs +9 -3
- package/type/assertName.d.ts +18 -1
- package/type/assertName.js +19 -1
- package/type/assertName.mjs +18 -1
- package/type/definition.d.ts +2540 -79
- package/type/definition.js +2214 -61
- package/type/definition.mjs +2241 -60
- package/type/directives.d.ts +193 -18
- package/type/directives.js +196 -19
- package/type/directives.mjs +196 -19
- package/type/index.d.ts +6 -0
- package/type/index.mjs +6 -0
- package/type/introspection.d.ts +36 -0
- package/type/introspection.js +33 -0
- package/type/introspection.mjs +41 -0
- package/type/scalars.d.ts +29 -2
- package/type/scalars.js +37 -2
- package/type/scalars.mjs +36 -2
- package/type/schema.d.ts +490 -28
- package/type/schema.js +484 -26
- package/type/schema.mjs +484 -26
- package/type/validate.d.ts +31 -0
- package/type/validate.js +32 -0
- package/type/validate.mjs +31 -0
- package/utilities/TypeInfo.d.ts +441 -1
- package/utilities/TypeInfo.js +444 -1
- package/utilities/TypeInfo.mjs +443 -1
- package/utilities/assertValidName.d.ts +27 -2
- package/utilities/assertValidName.js +28 -2
- package/utilities/assertValidName.mjs +27 -2
- package/utilities/astFromValue.d.ts +33 -3
- package/utilities/astFromValue.js +36 -3
- package/utilities/astFromValue.mjs +35 -3
- package/utilities/buildASTSchema.d.ts +65 -6
- package/utilities/buildASTSchema.js +65 -6
- package/utilities/buildASTSchema.mjs +65 -6
- package/utilities/buildClientSchema.d.ts +15 -0
- package/utilities/buildClientSchema.js +16 -0
- package/utilities/buildClientSchema.mjs +15 -0
- package/utilities/coerceInputValue.d.ts +46 -0
- package/utilities/coerceInputValue.js +47 -0
- package/utilities/coerceInputValue.mjs +46 -0
- package/utilities/concatAST.d.ts +12 -0
- package/utilities/concatAST.js +13 -0
- package/utilities/concatAST.mjs +12 -0
- package/utilities/extendSchema.d.ts +56 -3
- package/utilities/extendSchema.js +63 -3
- package/utilities/extendSchema.mjs +62 -3
- package/utilities/findBreakingChanges.d.ts +95 -0
- package/utilities/findBreakingChanges.js +68 -0
- package/utilities/findBreakingChanges.mjs +70 -0
- package/utilities/getIntrospectionQuery.d.ts +132 -0
- package/utilities/getIntrospectionQuery.js +41 -0
- package/utilities/getIntrospectionQuery.mjs +41 -0
- package/utilities/getOperationAST.d.ts +15 -0
- package/utilities/getOperationAST.js +16 -0
- package/utilities/getOperationAST.mjs +15 -0
- package/utilities/getOperationRootType.d.ts +18 -1
- package/utilities/getOperationRootType.js +19 -1
- package/utilities/getOperationRootType.mjs +18 -1
- package/utilities/index.d.ts +7 -0
- package/utilities/index.mjs +7 -0
- package/utilities/introspectionFromSchema.d.ts +54 -0
- package/utilities/introspectionFromSchema.js +55 -0
- package/utilities/introspectionFromSchema.mjs +54 -0
- package/utilities/lexicographicSortSchema.d.ts +35 -0
- package/utilities/lexicographicSortSchema.js +36 -0
- package/utilities/lexicographicSortSchema.mjs +35 -0
- package/utilities/printSchema.d.ts +63 -0
- package/utilities/printSchema.js +66 -0
- package/utilities/printSchema.mjs +67 -0
- package/utilities/resolveSchemaCoordinate.d.ts +62 -0
- package/utilities/resolveSchemaCoordinate.js +64 -0
- package/utilities/resolveSchemaCoordinate.mjs +63 -0
- package/utilities/separateOperations.d.ts +30 -0
- package/utilities/separateOperations.js +31 -0
- package/utilities/separateOperations.mjs +30 -0
- package/utilities/stripIgnoredCharacters.d.ts +13 -6
- package/utilities/stripIgnoredCharacters.js +16 -6
- package/utilities/stripIgnoredCharacters.mjs +15 -6
- package/utilities/typeComparators.d.ts +84 -0
- package/utilities/typeComparators.js +85 -0
- package/utilities/typeComparators.mjs +84 -0
- package/utilities/typeFromAST.d.ts +86 -0
- package/utilities/typeFromAST.js +3 -0
- package/utilities/typeFromAST.mjs +3 -0
- package/utilities/typedQueryDocumentNode.d.ts +4 -0
- package/utilities/valueFromAST.d.ts +38 -0
- package/utilities/valueFromAST.js +39 -0
- package/utilities/valueFromAST.mjs +38 -0
- package/utilities/valueFromASTUntyped.d.ts +15 -2
- package/utilities/valueFromASTUntyped.js +16 -2
- package/utilities/valueFromASTUntyped.mjs +15 -2
- package/validation/ValidationContext.d.ts +399 -0
- package/validation/ValidationContext.js +400 -0
- package/validation/ValidationContext.mjs +401 -0
- package/validation/index.d.ts +6 -0
- package/validation/index.mjs +6 -0
- package/validation/rules/ExecutableDefinitionsRule.d.ts +28 -0
- package/validation/rules/ExecutableDefinitionsRule.js +29 -0
- package/validation/rules/ExecutableDefinitionsRule.mjs +28 -0
- package/validation/rules/FieldsOnCorrectTypeRule.d.ts +28 -0
- package/validation/rules/FieldsOnCorrectTypeRule.js +33 -0
- package/validation/rules/FieldsOnCorrectTypeRule.mjs +32 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.d.ts +28 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.js +29 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.mjs +28 -0
- package/validation/rules/KnownArgumentNamesRule.d.ts +29 -3
- package/validation/rules/KnownArgumentNamesRule.js +30 -3
- package/validation/rules/KnownArgumentNamesRule.mjs +29 -3
- package/validation/rules/KnownDirectivesRule.d.ts +28 -0
- package/validation/rules/KnownDirectivesRule.js +29 -0
- package/validation/rules/KnownDirectivesRule.mjs +28 -0
- package/validation/rules/KnownFragmentNamesRule.d.ts +28 -0
- package/validation/rules/KnownFragmentNamesRule.js +29 -0
- package/validation/rules/KnownFragmentNamesRule.mjs +28 -0
- package/validation/rules/KnownTypeNamesRule.d.ts +28 -0
- package/validation/rules/KnownTypeNamesRule.js +29 -0
- package/validation/rules/KnownTypeNamesRule.mjs +28 -0
- package/validation/rules/LoneAnonymousOperationRule.d.ts +28 -0
- package/validation/rules/LoneAnonymousOperationRule.js +29 -0
- package/validation/rules/LoneAnonymousOperationRule.mjs +28 -0
- package/validation/rules/LoneSchemaDefinitionRule.d.ts +21 -0
- package/validation/rules/LoneSchemaDefinitionRule.js +22 -0
- package/validation/rules/LoneSchemaDefinitionRule.mjs +21 -0
- package/validation/rules/MaxIntrospectionDepthRule.d.ts +31 -0
- package/validation/rules/MaxIntrospectionDepthRule.js +33 -0
- package/validation/rules/MaxIntrospectionDepthRule.mjs +34 -0
- package/validation/rules/NoFragmentCyclesRule.d.ts +28 -0
- package/validation/rules/NoFragmentCyclesRule.js +29 -0
- package/validation/rules/NoFragmentCyclesRule.mjs +28 -0
- package/validation/rules/NoUndefinedVariablesRule.d.ts +28 -0
- package/validation/rules/NoUndefinedVariablesRule.js +29 -0
- package/validation/rules/NoUndefinedVariablesRule.mjs +28 -0
- package/validation/rules/NoUnusedFragmentsRule.d.ts +28 -0
- package/validation/rules/NoUnusedFragmentsRule.js +29 -0
- package/validation/rules/NoUnusedFragmentsRule.mjs +28 -0
- package/validation/rules/NoUnusedVariablesRule.d.ts +29 -0
- package/validation/rules/NoUnusedVariablesRule.js +30 -0
- package/validation/rules/NoUnusedVariablesRule.mjs +29 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +33 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule.js +45 -6
- package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +45 -6
- package/validation/rules/PossibleFragmentSpreadsRule.d.ts +36 -0
- package/validation/rules/PossibleFragmentSpreadsRule.js +37 -0
- package/validation/rules/PossibleFragmentSpreadsRule.mjs +36 -0
- package/validation/rules/PossibleTypeExtensionsRule.d.ts +21 -0
- package/validation/rules/PossibleTypeExtensionsRule.js +22 -0
- package/validation/rules/PossibleTypeExtensionsRule.mjs +21 -0
- package/validation/rules/ProvidedRequiredArgumentsRule.d.ts +29 -3
- package/validation/rules/ProvidedRequiredArgumentsRule.js +30 -3
- package/validation/rules/ProvidedRequiredArgumentsRule.mjs +29 -3
- package/validation/rules/ScalarLeafsRule.d.ts +28 -0
- package/validation/rules/ScalarLeafsRule.js +29 -0
- package/validation/rules/ScalarLeafsRule.mjs +28 -0
- package/validation/rules/SingleFieldSubscriptionsRule.d.ts +33 -0
- package/validation/rules/SingleFieldSubscriptionsRule.js +34 -0
- package/validation/rules/SingleFieldSubscriptionsRule.mjs +33 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts +21 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.js +22 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.mjs +21 -0
- package/validation/rules/UniqueArgumentNamesRule.d.ts +28 -0
- package/validation/rules/UniqueArgumentNamesRule.js +29 -0
- package/validation/rules/UniqueArgumentNamesRule.mjs +28 -0
- package/validation/rules/UniqueDirectiveNamesRule.d.ts +21 -0
- package/validation/rules/UniqueDirectiveNamesRule.js +22 -0
- package/validation/rules/UniqueDirectiveNamesRule.mjs +21 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.d.ts +28 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.js +29 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.mjs +28 -0
- package/validation/rules/UniqueEnumValueNamesRule.d.ts +21 -0
- package/validation/rules/UniqueEnumValueNamesRule.js +22 -0
- package/validation/rules/UniqueEnumValueNamesRule.mjs +21 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.d.ts +21 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.js +22 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +21 -0
- package/validation/rules/UniqueFragmentNamesRule.d.ts +28 -0
- package/validation/rules/UniqueFragmentNamesRule.js +29 -0
- package/validation/rules/UniqueFragmentNamesRule.mjs +28 -0
- package/validation/rules/UniqueInputFieldNamesRule.d.ts +32 -0
- package/validation/rules/UniqueInputFieldNamesRule.js +33 -0
- package/validation/rules/UniqueInputFieldNamesRule.mjs +32 -0
- package/validation/rules/UniqueOperationNamesRule.d.ts +28 -0
- package/validation/rules/UniqueOperationNamesRule.js +29 -0
- package/validation/rules/UniqueOperationNamesRule.mjs +28 -0
- package/validation/rules/UniqueOperationTypesRule.d.ts +21 -0
- package/validation/rules/UniqueOperationTypesRule.js +22 -0
- package/validation/rules/UniqueOperationTypesRule.mjs +21 -0
- package/validation/rules/UniqueTypeNamesRule.d.ts +21 -0
- package/validation/rules/UniqueTypeNamesRule.js +22 -0
- package/validation/rules/UniqueTypeNamesRule.mjs +21 -0
- package/validation/rules/UniqueVariableNamesRule.d.ts +28 -0
- package/validation/rules/UniqueVariableNamesRule.js +29 -0
- package/validation/rules/UniqueVariableNamesRule.mjs +28 -0
- package/validation/rules/ValuesOfCorrectTypeRule.d.ts +28 -0
- package/validation/rules/ValuesOfCorrectTypeRule.js +31 -0
- package/validation/rules/ValuesOfCorrectTypeRule.mjs +30 -0
- package/validation/rules/VariablesAreInputTypesRule.d.ts +32 -0
- package/validation/rules/VariablesAreInputTypesRule.js +33 -0
- package/validation/rules/VariablesAreInputTypesRule.mjs +32 -0
- package/validation/rules/VariablesInAllowedPositionRule.d.ts +28 -0
- package/validation/rules/VariablesInAllowedPositionRule.js +35 -1
- package/validation/rules/VariablesInAllowedPositionRule.mjs +34 -1
- package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +41 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.js +42 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.mjs +41 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +28 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +29 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs +28 -0
- package/validation/specifiedRules.d.ts +2 -3
- package/validation/specifiedRules.js +2 -3
- package/validation/specifiedRules.mjs +2 -3
- package/validation/validate.d.ts +70 -9
- package/validation/validate.js +63 -7
- package/validation/validate.mjs +63 -7
- package/version.d.ts +3 -6
- package/version.js +6 -8
- package/version.mjs +5 -8
package/execution/execute.js
CHANGED
|
@@ -49,10 +49,14 @@ var _collectFields = require('./collectFields.js');
|
|
|
49
49
|
|
|
50
50
|
var _values = require('./values.js');
|
|
51
51
|
|
|
52
|
+
/** @category Execution */
|
|
53
|
+
|
|
52
54
|
/**
|
|
53
55
|
* A memoized collection of relevant subfields with regard to the return
|
|
54
56
|
* type. Memoizing ensures the subfields are not repeatedly calculated, which
|
|
55
57
|
* saves overhead when resolving lists of values.
|
|
58
|
+
*
|
|
59
|
+
* @internal
|
|
56
60
|
*/
|
|
57
61
|
const collectSubfields = (0, _memoize.memoize3)(
|
|
58
62
|
(exeContext, returnType, fieldNodes) =>
|
|
@@ -89,11 +93,10 @@ const collectSubfields = (0, _memoize.memoize3)(
|
|
|
89
93
|
*
|
|
90
94
|
* Namely, schema of the type system that is currently executing,
|
|
91
95
|
* and the fragments defined in the query document
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
/**
|
|
96
|
+
*
|
|
95
97
|
* @internal
|
|
96
98
|
*/
|
|
99
|
+
|
|
97
100
|
class CollectedErrors {
|
|
98
101
|
constructor() {
|
|
99
102
|
this._errorPositions = new Set();
|
|
@@ -133,11 +136,9 @@ class CollectedErrors {
|
|
|
133
136
|
}
|
|
134
137
|
}
|
|
135
138
|
/**
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
* - `data` is the result of a successful execution of the query.
|
|
140
|
-
* - `extensions` is reserved for adding non-standard properties.
|
|
139
|
+
* Represents the response produced by executing a GraphQL operation.
|
|
140
|
+
* @typeParam TData - Shape of the execution data payload.
|
|
141
|
+
* @typeParam TExtensions - Shape of the extensions payload.
|
|
141
142
|
*/
|
|
142
143
|
|
|
143
144
|
/**
|
|
@@ -149,6 +150,139 @@ class CollectedErrors {
|
|
|
149
150
|
*
|
|
150
151
|
* If the arguments to this function do not result in a legal execution context,
|
|
151
152
|
* a GraphQLError will be thrown immediately explaining the invalid input.
|
|
153
|
+
*
|
|
154
|
+
* Field errors are collected into the response instead of rejecting the
|
|
155
|
+
* returned promise. Only the field that produced the error and its descendants
|
|
156
|
+
* are omitted; sibling fields continue to execute. Errors from fields of
|
|
157
|
+
* non-null type may propagate to the nearest nullable parent, which can be the
|
|
158
|
+
* entire response data.
|
|
159
|
+
* @param args - The arguments used to perform the operation.
|
|
160
|
+
* @returns A completed execution result, or a promise resolving to one when execution is asynchronous.
|
|
161
|
+
* @example
|
|
162
|
+
* ```ts
|
|
163
|
+
* // Execute an asynchronous operation with variables.
|
|
164
|
+
* import { parse } from 'graphql/language';
|
|
165
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
166
|
+
* import { execute } from 'graphql/execution';
|
|
167
|
+
*
|
|
168
|
+
* const schema = buildSchema(`
|
|
169
|
+
* type Query {
|
|
170
|
+
* greeting(name: String!): String
|
|
171
|
+
* }
|
|
172
|
+
* `);
|
|
173
|
+
*
|
|
174
|
+
* const result = await execute({
|
|
175
|
+
* schema,
|
|
176
|
+
* document: parse('query ($name: String!) { greeting(name: $name) }'),
|
|
177
|
+
* rootValue: {
|
|
178
|
+
* greeting: ({ name }) => `Hello, ${name}!`,
|
|
179
|
+
* },
|
|
180
|
+
* variableValues: { name: 'Ada' },
|
|
181
|
+
* });
|
|
182
|
+
*
|
|
183
|
+
* result; // => { data: { greeting: 'Hello, Ada!' } }
|
|
184
|
+
* ```
|
|
185
|
+
* @example
|
|
186
|
+
* ```ts
|
|
187
|
+
* // This variant supplies context plus custom field and type resolvers.
|
|
188
|
+
* import { parse } from 'graphql/language';
|
|
189
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
190
|
+
* import { execute } from 'graphql/execution';
|
|
191
|
+
*
|
|
192
|
+
* const schema = buildSchema(`
|
|
193
|
+
* interface Named {
|
|
194
|
+
* name: String!
|
|
195
|
+
* }
|
|
196
|
+
*
|
|
197
|
+
* type User implements Named {
|
|
198
|
+
* name: String!
|
|
199
|
+
* }
|
|
200
|
+
*
|
|
201
|
+
* type Query {
|
|
202
|
+
* viewer: Named
|
|
203
|
+
* }
|
|
204
|
+
* `);
|
|
205
|
+
*
|
|
206
|
+
* const result = await execute({
|
|
207
|
+
* schema,
|
|
208
|
+
* document: parse('query Viewer { viewer { __typename name } }'),
|
|
209
|
+
* rootValue: { viewer: { kind: 'user', name: 'Ada' } },
|
|
210
|
+
* contextValue: { locale: 'en' },
|
|
211
|
+
* operationName: 'Viewer',
|
|
212
|
+
* fieldResolver: (source, _args, contextValue, info) => {
|
|
213
|
+
* contextValue.locale; // => 'en'
|
|
214
|
+
* return source[info.fieldName];
|
|
215
|
+
* },
|
|
216
|
+
* typeResolver: (value) => {
|
|
217
|
+
* return value.kind === 'user' ? 'User' : undefined;
|
|
218
|
+
* },
|
|
219
|
+
* });
|
|
220
|
+
*
|
|
221
|
+
* result; // => { data: { viewer: { __typename: 'User', name: 'Ada' } } }
|
|
222
|
+
* ```
|
|
223
|
+
* @example
|
|
224
|
+
* ```ts
|
|
225
|
+
* // This variant shows how resolver errors become field errors in the result.
|
|
226
|
+
* import { parse } from 'graphql/language';
|
|
227
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
228
|
+
* import { execute } from 'graphql/execution';
|
|
229
|
+
*
|
|
230
|
+
* const schema = buildSchema(`
|
|
231
|
+
* type Query {
|
|
232
|
+
* broken: String
|
|
233
|
+
* }
|
|
234
|
+
* `);
|
|
235
|
+
* const document = parse('{ broken }');
|
|
236
|
+
*
|
|
237
|
+
* const result = await execute({
|
|
238
|
+
* schema,
|
|
239
|
+
* document,
|
|
240
|
+
* rootValue: {
|
|
241
|
+
* broken: () => {
|
|
242
|
+
* throw new Error('Resolver failed.');
|
|
243
|
+
* },
|
|
244
|
+
* },
|
|
245
|
+
* });
|
|
246
|
+
*
|
|
247
|
+
* result.data.broken; // => null
|
|
248
|
+
* result.errors[0].message; // => 'Resolver failed.'
|
|
249
|
+
* ```
|
|
250
|
+
* @example
|
|
251
|
+
* ```ts
|
|
252
|
+
* // This variant limits how many variable coercion errors are reported.
|
|
253
|
+
* import { parse } from 'graphql/language';
|
|
254
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
255
|
+
* import { execute } from 'graphql/execution';
|
|
256
|
+
*
|
|
257
|
+
* const schema = buildSchema(`
|
|
258
|
+
* input ReviewInput {
|
|
259
|
+
* stars: Int!
|
|
260
|
+
* }
|
|
261
|
+
*
|
|
262
|
+
* type Query {
|
|
263
|
+
* review(input: ReviewInput!): String
|
|
264
|
+
* }
|
|
265
|
+
* `);
|
|
266
|
+
* const document = parse(`
|
|
267
|
+
* query ($first: ReviewInput!, $second: ReviewInput!) {
|
|
268
|
+
* first: review(input: $first)
|
|
269
|
+
* second: review(input: $second)
|
|
270
|
+
* }
|
|
271
|
+
* `);
|
|
272
|
+
*
|
|
273
|
+
* const result = await execute({
|
|
274
|
+
* schema,
|
|
275
|
+
* document,
|
|
276
|
+
* variableValues: {
|
|
277
|
+
* first: { stars: 'bad' },
|
|
278
|
+
* second: { stars: 'also bad' },
|
|
279
|
+
* },
|
|
280
|
+
* options: { maxCoercionErrors: 1 },
|
|
281
|
+
* });
|
|
282
|
+
*
|
|
283
|
+
* result.errors.length; // => 2
|
|
284
|
+
* result.errors[1].message; // matches /error limit reached/
|
|
285
|
+
* ```
|
|
152
286
|
*/
|
|
153
287
|
function execute(args) {
|
|
154
288
|
// Temporary for v15 to v16 migration. Remove in v17
|
|
@@ -168,17 +302,7 @@ function execute(args) {
|
|
|
168
302
|
return {
|
|
169
303
|
errors: exeContext,
|
|
170
304
|
};
|
|
171
|
-
}
|
|
172
|
-
// The "Response" section of the GraphQL specification.
|
|
173
|
-
//
|
|
174
|
-
// If errors are encountered while executing a GraphQL field, only that
|
|
175
|
-
// field and its descendants will be omitted, and sibling fields will still
|
|
176
|
-
// be executed. An execution which encounters errors will still result in a
|
|
177
|
-
// resolved Promise.
|
|
178
|
-
//
|
|
179
|
-
// Errors from sub-fields of a NonNull type may propagate to the top level,
|
|
180
|
-
// at which point we still log the error and null the parent field, which
|
|
181
|
-
// in this case is the entire response.
|
|
305
|
+
}
|
|
182
306
|
|
|
183
307
|
try {
|
|
184
308
|
const { operation } = exeContext;
|
|
@@ -204,6 +328,53 @@ function execute(args) {
|
|
|
204
328
|
* Also implements the "Executing requests" section of the GraphQL specification.
|
|
205
329
|
* However, it guarantees to complete synchronously (or throw an error) assuming
|
|
206
330
|
* that all field resolvers are also synchronous.
|
|
331
|
+
* @param args - The arguments used to perform the operation.
|
|
332
|
+
* @returns Completed execution output for a synchronous operation.
|
|
333
|
+
* @example
|
|
334
|
+
* ```ts
|
|
335
|
+
* // Execute an operation synchronously when all resolvers are synchronous.
|
|
336
|
+
* import { parse } from 'graphql/language';
|
|
337
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
338
|
+
* import { executeSync } from 'graphql/execution';
|
|
339
|
+
*
|
|
340
|
+
* const schema = buildSchema(`
|
|
341
|
+
* type Query {
|
|
342
|
+
* greeting: String
|
|
343
|
+
* }
|
|
344
|
+
* `);
|
|
345
|
+
* const document = parse('{ greeting }');
|
|
346
|
+
*
|
|
347
|
+
* const result = executeSync({
|
|
348
|
+
* schema,
|
|
349
|
+
* document,
|
|
350
|
+
* rootValue: {
|
|
351
|
+
* greeting: 'Hello',
|
|
352
|
+
* },
|
|
353
|
+
* });
|
|
354
|
+
*
|
|
355
|
+
* result; // => { data: { greeting: 'Hello' } }
|
|
356
|
+
* ```
|
|
357
|
+
* @example
|
|
358
|
+
* ```ts
|
|
359
|
+
* // This variant shows executeSync throwing when a resolver returns a promise.
|
|
360
|
+
* import { parse } from 'graphql/language';
|
|
361
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
362
|
+
* import { executeSync } from 'graphql/execution';
|
|
363
|
+
*
|
|
364
|
+
* const schema = buildSchema(`
|
|
365
|
+
* type Query {
|
|
366
|
+
* greeting: String
|
|
367
|
+
* }
|
|
368
|
+
* `);
|
|
369
|
+
*
|
|
370
|
+
* executeSync({
|
|
371
|
+
* schema,
|
|
372
|
+
* document: parse('{ greeting }'),
|
|
373
|
+
* rootValue: {
|
|
374
|
+
* greeting: async () => 'Hello',
|
|
375
|
+
* },
|
|
376
|
+
* }); // throws an error
|
|
377
|
+
* ```
|
|
207
378
|
*/
|
|
208
379
|
|
|
209
380
|
function executeSync(args) {
|
|
@@ -218,6 +389,8 @@ function executeSync(args) {
|
|
|
218
389
|
/**
|
|
219
390
|
* Given a completed execution context and data, build the `{ errors, data }`
|
|
220
391
|
* response defined by the "Response" section of the GraphQL specification.
|
|
392
|
+
*
|
|
393
|
+
* @internal
|
|
221
394
|
*/
|
|
222
395
|
|
|
223
396
|
function buildResponse(data, errors) {
|
|
@@ -232,7 +405,9 @@ function buildResponse(data, errors) {
|
|
|
232
405
|
}
|
|
233
406
|
/**
|
|
234
407
|
* Essential assertions before executing to provide developer feedback for
|
|
235
|
-
* improper use of the GraphQL library.
|
|
408
|
+
* improper use of the GraphQL library. This deprecated internal helper will be
|
|
409
|
+
* removed in v17; call `assertValidSchema()` and rely on TypeScript checks
|
|
410
|
+
* instead.
|
|
236
411
|
*
|
|
237
412
|
* @deprecated will be removed in v17 in favor of assertValidSchema() and TS checks
|
|
238
413
|
* @internal
|
|
@@ -374,6 +549,8 @@ function buildExecutionContext(args) {
|
|
|
374
549
|
}
|
|
375
550
|
/**
|
|
376
551
|
* Implements the "Executing operations" section of the spec.
|
|
552
|
+
*
|
|
553
|
+
* @internal
|
|
377
554
|
*/
|
|
378
555
|
|
|
379
556
|
function executeOperation(exeContext, operation, rootValue) {
|
|
@@ -419,6 +596,8 @@ function executeOperation(exeContext, operation, rootValue) {
|
|
|
419
596
|
/**
|
|
420
597
|
* Implements the "Executing selection sets" section of the spec
|
|
421
598
|
* for fields that must be executed serially.
|
|
599
|
+
*
|
|
600
|
+
* @internal
|
|
422
601
|
*/
|
|
423
602
|
|
|
424
603
|
function executeFieldsSerially(
|
|
@@ -460,6 +639,8 @@ function executeFieldsSerially(
|
|
|
460
639
|
/**
|
|
461
640
|
* Implements the "Executing selection sets" section of the spec
|
|
462
641
|
* for fields that may be executed in parallel.
|
|
642
|
+
*
|
|
643
|
+
* @internal
|
|
463
644
|
*/
|
|
464
645
|
|
|
465
646
|
function executeFields(exeContext, parentType, sourceValue, path, fields) {
|
|
@@ -509,6 +690,8 @@ function executeFields(exeContext, parentType, sourceValue, path, fields) {
|
|
|
509
690
|
* In particular, this function figures out the value that the field returns by
|
|
510
691
|
* calling its resolve function, then calls completeValue to complete promises,
|
|
511
692
|
* serialize scalars, or execute the sub-selection-set for objects.
|
|
693
|
+
*
|
|
694
|
+
* @internal
|
|
512
695
|
*/
|
|
513
696
|
|
|
514
697
|
function executeField(exeContext, parentType, source, fieldNodes, path) {
|
|
@@ -588,9 +771,7 @@ function executeField(exeContext, parentType, source, fieldNodes, path) {
|
|
|
588
771
|
return handleFieldError(error, returnType, path, exeContext);
|
|
589
772
|
}
|
|
590
773
|
}
|
|
591
|
-
/**
|
|
592
|
-
* @internal
|
|
593
|
-
*/
|
|
774
|
+
/** @internal */
|
|
594
775
|
|
|
595
776
|
function buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path) {
|
|
596
777
|
// The resolve function's optional fourth argument is a collection of
|
|
@@ -640,6 +821,8 @@ function handleFieldError(error, returnType, path, exeContext) {
|
|
|
640
821
|
*
|
|
641
822
|
* Otherwise, the field type expects a sub-selection set, and will complete the
|
|
642
823
|
* value by executing all sub-selections.
|
|
824
|
+
*
|
|
825
|
+
* @internal
|
|
643
826
|
*/
|
|
644
827
|
|
|
645
828
|
function completeValue(exeContext, returnType, fieldNodes, info, path, result) {
|
|
@@ -723,6 +906,8 @@ function completeValue(exeContext, returnType, fieldNodes, info, path, result) {
|
|
|
723
906
|
/**
|
|
724
907
|
* Complete a list value by completing each item in the list with the
|
|
725
908
|
* inner type
|
|
909
|
+
*
|
|
910
|
+
* @internal
|
|
726
911
|
*/
|
|
727
912
|
|
|
728
913
|
function completeListValue(
|
|
@@ -801,6 +986,8 @@ function completeListValue(
|
|
|
801
986
|
/**
|
|
802
987
|
* Complete a Scalar or Enum by serializing to a valid value, returning
|
|
803
988
|
* null if serialization is not possible.
|
|
989
|
+
*
|
|
990
|
+
* @internal
|
|
804
991
|
*/
|
|
805
992
|
|
|
806
993
|
function completeLeafValue(returnType, result) {
|
|
@@ -821,6 +1008,8 @@ function completeLeafValue(returnType, result) {
|
|
|
821
1008
|
/**
|
|
822
1009
|
* Complete a value of an abstract type by determining the runtime object type
|
|
823
1010
|
* of that value, then complete the value for that type.
|
|
1011
|
+
*
|
|
1012
|
+
* @internal
|
|
824
1013
|
*/
|
|
825
1014
|
|
|
826
1015
|
function completeAbstractValue(
|
|
@@ -941,6 +1130,8 @@ function ensureValidRuntimeType(
|
|
|
941
1130
|
}
|
|
942
1131
|
/**
|
|
943
1132
|
* Complete an Object value by executing all sub-selections.
|
|
1133
|
+
*
|
|
1134
|
+
* @internal
|
|
944
1135
|
*/
|
|
945
1136
|
|
|
946
1137
|
function completeObjectValue(
|