graphql 14.1.1 → 14.3.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/LICENSE +1 -1
- package/README.md +1 -1
- package/error/GraphQLError.js +12 -10
- package/error/GraphQLError.js.flow +11 -6
- package/error/GraphQLError.mjs +20 -3
- package/error/formatError.js +2 -2
- package/error/formatError.js.flow +3 -3
- package/error/formatError.mjs +2 -2
- package/error/index.js +1 -1
- package/error/index.js.flow +5 -2
- package/error/index.mjs +2 -2
- package/error/locatedError.js +2 -2
- package/error/locatedError.js.flow +2 -2
- package/error/locatedError.mjs +2 -2
- package/error/printError.js +2 -2
- package/error/printError.js.flow +4 -5
- package/error/printError.mjs +2 -2
- package/error/syntaxError.js +2 -2
- package/error/syntaxError.js.flow +2 -2
- package/error/syntaxError.mjs +2 -2
- package/execution/execute.js +52 -37
- package/execution/execute.js.flow +66 -51
- package/execution/execute.mjs +50 -38
- package/execution/index.js +7 -1
- package/execution/index.js.flow +9 -4
- package/execution/index.mjs +3 -3
- package/execution/values.js +11 -11
- package/execution/values.js.flow +23 -19
- package/execution/values.mjs +11 -11
- package/graphql.js +13 -9
- package/graphql.js.flow +28 -10
- package/graphql.mjs +10 -9
- package/index.js +83 -53
- package/index.js.flow +60 -47
- package/index.mjs +26 -23
- package/jsutils/ObjMap.js +1 -1
- package/jsutils/ObjMap.js.flow +1 -1
- package/jsutils/ObjMap.mjs +1 -0
- package/jsutils/PromiseOrValue.js +1 -0
- package/jsutils/{MaybePromise.js.flow → PromiseOrValue.js.flow} +2 -2
- package/jsutils/PromiseOrValue.mjs +1 -0
- package/jsutils/dedent.js +2 -2
- package/jsutils/dedent.js.flow +1 -1
- package/jsutils/dedent.mjs +2 -2
- package/jsutils/defineToJSON.js +2 -2
- package/jsutils/defineToJSON.js.flow +1 -1
- package/jsutils/defineToJSON.mjs +2 -2
- package/jsutils/defineToStringTag.js +2 -2
- package/jsutils/defineToStringTag.js.flow +1 -1
- package/jsutils/defineToStringTag.mjs +2 -2
- package/jsutils/inspect.js +94 -19
- package/jsutils/inspect.js.flow +98 -20
- package/jsutils/inspect.mjs +94 -20
- package/jsutils/instanceOf.js +2 -2
- package/jsutils/instanceOf.js.flow +1 -1
- package/jsutils/instanceOf.mjs +2 -2
- package/jsutils/invariant.js +5 -3
- package/jsutils/invariant.js.flow +3 -2
- package/jsutils/invariant.mjs +5 -3
- package/jsutils/isInvalid.js +2 -2
- package/jsutils/isInvalid.js.flow +1 -1
- package/jsutils/isInvalid.mjs +2 -2
- package/jsutils/isNullish.js +2 -2
- package/jsutils/isNullish.js.flow +1 -1
- package/jsutils/isNullish.mjs +2 -2
- package/jsutils/isPromise.js +2 -2
- package/jsutils/isPromise.js.flow +1 -1
- package/jsutils/isPromise.mjs +2 -2
- package/jsutils/keyMap.js +4 -3
- package/jsutils/keyMap.js.flow +6 -6
- package/jsutils/keyMap.mjs +4 -3
- package/jsutils/keyValMap.js +4 -3
- package/jsutils/keyValMap.js.flow +6 -6
- package/jsutils/keyValMap.mjs +4 -3
- package/jsutils/mapValue.js +2 -2
- package/jsutils/mapValue.js.flow +2 -2
- package/jsutils/mapValue.mjs +2 -2
- package/jsutils/memoize3.js +3 -3
- package/jsutils/memoize3.js.flow +2 -2
- package/jsutils/memoize3.mjs +3 -3
- package/jsutils/nodejsCustomInspectSymbol.js +2 -2
- package/jsutils/nodejsCustomInspectSymbol.js.flow +1 -1
- package/jsutils/nodejsCustomInspectSymbol.mjs +2 -2
- package/jsutils/orList.js +2 -2
- package/jsutils/orList.js.flow +1 -1
- package/jsutils/orList.mjs +2 -2
- package/jsutils/promiseForObject.js +2 -2
- package/jsutils/promiseForObject.js.flow +2 -2
- package/jsutils/promiseForObject.mjs +2 -2
- package/jsutils/promiseReduce.js +2 -2
- package/jsutils/promiseReduce.js.flow +5 -5
- package/jsutils/promiseReduce.mjs +2 -2
- package/jsutils/quotedOrList.js +2 -2
- package/jsutils/quotedOrList.js.flow +1 -1
- package/jsutils/quotedOrList.mjs +2 -2
- package/jsutils/suggestionList.js +2 -2
- package/jsutils/suggestionList.js.flow +1 -1
- package/jsutils/suggestionList.mjs +2 -2
- package/language/ast.js +1 -1
- package/language/ast.js.flow +3 -3
- package/language/ast.mjs +1 -0
- package/language/blockString.js +114 -0
- package/language/blockString.js.flow +102 -0
- package/language/blockString.mjs +104 -0
- package/language/directiveLocation.js +2 -2
- package/language/directiveLocation.js.flow +1 -1
- package/language/directiveLocation.mjs +2 -2
- package/language/index.js +9 -9
- package/language/index.js.flow +10 -5
- package/language/index.mjs +3 -3
- package/language/kinds.js +2 -2
- package/language/kinds.js.flow +1 -1
- package/language/kinds.mjs +2 -2
- package/language/lexer.js +52 -44
- package/language/lexer.js.flow +65 -54
- package/language/lexer.mjs +49 -43
- package/language/location.js +2 -2
- package/language/location.js.flow +2 -2
- package/language/location.mjs +2 -2
- package/language/parser.js +75 -67
- package/language/parser.js.flow +138 -127
- package/language/parser.mjs +76 -68
- package/language/predicates.js +2 -2
- package/language/predicates.js.flow +2 -2
- package/language/predicates.mjs +2 -2
- package/language/printer.js +6 -14
- package/language/printer.js.flow +8 -17
- package/language/printer.mjs +5 -14
- package/language/source.js +2 -2
- package/language/source.js.flow +1 -1
- package/language/source.mjs +2 -2
- package/language/visitor.js +4 -6
- package/language/visitor.js.flow +3 -3
- package/language/visitor.mjs +4 -6
- package/package.json +1 -1
- package/polyfills/find.js +2 -2
- package/polyfills/find.js.flow +1 -1
- package/polyfills/find.mjs +2 -2
- package/polyfills/flatMap.js +38 -0
- package/polyfills/flatMap.js.flow +34 -0
- package/polyfills/flatMap.mjs +30 -0
- package/polyfills/isFinite.js +2 -2
- package/polyfills/isFinite.js.flow +1 -1
- package/polyfills/isFinite.mjs +2 -2
- package/polyfills/isInteger.js +2 -2
- package/polyfills/isInteger.js.flow +1 -1
- package/polyfills/isInteger.mjs +2 -2
- package/polyfills/objectEntries.js +2 -2
- package/polyfills/objectEntries.js.flow +2 -2
- package/polyfills/objectEntries.mjs +2 -2
- package/polyfills/objectValues.js +2 -2
- package/polyfills/objectValues.js.flow +2 -2
- package/polyfills/objectValues.mjs +2 -2
- package/subscription/asyncIteratorReject.js +1 -1
- package/subscription/asyncIteratorReject.js.flow +1 -1
- package/subscription/asyncIteratorReject.mjs +2 -2
- package/subscription/index.js +1 -1
- package/subscription/index.js.flow +1 -1
- package/subscription/index.mjs +2 -2
- package/subscription/mapAsyncIterator.js +1 -1
- package/subscription/mapAsyncIterator.js.flow +5 -5
- package/subscription/mapAsyncIterator.mjs +2 -2
- package/subscription/subscribe.js +2 -2
- package/subscription/subscribe.js.flow +6 -6
- package/subscription/subscribe.mjs +2 -2
- package/type/definition.js +138 -22
- package/type/definition.js.flow +184 -36
- package/type/definition.mjs +136 -23
- package/type/directives.js +14 -3
- package/type/directives.js.flow +24 -11
- package/type/directives.mjs +16 -5
- package/type/index.js +7 -7
- package/type/index.js.flow +8 -4
- package/type/index.mjs +10 -6
- package/type/introspection.js +14 -9
- package/type/introspection.js.flow +12 -18
- package/type/introspection.mjs +14 -9
- package/type/scalars.js +5 -4
- package/type/scalars.js.flow +4 -10
- package/type/scalars.mjs +7 -6
- package/type/schema.js +55 -3
- package/type/schema.js.flow +73 -17
- package/type/schema.mjs +56 -4
- package/type/validate.js +19 -47
- package/type/validate.js.flow +17 -29
- package/type/validate.mjs +18 -47
- package/utilities/TypeInfo.js +93 -73
- package/utilities/TypeInfo.js.flow +30 -23
- package/utilities/TypeInfo.mjs +93 -73
- package/utilities/assertValidName.js +2 -2
- package/utilities/assertValidName.js.flow +2 -2
- package/utilities/assertValidName.mjs +2 -2
- package/utilities/astFromValue.js +5 -4
- package/utilities/astFromValue.js.flow +8 -7
- package/utilities/astFromValue.mjs +7 -6
- package/utilities/buildASTSchema.js +63 -62
- package/utilities/buildASTSchema.js.flow +92 -108
- package/utilities/buildASTSchema.mjs +61 -62
- package/utilities/buildClientSchema.js +38 -45
- package/utilities/buildClientSchema.js.flow +66 -79
- package/utilities/buildClientSchema.mjs +37 -44
- package/utilities/coerceValue.js +6 -7
- package/utilities/coerceValue.js.flow +5 -4
- package/utilities/coerceValue.mjs +7 -8
- package/utilities/concatAST.js +9 -13
- package/utilities/concatAST.js.flow +4 -10
- package/utilities/concatAST.mjs +6 -13
- package/utilities/extendSchema.js +219 -511
- package/utilities/extendSchema.js.flow +195 -304
- package/utilities/extendSchema.mjs +218 -512
- package/utilities/findBreakingChanges.js +54 -95
- package/utilities/findBreakingChanges.js.flow +49 -47
- package/utilities/findBreakingChanges.mjs +80 -95
- package/utilities/findDeprecatedUsages.js +4 -4
- package/utilities/findDeprecatedUsages.js.flow +5 -5
- package/utilities/findDeprecatedUsages.mjs +4 -4
- package/utilities/getOperationAST.js +2 -2
- package/utilities/getOperationAST.js.flow +5 -2
- package/utilities/getOperationAST.mjs +2 -2
- package/utilities/getOperationRootType.js +24 -24
- package/utilities/getOperationRootType.js.flow +40 -35
- package/utilities/getOperationRootType.mjs +24 -24
- package/utilities/index.js +9 -1
- package/utilities/index.js.flow +13 -6
- package/utilities/index.mjs +13 -8
- package/utilities/introspectionFromSchema.js +6 -4
- package/utilities/introspectionFromSchema.js.flow +8 -7
- package/utilities/introspectionFromSchema.mjs +6 -5
- package/utilities/introspectionQuery.js +2 -2
- package/utilities/introspectionQuery.js.flow +2 -2
- package/utilities/introspectionQuery.mjs +2 -2
- package/utilities/isValidJSValue.js +4 -2
- package/utilities/isValidJSValue.js.flow +3 -2
- package/utilities/isValidJSValue.mjs +4 -2
- package/utilities/isValidLiteralValue.js +2 -2
- package/utilities/isValidLiteralValue.js.flow +4 -4
- package/utilities/isValidLiteralValue.mjs +2 -2
- package/utilities/lexicographicSortSchema.js +84 -123
- package/utilities/lexicographicSortSchema.js.flow +68 -96
- package/utilities/lexicographicSortSchema.mjs +84 -123
- package/utilities/schemaPrinter.js +47 -73
- package/utilities/schemaPrinter.js.flow +69 -120
- package/utilities/schemaPrinter.mjs +45 -72
- package/utilities/separateOperations.js +8 -12
- package/utilities/separateOperations.js.flow +6 -3
- package/utilities/separateOperations.mjs +8 -12
- package/utilities/stripIgnoredCharacters.js +140 -0
- package/utilities/stripIgnoredCharacters.js.flow +129 -0
- package/utilities/stripIgnoredCharacters.mjs +127 -0
- package/utilities/typeComparators.js +2 -2
- package/utilities/typeComparators.js.flow +4 -3
- package/utilities/typeComparators.mjs +2 -2
- package/utilities/typeFromAST.js +9 -4
- package/utilities/typeFromAST.js.flow +15 -9
- package/utilities/typeFromAST.mjs +6 -4
- package/utilities/valueFromAST.js +7 -4
- package/utilities/valueFromAST.js.flow +7 -5
- package/utilities/valueFromAST.mjs +6 -4
- package/utilities/valueFromASTUntyped.js +11 -6
- package/utilities/valueFromASTUntyped.js.flow +9 -5
- package/utilities/valueFromASTUntyped.mjs +10 -6
- package/validation/ValidationContext.js +1 -1
- package/validation/ValidationContext.js.flow +19 -20
- package/validation/ValidationContext.mjs +2 -2
- package/validation/index.js +1 -1
- package/validation/index.js.flow +2 -1
- package/validation/index.mjs +3 -2
- package/validation/rules/ExecutableDefinitions.js +3 -3
- package/validation/rules/ExecutableDefinitions.js.flow +4 -4
- package/validation/rules/ExecutableDefinitions.mjs +3 -3
- package/validation/rules/FieldsOnCorrectType.js +3 -3
- package/validation/rules/FieldsOnCorrectType.js.flow +7 -7
- package/validation/rules/FieldsOnCorrectType.mjs +3 -3
- package/validation/rules/FragmentsOnCompositeTypes.js +4 -4
- package/validation/rules/FragmentsOnCompositeTypes.js.flow +5 -5
- package/validation/rules/FragmentsOnCompositeTypes.mjs +4 -4
- package/validation/rules/KnownArgumentNames.js +1 -1
- package/validation/rules/KnownArgumentNames.js.flow +5 -5
- package/validation/rules/KnownArgumentNames.mjs +2 -2
- package/validation/rules/KnownDirectives.js +8 -6
- package/validation/rules/KnownDirectives.js.flow +11 -9
- package/validation/rules/KnownDirectives.mjs +8 -6
- package/validation/rules/KnownFragmentNames.js +3 -3
- package/validation/rules/KnownFragmentNames.js.flow +4 -4
- package/validation/rules/KnownFragmentNames.mjs +3 -3
- package/validation/rules/KnownTypeNames.js +2 -2
- package/validation/rules/KnownTypeNames.js.flow +6 -6
- package/validation/rules/KnownTypeNames.mjs +2 -2
- package/validation/rules/LoneAnonymousOperation.js +3 -3
- package/validation/rules/LoneAnonymousOperation.js.flow +4 -4
- package/validation/rules/LoneAnonymousOperation.mjs +3 -3
- package/validation/rules/LoneSchemaDefinition.js +2 -2
- package/validation/rules/LoneSchemaDefinition.js.flow +3 -3
- package/validation/rules/LoneSchemaDefinition.mjs +2 -2
- package/validation/rules/NoFragmentCycles.js +2 -2
- package/validation/rules/NoFragmentCycles.js.flow +4 -4
- package/validation/rules/NoFragmentCycles.mjs +2 -2
- package/validation/rules/NoUndefinedVariables.js +2 -2
- package/validation/rules/NoUndefinedVariables.js.flow +3 -3
- package/validation/rules/NoUndefinedVariables.mjs +2 -2
- package/validation/rules/NoUnusedFragments.js +7 -7
- package/validation/rules/NoUnusedFragments.js.flow +4 -4
- package/validation/rules/NoUnusedFragments.mjs +7 -7
- package/validation/rules/NoUnusedVariables.js +5 -5
- package/validation/rules/NoUnusedVariables.js.flow +6 -5
- package/validation/rules/NoUnusedVariables.mjs +5 -5
- package/validation/rules/OverlappingFieldsCanBeMerged.js +26 -23
- package/validation/rules/OverlappingFieldsCanBeMerged.js.flow +17 -17
- package/validation/rules/OverlappingFieldsCanBeMerged.mjs +26 -23
- package/validation/rules/PossibleFragmentSpreads.js +4 -4
- package/validation/rules/PossibleFragmentSpreads.js.flow +5 -5
- package/validation/rules/PossibleFragmentSpreads.mjs +4 -4
- package/validation/rules/PossibleTypeExtensions.js +3 -3
- package/validation/rules/PossibleTypeExtensions.js.flow +5 -5
- package/validation/rules/PossibleTypeExtensions.mjs +4 -4
- package/validation/rules/ProvidedRequiredArguments.js +6 -8
- package/validation/rules/ProvidedRequiredArguments.js.flow +8 -8
- package/validation/rules/ProvidedRequiredArguments.mjs +7 -9
- package/validation/rules/ScalarLeafs.js +4 -4
- package/validation/rules/ScalarLeafs.js.flow +6 -6
- package/validation/rules/ScalarLeafs.mjs +4 -4
- package/validation/rules/SingleFieldSubscriptions.js +2 -2
- package/validation/rules/SingleFieldSubscriptions.js.flow +4 -4
- package/validation/rules/SingleFieldSubscriptions.mjs +2 -2
- package/validation/rules/UniqueArgumentNames.js +2 -2
- package/validation/rules/UniqueArgumentNames.js.flow +3 -3
- package/validation/rules/UniqueArgumentNames.mjs +2 -2
- package/validation/rules/UniqueDirectiveNames.js +2 -2
- package/validation/rules/UniqueDirectiveNames.js.flow +3 -3
- package/validation/rules/UniqueDirectiveNames.mjs +2 -2
- package/validation/rules/UniqueDirectivesPerLocation.js +3 -2
- package/validation/rules/UniqueDirectivesPerLocation.js.flow +4 -4
- package/validation/rules/UniqueDirectivesPerLocation.mjs +3 -2
- package/validation/rules/UniqueEnumValueNames.js +4 -8
- package/validation/rules/UniqueEnumValueNames.js.flow +6 -8
- package/validation/rules/UniqueEnumValueNames.mjs +4 -8
- package/validation/rules/UniqueFieldDefinitionNames.js +4 -8
- package/validation/rules/UniqueFieldDefinitionNames.js.flow +6 -8
- package/validation/rules/UniqueFieldDefinitionNames.mjs +4 -8
- package/validation/rules/UniqueFragmentNames.js +2 -2
- package/validation/rules/UniqueFragmentNames.js.flow +3 -3
- package/validation/rules/UniqueFragmentNames.mjs +2 -2
- package/validation/rules/UniqueInputFieldNames.js +2 -4
- package/validation/rules/UniqueInputFieldNames.js.flow +3 -4
- package/validation/rules/UniqueInputFieldNames.mjs +2 -4
- package/validation/rules/UniqueOperationNames.js +2 -2
- package/validation/rules/UniqueOperationNames.js.flow +3 -3
- package/validation/rules/UniqueOperationNames.mjs +2 -2
- package/validation/rules/UniqueOperationTypes.js +2 -2
- package/validation/rules/UniqueOperationTypes.js.flow +3 -3
- package/validation/rules/UniqueOperationTypes.mjs +2 -2
- package/validation/rules/UniqueTypeNames.js +2 -2
- package/validation/rules/UniqueTypeNames.js.flow +4 -4
- package/validation/rules/UniqueTypeNames.mjs +2 -2
- package/validation/rules/UniqueVariableNames.js +2 -2
- package/validation/rules/UniqueVariableNames.js.flow +4 -4
- package/validation/rules/UniqueVariableNames.mjs +2 -2
- package/validation/rules/ValuesOfCorrectType.js +2 -2
- package/validation/rules/ValuesOfCorrectType.js.flow +5 -5
- package/validation/rules/ValuesOfCorrectType.mjs +2 -2
- package/validation/rules/VariablesAreInputTypes.js +3 -3
- package/validation/rules/VariablesAreInputTypes.js.flow +5 -5
- package/validation/rules/VariablesAreInputTypes.mjs +3 -3
- package/validation/rules/VariablesInAllowedPosition.js +3 -3
- package/validation/rules/VariablesInAllowedPosition.js.flow +7 -8
- package/validation/rules/VariablesInAllowedPosition.mjs +3 -3
- package/validation/specifiedRules.js +2 -2
- package/validation/specifiedRules.js.flow +13 -6
- package/validation/specifiedRules.mjs +7 -7
- package/validation/validate.js +2 -2
- package/validation/validate.js.flow +10 -6
- package/validation/validate.mjs +2 -2
- package/jsutils/MaybePromise.js +0 -1
- package/jsutils/MaybePromise.mjs +0 -0
- package/language/blockStringValue.js +0 -73
- package/language/blockStringValue.js.flow +0 -64
- package/language/blockStringValue.mjs +0 -66
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -18,8 +18,8 @@ import isPromise from '../jsutils/isPromise';
|
|
|
18
18
|
import memoize3 from '../jsutils/memoize3';
|
|
19
19
|
import promiseForObject from '../jsutils/promiseForObject';
|
|
20
20
|
import promiseReduce from '../jsutils/promiseReduce';
|
|
21
|
-
import type
|
|
22
|
-
import type
|
|
21
|
+
import { type ObjMap } from '../jsutils/ObjMap';
|
|
22
|
+
import { type PromiseOrValue } from '../jsutils/PromiseOrValue';
|
|
23
23
|
|
|
24
24
|
import { getOperationRootType } from '../utilities/getOperationRootType';
|
|
25
25
|
import { typeFromAST } from '../utilities/typeFromAST';
|
|
@@ -30,24 +30,23 @@ import {
|
|
|
30
30
|
getDirectiveValues,
|
|
31
31
|
} from './values';
|
|
32
32
|
import {
|
|
33
|
+
type GraphQLObjectType,
|
|
34
|
+
type GraphQLOutputType,
|
|
35
|
+
type GraphQLLeafType,
|
|
36
|
+
type GraphQLAbstractType,
|
|
37
|
+
type GraphQLField,
|
|
38
|
+
type GraphQLFieldResolver,
|
|
39
|
+
type GraphQLResolveInfo,
|
|
40
|
+
type GraphQLTypeResolver,
|
|
41
|
+
type ResponsePath,
|
|
42
|
+
type GraphQLList,
|
|
33
43
|
isObjectType,
|
|
34
44
|
isAbstractType,
|
|
35
45
|
isLeafType,
|
|
36
46
|
isListType,
|
|
37
47
|
isNonNullType,
|
|
38
48
|
} from '../type/definition';
|
|
39
|
-
import type
|
|
40
|
-
GraphQLObjectType,
|
|
41
|
-
GraphQLOutputType,
|
|
42
|
-
GraphQLLeafType,
|
|
43
|
-
GraphQLAbstractType,
|
|
44
|
-
GraphQLField,
|
|
45
|
-
GraphQLFieldResolver,
|
|
46
|
-
GraphQLResolveInfo,
|
|
47
|
-
ResponsePath,
|
|
48
|
-
GraphQLList,
|
|
49
|
-
} from '../type/definition';
|
|
50
|
-
import type { GraphQLSchema } from '../type/schema';
|
|
49
|
+
import { type GraphQLSchema } from '../type/schema';
|
|
51
50
|
import {
|
|
52
51
|
SchemaMetaFieldDef,
|
|
53
52
|
TypeMetaFieldDef,
|
|
@@ -58,14 +57,14 @@ import {
|
|
|
58
57
|
GraphQLSkipDirective,
|
|
59
58
|
} from '../type/directives';
|
|
60
59
|
import { assertValidSchema } from '../type/validate';
|
|
61
|
-
import
|
|
62
|
-
DocumentNode,
|
|
63
|
-
OperationDefinitionNode,
|
|
64
|
-
SelectionSetNode,
|
|
65
|
-
FieldNode,
|
|
66
|
-
FragmentSpreadNode,
|
|
67
|
-
InlineFragmentNode,
|
|
68
|
-
FragmentDefinitionNode,
|
|
60
|
+
import {
|
|
61
|
+
type DocumentNode,
|
|
62
|
+
type OperationDefinitionNode,
|
|
63
|
+
type SelectionSetNode,
|
|
64
|
+
type FieldNode,
|
|
65
|
+
type FragmentSpreadNode,
|
|
66
|
+
type InlineFragmentNode,
|
|
67
|
+
type FragmentDefinitionNode,
|
|
69
68
|
} from '../language/ast';
|
|
70
69
|
|
|
71
70
|
/**
|
|
@@ -102,6 +101,7 @@ export type ExecutionContext = {|
|
|
|
102
101
|
operation: OperationDefinitionNode,
|
|
103
102
|
variableValues: { [variable: string]: mixed },
|
|
104
103
|
fieldResolver: GraphQLFieldResolver<any, any>,
|
|
104
|
+
typeResolver: GraphQLTypeResolver<any, any>,
|
|
105
105
|
errors: Array<GraphQLError>,
|
|
106
106
|
|};
|
|
107
107
|
|
|
@@ -124,6 +124,7 @@ export type ExecutionArgs = {|
|
|
|
124
124
|
variableValues?: ?{ [variable: string]: mixed },
|
|
125
125
|
operationName?: ?string,
|
|
126
126
|
fieldResolver?: ?GraphQLFieldResolver<any, any>,
|
|
127
|
+
typeResolver?: ?GraphQLTypeResolver<any, any>,
|
|
127
128
|
|};
|
|
128
129
|
|
|
129
130
|
/**
|
|
@@ -141,7 +142,7 @@ export type ExecutionArgs = {|
|
|
|
141
142
|
declare function execute(
|
|
142
143
|
ExecutionArgs,
|
|
143
144
|
..._: []
|
|
144
|
-
):
|
|
145
|
+
): PromiseOrValue<ExecutionResult>;
|
|
145
146
|
/* eslint-disable no-redeclare */
|
|
146
147
|
declare function execute(
|
|
147
148
|
schema: GraphQLSchema,
|
|
@@ -151,7 +152,8 @@ declare function execute(
|
|
|
151
152
|
variableValues?: ?{ [variable: string]: mixed },
|
|
152
153
|
operationName?: ?string,
|
|
153
154
|
fieldResolver?: ?GraphQLFieldResolver<any, any>,
|
|
154
|
-
|
|
155
|
+
typeResolver?: ?GraphQLTypeResolver<any, any>,
|
|
156
|
+
): PromiseOrValue<ExecutionResult>;
|
|
155
157
|
export function execute(
|
|
156
158
|
argsOrSchema,
|
|
157
159
|
document,
|
|
@@ -160,6 +162,7 @@ export function execute(
|
|
|
160
162
|
variableValues,
|
|
161
163
|
operationName,
|
|
162
164
|
fieldResolver,
|
|
165
|
+
typeResolver,
|
|
163
166
|
) {
|
|
164
167
|
/* eslint-enable no-redeclare */
|
|
165
168
|
// Extract arguments from object args if provided.
|
|
@@ -172,6 +175,7 @@ export function execute(
|
|
|
172
175
|
argsOrSchema.variableValues,
|
|
173
176
|
argsOrSchema.operationName,
|
|
174
177
|
argsOrSchema.fieldResolver,
|
|
178
|
+
argsOrSchema.typeResolver,
|
|
175
179
|
)
|
|
176
180
|
: executeImpl(
|
|
177
181
|
argsOrSchema,
|
|
@@ -181,6 +185,7 @@ export function execute(
|
|
|
181
185
|
variableValues,
|
|
182
186
|
operationName,
|
|
183
187
|
fieldResolver,
|
|
188
|
+
typeResolver,
|
|
184
189
|
);
|
|
185
190
|
}
|
|
186
191
|
|
|
@@ -192,6 +197,7 @@ function executeImpl(
|
|
|
192
197
|
variableValues,
|
|
193
198
|
operationName,
|
|
194
199
|
fieldResolver,
|
|
200
|
+
typeResolver,
|
|
195
201
|
) {
|
|
196
202
|
// If arguments are missing or incorrect, throw an error.
|
|
197
203
|
assertValidExecutionArguments(schema, document, variableValues);
|
|
@@ -206,6 +212,7 @@ function executeImpl(
|
|
|
206
212
|
variableValues,
|
|
207
213
|
operationName,
|
|
208
214
|
fieldResolver,
|
|
215
|
+
typeResolver,
|
|
209
216
|
);
|
|
210
217
|
|
|
211
218
|
// Return early errors if execution context failed.
|
|
@@ -230,7 +237,7 @@ function executeImpl(
|
|
|
230
237
|
*/
|
|
231
238
|
function buildResponse(
|
|
232
239
|
exeContext: ExecutionContext,
|
|
233
|
-
data:
|
|
240
|
+
data: PromiseOrValue<ObjMap<mixed> | null>,
|
|
234
241
|
) {
|
|
235
242
|
if (isPromise(data)) {
|
|
236
243
|
return data.then(resolved => buildResponse(exeContext, resolved));
|
|
@@ -301,6 +308,7 @@ export function buildExecutionContext(
|
|
|
301
308
|
rawVariableValues: ?ObjMap<mixed>,
|
|
302
309
|
operationName: ?string,
|
|
303
310
|
fieldResolver: ?GraphQLFieldResolver<any, any>,
|
|
311
|
+
typeResolver?: ?GraphQLTypeResolver<any, any>,
|
|
304
312
|
): $ReadOnlyArray<GraphQLError> | ExecutionContext {
|
|
305
313
|
const errors: Array<GraphQLError> = [];
|
|
306
314
|
let operation: OperationDefinitionNode | void;
|
|
@@ -371,6 +379,7 @@ export function buildExecutionContext(
|
|
|
371
379
|
operation,
|
|
372
380
|
variableValues,
|
|
373
381
|
fieldResolver: fieldResolver || defaultFieldResolver,
|
|
382
|
+
typeResolver: typeResolver || defaultTypeResolver,
|
|
374
383
|
errors,
|
|
375
384
|
};
|
|
376
385
|
}
|
|
@@ -382,7 +391,7 @@ function executeOperation(
|
|
|
382
391
|
exeContext: ExecutionContext,
|
|
383
392
|
operation: OperationDefinitionNode,
|
|
384
393
|
rootValue: mixed,
|
|
385
|
-
):
|
|
394
|
+
): PromiseOrValue<ObjMap<mixed> | null> {
|
|
386
395
|
const type = getOperationRootType(exeContext.schema, operation);
|
|
387
396
|
const fields = collectFields(
|
|
388
397
|
exeContext,
|
|
@@ -427,7 +436,7 @@ function executeFieldsSerially(
|
|
|
427
436
|
sourceValue: mixed,
|
|
428
437
|
path: ResponsePath | void,
|
|
429
438
|
fields: ObjMap<Array<FieldNode>>,
|
|
430
|
-
):
|
|
439
|
+
): PromiseOrValue<ObjMap<mixed>> {
|
|
431
440
|
return promiseReduce(
|
|
432
441
|
Object.keys(fields),
|
|
433
442
|
(results, responseName) => {
|
|
@@ -466,7 +475,7 @@ function executeFields(
|
|
|
466
475
|
sourceValue: mixed,
|
|
467
476
|
path: ResponsePath | void,
|
|
468
477
|
fields: ObjMap<Array<FieldNode>>,
|
|
469
|
-
):
|
|
478
|
+
): PromiseOrValue<ObjMap<mixed>> {
|
|
470
479
|
const results = Object.create(null);
|
|
471
480
|
let containsPromise = false;
|
|
472
481
|
|
|
@@ -519,7 +528,7 @@ export function collectFields(
|
|
|
519
528
|
for (let i = 0; i < selectionSet.selections.length; i++) {
|
|
520
529
|
const selection = selectionSet.selections[i];
|
|
521
530
|
switch (selection.kind) {
|
|
522
|
-
case Kind.FIELD:
|
|
531
|
+
case Kind.FIELD: {
|
|
523
532
|
if (!shouldIncludeNode(exeContext, selection)) {
|
|
524
533
|
continue;
|
|
525
534
|
}
|
|
@@ -529,7 +538,8 @@ export function collectFields(
|
|
|
529
538
|
}
|
|
530
539
|
fields[name].push(selection);
|
|
531
540
|
break;
|
|
532
|
-
|
|
541
|
+
}
|
|
542
|
+
case Kind.INLINE_FRAGMENT: {
|
|
533
543
|
if (
|
|
534
544
|
!shouldIncludeNode(exeContext, selection) ||
|
|
535
545
|
!doesFragmentConditionMatch(exeContext, selection, runtimeType)
|
|
@@ -544,7 +554,8 @@ export function collectFields(
|
|
|
544
554
|
visitedFragmentNames,
|
|
545
555
|
);
|
|
546
556
|
break;
|
|
547
|
-
|
|
557
|
+
}
|
|
558
|
+
case Kind.FRAGMENT_SPREAD: {
|
|
548
559
|
const fragName = selection.name.value;
|
|
549
560
|
if (
|
|
550
561
|
visitedFragmentNames[fragName] ||
|
|
@@ -568,6 +579,7 @@ export function collectFields(
|
|
|
568
579
|
visitedFragmentNames,
|
|
569
580
|
);
|
|
570
581
|
break;
|
|
582
|
+
}
|
|
571
583
|
}
|
|
572
584
|
}
|
|
573
585
|
return fields;
|
|
@@ -642,7 +654,7 @@ function resolveField(
|
|
|
642
654
|
source: mixed,
|
|
643
655
|
fieldNodes: $ReadOnlyArray<FieldNode>,
|
|
644
656
|
path: ResponsePath,
|
|
645
|
-
):
|
|
657
|
+
): PromiseOrValue<mixed> {
|
|
646
658
|
const fieldNode = fieldNodes[0];
|
|
647
659
|
const fieldName = fieldNode.name.value;
|
|
648
660
|
|
|
@@ -740,7 +752,10 @@ export function resolveFieldValueOrError<TSource>(
|
|
|
740
752
|
// Sometimes a non-error is thrown, wrap it as an Error instance to ensure a
|
|
741
753
|
// consistent Error interface.
|
|
742
754
|
function asErrorInstance(error: mixed): Error {
|
|
743
|
-
|
|
755
|
+
if (error instanceof Error) {
|
|
756
|
+
return error;
|
|
757
|
+
}
|
|
758
|
+
return new Error('Unexpected error value: ' + inspect(error));
|
|
744
759
|
}
|
|
745
760
|
|
|
746
761
|
// This is a small wrapper around completeValue which detects and logs errors
|
|
@@ -752,7 +767,7 @@ function completeValueCatchingError(
|
|
|
752
767
|
info: GraphQLResolveInfo,
|
|
753
768
|
path: ResponsePath,
|
|
754
769
|
result: mixed,
|
|
755
|
-
):
|
|
770
|
+
): PromiseOrValue<mixed> {
|
|
756
771
|
try {
|
|
757
772
|
let completed;
|
|
758
773
|
if (isPromise(result)) {
|
|
@@ -830,7 +845,7 @@ function completeValue(
|
|
|
830
845
|
info: GraphQLResolveInfo,
|
|
831
846
|
path: ResponsePath,
|
|
832
847
|
result: mixed,
|
|
833
|
-
):
|
|
848
|
+
): PromiseOrValue<mixed> {
|
|
834
849
|
// If result is an Error, throw a located error.
|
|
835
850
|
if (result instanceof Error) {
|
|
836
851
|
throw result;
|
|
@@ -908,7 +923,7 @@ function completeValue(
|
|
|
908
923
|
// Not reachable. All possible output types have been considered.
|
|
909
924
|
/* istanbul ignore next */
|
|
910
925
|
throw new Error(
|
|
911
|
-
`Cannot complete value of unexpected type "${inspect(
|
|
926
|
+
`Cannot complete value of unexpected output type: "${inspect(
|
|
912
927
|
(returnType: empty),
|
|
913
928
|
)}".`,
|
|
914
929
|
);
|
|
@@ -925,7 +940,7 @@ function completeListValue(
|
|
|
925
940
|
info: GraphQLResolveInfo,
|
|
926
941
|
path: ResponsePath,
|
|
927
942
|
result: mixed,
|
|
928
|
-
):
|
|
943
|
+
): PromiseOrValue<$ReadOnlyArray<mixed>> {
|
|
929
944
|
invariant(
|
|
930
945
|
isCollection(result),
|
|
931
946
|
`Expected Iterable, but did not find one for field ${
|
|
@@ -987,10 +1002,10 @@ function completeAbstractValue(
|
|
|
987
1002
|
info: GraphQLResolveInfo,
|
|
988
1003
|
path: ResponsePath,
|
|
989
1004
|
result: mixed,
|
|
990
|
-
):
|
|
991
|
-
const
|
|
992
|
-
|
|
993
|
-
|
|
1005
|
+
): PromiseOrValue<ObjMap<mixed>> {
|
|
1006
|
+
const resolveTypeFn = returnType.resolveType || exeContext.typeResolver;
|
|
1007
|
+
const contextValue = exeContext.contextValue;
|
|
1008
|
+
const runtimeType = resolveTypeFn(result, contextValue, info, returnType);
|
|
994
1009
|
|
|
995
1010
|
if (isPromise(runtimeType)) {
|
|
996
1011
|
return runtimeType.then(resolvedRuntimeType =>
|
|
@@ -1074,7 +1089,7 @@ function completeObjectValue(
|
|
|
1074
1089
|
info: GraphQLResolveInfo,
|
|
1075
1090
|
path: ResponsePath,
|
|
1076
1091
|
result: mixed,
|
|
1077
|
-
):
|
|
1092
|
+
): PromiseOrValue<ObjMap<mixed>> {
|
|
1078
1093
|
// If there is an isTypeOf predicate function, call it with the
|
|
1079
1094
|
// current result. If isTypeOf returns false, then raise an error rather
|
|
1080
1095
|
// than continuing execution.
|
|
@@ -1127,7 +1142,7 @@ function collectAndExecuteSubfields(
|
|
|
1127
1142
|
fieldNodes: $ReadOnlyArray<FieldNode>,
|
|
1128
1143
|
path: ResponsePath,
|
|
1129
1144
|
result: mixed,
|
|
1130
|
-
):
|
|
1145
|
+
): PromiseOrValue<ObjMap<mixed>> {
|
|
1131
1146
|
// Collect sub-fields to execute to complete this value.
|
|
1132
1147
|
const subFieldNodes = collectSubfields(exeContext, returnType, fieldNodes);
|
|
1133
1148
|
return executeFields(exeContext, returnType, result, path, subFieldNodes);
|
|
@@ -1171,12 +1186,12 @@ function _collectSubfields(
|
|
|
1171
1186
|
* Otherwise, test each possible type for the abstract type by calling
|
|
1172
1187
|
* isTypeOf for the object being coerced, returning the first type that matches.
|
|
1173
1188
|
*/
|
|
1174
|
-
function
|
|
1175
|
-
value
|
|
1176
|
-
contextValue
|
|
1177
|
-
info
|
|
1178
|
-
abstractType
|
|
1179
|
-
)
|
|
1189
|
+
export const defaultTypeResolver: GraphQLTypeResolver<any, *> = function(
|
|
1190
|
+
value,
|
|
1191
|
+
contextValue,
|
|
1192
|
+
info,
|
|
1193
|
+
abstractType,
|
|
1194
|
+
) {
|
|
1180
1195
|
// First, look for `__typename`.
|
|
1181
1196
|
if (
|
|
1182
1197
|
value !== null &&
|
|
@@ -1213,7 +1228,7 @@ function defaultResolveTypeFn(
|
|
|
1213
1228
|
}
|
|
1214
1229
|
});
|
|
1215
1230
|
}
|
|
1216
|
-
}
|
|
1231
|
+
};
|
|
1217
1232
|
|
|
1218
1233
|
/**
|
|
1219
1234
|
* If a resolve function is not given, then a default resolve behavior is used
|
package/execution/execute.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Copyright (c)
|
|
4
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
5
5
|
*
|
|
6
6
|
* This source code is licensed under the MIT license found in the
|
|
7
7
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -27,18 +27,18 @@ import { isObjectType, isAbstractType, isLeafType, isListType, isNonNullType } f
|
|
|
27
27
|
import { SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef } from '../type/introspection';
|
|
28
28
|
import { GraphQLIncludeDirective, GraphQLSkipDirective } from '../type/directives';
|
|
29
29
|
import { assertValidSchema } from '../type/validate';
|
|
30
|
-
export function execute(argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver) {
|
|
30
|
+
export function execute(argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver) {
|
|
31
31
|
/* eslint-enable no-redeclare */
|
|
32
32
|
// Extract arguments from object args if provided.
|
|
33
|
-
return arguments.length === 1 ? executeImpl(argsOrSchema.schema, argsOrSchema.document, argsOrSchema.rootValue, argsOrSchema.contextValue, argsOrSchema.variableValues, argsOrSchema.operationName, argsOrSchema.fieldResolver) : executeImpl(argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver);
|
|
33
|
+
return arguments.length === 1 ? executeImpl(argsOrSchema.schema, argsOrSchema.document, argsOrSchema.rootValue, argsOrSchema.contextValue, argsOrSchema.variableValues, argsOrSchema.operationName, argsOrSchema.fieldResolver, argsOrSchema.typeResolver) : executeImpl(argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
function executeImpl(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver) {
|
|
36
|
+
function executeImpl(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver) {
|
|
37
37
|
// If arguments are missing or incorrect, throw an error.
|
|
38
38
|
assertValidExecutionArguments(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments,
|
|
39
39
|
// a "Response" with only errors is returned.
|
|
40
40
|
|
|
41
|
-
var exeContext = buildExecutionContext(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver); // Return early errors if execution context failed.
|
|
41
|
+
var exeContext = buildExecutionContext(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, typeResolver); // Return early errors if execution context failed.
|
|
42
42
|
|
|
43
43
|
if (Array.isArray(exeContext)) {
|
|
44
44
|
return {
|
|
@@ -123,7 +123,7 @@ export function assertValidExecutionArguments(schema, document, rawVariableValue
|
|
|
123
123
|
* Throws a GraphQLError if a valid execution context cannot be created.
|
|
124
124
|
*/
|
|
125
125
|
|
|
126
|
-
export function buildExecutionContext(schema, document, rootValue, contextValue, rawVariableValues, operationName, fieldResolver) {
|
|
126
|
+
export function buildExecutionContext(schema, document, rootValue, contextValue, rawVariableValues, operationName, fieldResolver, typeResolver) {
|
|
127
127
|
var errors = [];
|
|
128
128
|
var operation;
|
|
129
129
|
var hasMultipleAssumedOperations = false;
|
|
@@ -184,6 +184,7 @@ export function buildExecutionContext(schema, document, rootValue, contextValue,
|
|
|
184
184
|
operation: operation,
|
|
185
185
|
variableValues: variableValues,
|
|
186
186
|
fieldResolver: fieldResolver || defaultFieldResolver,
|
|
187
|
+
typeResolver: typeResolver || defaultTypeResolver,
|
|
187
188
|
errors: errors
|
|
188
189
|
};
|
|
189
190
|
}
|
|
@@ -294,43 +295,49 @@ export function collectFields(exeContext, runtimeType, selectionSet, fields, vis
|
|
|
294
295
|
|
|
295
296
|
switch (selection.kind) {
|
|
296
297
|
case Kind.FIELD:
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
298
|
+
{
|
|
299
|
+
if (!shouldIncludeNode(exeContext, selection)) {
|
|
300
|
+
continue;
|
|
301
|
+
}
|
|
300
302
|
|
|
301
|
-
|
|
303
|
+
var name = getFieldEntryKey(selection);
|
|
302
304
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
305
|
+
if (!fields[name]) {
|
|
306
|
+
fields[name] = [];
|
|
307
|
+
}
|
|
306
308
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
+
fields[name].push(selection);
|
|
310
|
+
break;
|
|
311
|
+
}
|
|
309
312
|
|
|
310
313
|
case Kind.INLINE_FRAGMENT:
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
+
{
|
|
315
|
+
if (!shouldIncludeNode(exeContext, selection) || !doesFragmentConditionMatch(exeContext, selection, runtimeType)) {
|
|
316
|
+
continue;
|
|
317
|
+
}
|
|
314
318
|
|
|
315
|
-
|
|
316
|
-
|
|
319
|
+
collectFields(exeContext, runtimeType, selection.selectionSet, fields, visitedFragmentNames);
|
|
320
|
+
break;
|
|
321
|
+
}
|
|
317
322
|
|
|
318
323
|
case Kind.FRAGMENT_SPREAD:
|
|
319
|
-
|
|
324
|
+
{
|
|
325
|
+
var fragName = selection.name.value;
|
|
320
326
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
327
|
+
if (visitedFragmentNames[fragName] || !shouldIncludeNode(exeContext, selection)) {
|
|
328
|
+
continue;
|
|
329
|
+
}
|
|
324
330
|
|
|
325
|
-
|
|
326
|
-
|
|
331
|
+
visitedFragmentNames[fragName] = true;
|
|
332
|
+
var fragment = exeContext.fragments[fragName];
|
|
327
333
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
334
|
+
if (!fragment || !doesFragmentConditionMatch(exeContext, fragment, runtimeType)) {
|
|
335
|
+
continue;
|
|
336
|
+
}
|
|
331
337
|
|
|
332
|
-
|
|
333
|
-
|
|
338
|
+
collectFields(exeContext, runtimeType, fragment.selectionSet, fields, visitedFragmentNames);
|
|
339
|
+
break;
|
|
340
|
+
}
|
|
334
341
|
}
|
|
335
342
|
}
|
|
336
343
|
|
|
@@ -450,7 +457,11 @@ export function resolveFieldValueOrError(exeContext, fieldDef, fieldNodes, resol
|
|
|
450
457
|
// consistent Error interface.
|
|
451
458
|
|
|
452
459
|
function asErrorInstance(error) {
|
|
453
|
-
|
|
460
|
+
if (error instanceof Error) {
|
|
461
|
+
return error;
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
return new Error('Unexpected error value: ' + inspect(error));
|
|
454
465
|
} // This is a small wrapper around completeValue which detects and logs errors
|
|
455
466
|
// in the execution context.
|
|
456
467
|
|
|
@@ -565,7 +576,7 @@ function completeValue(exeContext, returnType, fieldNodes, info, path, result) {
|
|
|
565
576
|
/* istanbul ignore next */
|
|
566
577
|
|
|
567
578
|
|
|
568
|
-
throw new Error("Cannot complete value of unexpected type \"".concat(inspect(returnType), "\"."));
|
|
579
|
+
throw new Error("Cannot complete value of unexpected output type: \"".concat(inspect(returnType), "\"."));
|
|
569
580
|
}
|
|
570
581
|
/**
|
|
571
582
|
* Complete a list value by completing each item in the list with the
|
|
@@ -617,7 +628,9 @@ function completeLeafValue(returnType, result) {
|
|
|
617
628
|
|
|
618
629
|
|
|
619
630
|
function completeAbstractValue(exeContext, returnType, fieldNodes, info, path, result) {
|
|
620
|
-
var
|
|
631
|
+
var resolveTypeFn = returnType.resolveType || exeContext.typeResolver;
|
|
632
|
+
var contextValue = exeContext.contextValue;
|
|
633
|
+
var runtimeType = resolveTypeFn(result, contextValue, info, returnType);
|
|
621
634
|
|
|
622
635
|
if (isPromise(runtimeType)) {
|
|
623
636
|
return runtimeType.then(function (resolvedRuntimeType) {
|
|
@@ -715,7 +728,7 @@ function _collectSubfields(exeContext, returnType, fieldNodes) {
|
|
|
715
728
|
*/
|
|
716
729
|
|
|
717
730
|
|
|
718
|
-
function
|
|
731
|
+
export var defaultTypeResolver = function defaultTypeResolver(value, contextValue, info, abstractType) {
|
|
719
732
|
// First, look for `__typename`.
|
|
720
733
|
if (value !== null && _typeof(value) === 'object' && typeof value.__typename === 'string') {
|
|
721
734
|
return value.__typename;
|
|
@@ -748,7 +761,7 @@ function defaultResolveTypeFn(value, contextValue, info, abstractType) {
|
|
|
748
761
|
}
|
|
749
762
|
});
|
|
750
763
|
}
|
|
751
|
-
}
|
|
764
|
+
};
|
|
752
765
|
/**
|
|
753
766
|
* If a resolve function is not given, then a default resolve behavior is used
|
|
754
767
|
* which takes the property of the source object of the same name as the field
|
|
@@ -756,7 +769,6 @@ function defaultResolveTypeFn(value, contextValue, info, abstractType) {
|
|
|
756
769
|
* of calling that function while passing along args and context value.
|
|
757
770
|
*/
|
|
758
771
|
|
|
759
|
-
|
|
760
772
|
export var defaultFieldResolver = function defaultFieldResolver(source, args, contextValue, info) {
|
|
761
773
|
// ensure source is a value for which property access is acceptable.
|
|
762
774
|
if (_typeof(source) === 'object' || typeof source === 'function') {
|
|
@@ -789,4 +801,4 @@ export function getFieldDef(schema, parentType, fieldName) {
|
|
|
789
801
|
}
|
|
790
802
|
|
|
791
803
|
return parentType.getFields()[fieldName];
|
|
792
|
-
}
|
|
804
|
+
}
|
package/execution/index.js
CHANGED
|
@@ -15,6 +15,12 @@ Object.defineProperty(exports, "defaultFieldResolver", {
|
|
|
15
15
|
return _execute.defaultFieldResolver;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
+
Object.defineProperty(exports, "defaultTypeResolver", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function get() {
|
|
21
|
+
return _execute.defaultTypeResolver;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
18
24
|
Object.defineProperty(exports, "responsePathAsArray", {
|
|
19
25
|
enumerable: true,
|
|
20
26
|
get: function get() {
|
|
@@ -30,4 +36,4 @@ Object.defineProperty(exports, "getDirectiveValues", {
|
|
|
30
36
|
|
|
31
37
|
var _execute = require("./execute");
|
|
32
38
|
|
|
33
|
-
var _values = require("./values");
|
|
39
|
+
var _values = require("./values");
|
package/execution/index.js.flow
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -7,7 +7,12 @@
|
|
|
7
7
|
* @flow strict
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
export {
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
export {
|
|
11
|
+
execute,
|
|
12
|
+
defaultFieldResolver,
|
|
13
|
+
defaultTypeResolver,
|
|
14
|
+
responsePathAsArray,
|
|
15
|
+
} from './execute';
|
|
13
16
|
export type { ExecutionArgs, ExecutionResult } from './execute';
|
|
17
|
+
|
|
18
|
+
export { getDirectiveValues } from './values';
|
package/execution/index.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
7
|
*
|
|
8
8
|
*/
|
|
9
|
-
export { execute, defaultFieldResolver, responsePathAsArray } from './execute';
|
|
10
|
-
export { getDirectiveValues } from './values';
|
|
9
|
+
export { execute, defaultFieldResolver, defaultTypeResolver, responsePathAsArray } from './execute';
|
|
10
|
+
export { getDirectiveValues } from './values';
|
package/execution/values.js
CHANGED
|
@@ -32,7 +32,7 @@ var _definition = require("../type/definition");
|
|
|
32
32
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
|
-
* Copyright (c)
|
|
35
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
36
36
|
*
|
|
37
37
|
* This source code is licensed under the MIT license found in the
|
|
38
38
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -61,7 +61,7 @@ function getVariableValues(schema, varDefNodes, inputs) {
|
|
|
61
61
|
if (!(0, _definition.isInputType)(varType)) {
|
|
62
62
|
// Must use input types for variables. This should be caught during
|
|
63
63
|
// validation, however is checked again here for safety.
|
|
64
|
-
errors.push(new _GraphQLError.GraphQLError("Variable \"$".concat(varName, "\" expected value of type ") + "\"".concat((0, _printer.print)(varDefNode.type), "\" which cannot be used as an input type."),
|
|
64
|
+
errors.push(new _GraphQLError.GraphQLError("Variable \"$".concat(varName, "\" expected value of type ") + "\"".concat((0, _printer.print)(varDefNode.type), "\" which cannot be used as an input type."), varDefNode.type));
|
|
65
65
|
} else {
|
|
66
66
|
var hasValue = hasOwnProperty(inputs, varName);
|
|
67
67
|
var value = hasValue ? inputs[varName] : undefined;
|
|
@@ -73,7 +73,7 @@ function getVariableValues(schema, varDefNodes, inputs) {
|
|
|
73
73
|
} else if ((!hasValue || value === null) && (0, _definition.isNonNullType)(varType)) {
|
|
74
74
|
// If no value or a nullish value was provided to a variable with a
|
|
75
75
|
// non-null type (required), produce an error.
|
|
76
|
-
errors.push(new _GraphQLError.GraphQLError(hasValue ? "Variable \"$".concat(varName, "\" of non-null type ") + "\"".concat((0, _inspect.default)(varType), "\" must not be null.") : "Variable \"$".concat(varName, "\" of required type ") + "\"".concat((0, _inspect.default)(varType), "\" was not provided."),
|
|
76
|
+
errors.push(new _GraphQLError.GraphQLError(hasValue ? "Variable \"$".concat(varName, "\" of non-null type ") + "\"".concat((0, _inspect.default)(varType), "\" must not be null.") : "Variable \"$".concat(varName, "\" of required type ") + "\"".concat((0, _inspect.default)(varType), "\" was not provided."), varDefNode));
|
|
77
77
|
} else if (hasValue) {
|
|
78
78
|
if (value === null) {
|
|
79
79
|
// If the explicit value `null` was provided, an entry in the coerced
|
|
@@ -160,11 +160,11 @@ function getArgumentValues(def, node, variableValues) {
|
|
|
160
160
|
|
|
161
161
|
if (argumentNode && argumentNode.value.kind === _kinds.Kind.VARIABLE) {
|
|
162
162
|
var variableName = argumentNode.value.name.value;
|
|
163
|
-
hasValue = variableValues && hasOwnProperty(variableValues, variableName);
|
|
164
|
-
isNull = variableValues && variableValues[variableName] === null;
|
|
163
|
+
hasValue = variableValues != null && hasOwnProperty(variableValues, variableName);
|
|
164
|
+
isNull = variableValues != null && variableValues[variableName] === null;
|
|
165
165
|
} else {
|
|
166
166
|
hasValue = argumentNode != null;
|
|
167
|
-
isNull = argumentNode && argumentNode.value.kind === _kinds.Kind.NULL;
|
|
167
|
+
isNull = argumentNode != null && argumentNode.value.kind === _kinds.Kind.NULL;
|
|
168
168
|
}
|
|
169
169
|
|
|
170
170
|
if (!hasValue && argDef.defaultValue !== undefined) {
|
|
@@ -175,12 +175,12 @@ function getArgumentValues(def, node, variableValues) {
|
|
|
175
175
|
// If no argument or a null value was provided to an argument with a
|
|
176
176
|
// non-null type (required), produce a field error.
|
|
177
177
|
if (isNull) {
|
|
178
|
-
throw new _GraphQLError.GraphQLError("Argument \"".concat(name, "\" of non-null type \"").concat((0, _inspect.default)(argType), "\" ") + 'must not be null.',
|
|
178
|
+
throw new _GraphQLError.GraphQLError("Argument \"".concat(name, "\" of non-null type \"").concat((0, _inspect.default)(argType), "\" ") + 'must not be null.', argumentNode.value);
|
|
179
179
|
} else if (argumentNode && argumentNode.value.kind === _kinds.Kind.VARIABLE) {
|
|
180
180
|
var _variableName = argumentNode.value.name.value;
|
|
181
|
-
throw new _GraphQLError.GraphQLError("Argument \"".concat(name, "\" of required type \"").concat((0, _inspect.default)(argType), "\" ") + "was provided the variable \"$".concat(_variableName, "\" ") + 'which was not provided a runtime value.',
|
|
181
|
+
throw new _GraphQLError.GraphQLError("Argument \"".concat(name, "\" of required type \"").concat((0, _inspect.default)(argType), "\" ") + "was provided the variable \"$".concat(_variableName, "\" ") + 'which was not provided a runtime value.', argumentNode.value);
|
|
182
182
|
} else {
|
|
183
|
-
throw new _GraphQLError.GraphQLError("Argument \"".concat(name, "\" of required type \"").concat((0, _inspect.default)(argType), "\" ") + 'was not provided.',
|
|
183
|
+
throw new _GraphQLError.GraphQLError("Argument \"".concat(name, "\" of required type \"").concat((0, _inspect.default)(argType), "\" ") + 'was not provided.', node);
|
|
184
184
|
}
|
|
185
185
|
} else if (hasValue) {
|
|
186
186
|
if (argumentNode.value.kind === _kinds.Kind.NULL) {
|
|
@@ -202,7 +202,7 @@ function getArgumentValues(def, node, variableValues) {
|
|
|
202
202
|
// Note: ValuesOfCorrectType validation should catch this before
|
|
203
203
|
// execution. This is a runtime check to ensure execution does not
|
|
204
204
|
// continue with an invalid argument value.
|
|
205
|
-
throw new _GraphQLError.GraphQLError("Argument \"".concat(name, "\" has invalid value ").concat((0, _printer.print)(valueNode), "."),
|
|
205
|
+
throw new _GraphQLError.GraphQLError("Argument \"".concat(name, "\" has invalid value ").concat((0, _printer.print)(valueNode), "."), argumentNode.value);
|
|
206
206
|
}
|
|
207
207
|
|
|
208
208
|
coercedValues[name] = coercedValue;
|
|
@@ -237,4 +237,4 @@ function getDirectiveValues(directiveDef, node, variableValues) {
|
|
|
237
237
|
|
|
238
238
|
function hasOwnProperty(obj, prop) {
|
|
239
239
|
return Object.prototype.hasOwnProperty.call(obj, prop);
|
|
240
|
-
}
|
|
240
|
+
}
|