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.
|
|
@@ -7,12 +7,13 @@
|
|
|
7
7
|
*
|
|
8
8
|
*/
|
|
9
9
|
import objectValues from '../polyfills/objectValues';
|
|
10
|
+
import inspect from '../jsutils/inspect';
|
|
10
11
|
import invariant from '../jsutils/invariant';
|
|
11
12
|
import keyMap from '../jsutils/keyMap';
|
|
12
13
|
import keyValMap from '../jsutils/keyValMap';
|
|
13
14
|
import { valueFromAST } from './valueFromAST';
|
|
14
15
|
import { assertValidSDL } from '../validation/validate';
|
|
15
|
-
import
|
|
16
|
+
import { dedentBlockStringValue } from '../language/blockString';
|
|
16
17
|
import { TokenKind } from '../language/lexer';
|
|
17
18
|
import { parse } from '../language/parser';
|
|
18
19
|
import { getDirectiveValues } from '../execution/values';
|
|
@@ -48,7 +49,7 @@ export function buildASTSchema(documentAST, options) {
|
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
var schemaDef;
|
|
51
|
-
var
|
|
52
|
+
var typeDefs = [];
|
|
52
53
|
var directiveDefs = [];
|
|
53
54
|
var _iteratorNormalCompletion = true;
|
|
54
55
|
var _didIteratorError = false;
|
|
@@ -61,7 +62,7 @@ export function buildASTSchema(documentAST, options) {
|
|
|
61
62
|
if (def.kind === Kind.SCHEMA_DEFINITION) {
|
|
62
63
|
schemaDef = def;
|
|
63
64
|
} else if (isTypeDefinitionNode(def)) {
|
|
64
|
-
|
|
65
|
+
typeDefs.push(def);
|
|
65
66
|
} else if (def.kind === Kind.DIRECTIVE_DEFINITION) {
|
|
66
67
|
directiveDefs.push(def);
|
|
67
68
|
}
|
|
@@ -81,16 +82,21 @@ export function buildASTSchema(documentAST, options) {
|
|
|
81
82
|
}
|
|
82
83
|
}
|
|
83
84
|
|
|
85
|
+
var astBuilder = new ASTDefinitionBuilder(options, function (typeName) {
|
|
86
|
+
var type = typeMap[typeName];
|
|
87
|
+
!type ? invariant(0, "Type \"".concat(typeName, "\" not found in document.")) : void 0;
|
|
88
|
+
return type;
|
|
89
|
+
});
|
|
90
|
+
var typeMap = keyByNameNode(typeDefs, function (node) {
|
|
91
|
+
return astBuilder.buildType(node);
|
|
92
|
+
});
|
|
84
93
|
var operationTypes = schemaDef ? getOperationTypes(schemaDef) : {
|
|
85
|
-
query:
|
|
86
|
-
mutation:
|
|
87
|
-
subscription:
|
|
94
|
+
query: 'Query',
|
|
95
|
+
mutation: 'Mutation',
|
|
96
|
+
subscription: 'Subscription'
|
|
88
97
|
};
|
|
89
|
-
var definitionBuilder = new ASTDefinitionBuilder(nodeMap, options, function (typeName) {
|
|
90
|
-
throw new Error("Type \"".concat(typeName, "\" not found in document."));
|
|
91
|
-
});
|
|
92
98
|
var directives = directiveDefs.map(function (def) {
|
|
93
|
-
return
|
|
99
|
+
return astBuilder.buildDirective(def);
|
|
94
100
|
}); // If specified directives were not explicitly declared, add them.
|
|
95
101
|
|
|
96
102
|
if (!directives.some(function (directive) {
|
|
@@ -109,18 +115,16 @@ export function buildASTSchema(documentAST, options) {
|
|
|
109
115
|
return directive.name === 'deprecated';
|
|
110
116
|
})) {
|
|
111
117
|
directives.push(GraphQLDeprecatedDirective);
|
|
112
|
-
}
|
|
113
|
-
// typed values below, that would throw immediately while type system
|
|
114
|
-
// validation with validateSchema() will produce more actionable results.
|
|
115
|
-
|
|
118
|
+
}
|
|
116
119
|
|
|
117
120
|
return new GraphQLSchema({
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
121
|
+
// Note: While this could make early assertions to get the correctly
|
|
122
|
+
// typed values below, that would throw immediately while type system
|
|
123
|
+
// validation with validateSchema() will produce more actionable results.
|
|
124
|
+
query: operationTypes.query ? typeMap[operationTypes.query] : null,
|
|
125
|
+
mutation: operationTypes.mutation ? typeMap[operationTypes.mutation] : null,
|
|
126
|
+
subscription: operationTypes.subscription ? typeMap[operationTypes.subscription] : null,
|
|
127
|
+
types: objectValues(typeMap),
|
|
124
128
|
directives: directives,
|
|
125
129
|
astNode: schemaDef,
|
|
126
130
|
assumeValid: options && options.assumeValid,
|
|
@@ -136,7 +140,7 @@ export function buildASTSchema(documentAST, options) {
|
|
|
136
140
|
try {
|
|
137
141
|
for (var _iterator2 = schema.operationTypes[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
|
|
138
142
|
var operationType = _step2.value;
|
|
139
|
-
opTypes[operationType.operation] = operationType.type;
|
|
143
|
+
opTypes[operationType.operation] = operationType.type.name.value;
|
|
140
144
|
}
|
|
141
145
|
} catch (err) {
|
|
142
146
|
_didIteratorError2 = true;
|
|
@@ -156,47 +160,34 @@ export function buildASTSchema(documentAST, options) {
|
|
|
156
160
|
return opTypes;
|
|
157
161
|
}
|
|
158
162
|
}
|
|
163
|
+
var stdTypeMap = keyMap(specifiedScalarTypes.concat(introspectionTypes), function (type) {
|
|
164
|
+
return type.name;
|
|
165
|
+
});
|
|
159
166
|
export var ASTDefinitionBuilder =
|
|
160
167
|
/*#__PURE__*/
|
|
161
168
|
function () {
|
|
162
|
-
function ASTDefinitionBuilder(
|
|
163
|
-
this._typeDefinitionsMap = typeDefinitionsMap;
|
|
169
|
+
function ASTDefinitionBuilder(options, resolveType) {
|
|
164
170
|
this._options = options;
|
|
165
|
-
this._resolveType = resolveType;
|
|
166
|
-
|
|
167
|
-
this._cache = keyMap(specifiedScalarTypes.concat(introspectionTypes), function (type) {
|
|
168
|
-
return type.name;
|
|
169
|
-
});
|
|
171
|
+
this._resolveType = resolveType;
|
|
170
172
|
}
|
|
171
173
|
|
|
172
174
|
var _proto = ASTDefinitionBuilder.prototype;
|
|
173
175
|
|
|
174
|
-
_proto.
|
|
175
|
-
var
|
|
176
|
-
|
|
177
|
-
if (!this._cache[typeName]) {
|
|
178
|
-
if (node.kind === Kind.NAMED_TYPE) {
|
|
179
|
-
var defNode = this._typeDefinitionsMap[typeName];
|
|
180
|
-
this._cache[typeName] = defNode ? this._makeSchemaDef(defNode) : this._resolveType(node.name.value);
|
|
181
|
-
} else {
|
|
182
|
-
this._cache[typeName] = this._makeSchemaDef(node);
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
return this._cache[typeName];
|
|
176
|
+
_proto.getNamedType = function getNamedType(node) {
|
|
177
|
+
var name = node.name.value;
|
|
178
|
+
return stdTypeMap[name] || this._resolveType(name);
|
|
187
179
|
};
|
|
188
180
|
|
|
189
|
-
_proto.
|
|
190
|
-
if (
|
|
191
|
-
return GraphQLList(this.
|
|
181
|
+
_proto.getWrappedType = function getWrappedType(node) {
|
|
182
|
+
if (node.kind === Kind.LIST_TYPE) {
|
|
183
|
+
return new GraphQLList(this.getWrappedType(node.type));
|
|
192
184
|
}
|
|
193
185
|
|
|
194
|
-
if (
|
|
195
|
-
return GraphQLNonNull(
|
|
196
|
-
this._buildWrappedType(typeNode.type));
|
|
186
|
+
if (node.kind === Kind.NON_NULL_TYPE) {
|
|
187
|
+
return new GraphQLNonNull(this.getWrappedType(node.type));
|
|
197
188
|
}
|
|
198
189
|
|
|
199
|
-
return this.
|
|
190
|
+
return this.getNamedType(node);
|
|
200
191
|
};
|
|
201
192
|
|
|
202
193
|
_proto.buildDirective = function buildDirective(directive) {
|
|
@@ -224,7 +215,7 @@ function () {
|
|
|
224
215
|
// Note: While this could make assertions to get the correctly typed
|
|
225
216
|
// value, that would throw immediately while type system validation
|
|
226
217
|
// with validateSchema() will produce more actionable results.
|
|
227
|
-
type: this.
|
|
218
|
+
type: this.getWrappedType(field.type),
|
|
228
219
|
description: getDescription(field, this._options),
|
|
229
220
|
args: keyByNameNode(field.arguments || [], function (arg) {
|
|
230
221
|
return _this2.buildArg(arg);
|
|
@@ -237,8 +228,8 @@ function () {
|
|
|
237
228
|
_proto.buildArg = function buildArg(value) {
|
|
238
229
|
// Note: While this could make assertions to get the correctly typed
|
|
239
230
|
// value, that would throw immediately while type system validation
|
|
240
|
-
|
|
241
|
-
|
|
231
|
+
// with validateSchema() will produce more actionable results.
|
|
232
|
+
var type = this.getWrappedType(value.type);
|
|
242
233
|
return {
|
|
243
234
|
type: type,
|
|
244
235
|
description: getDescription(value, this._options),
|
|
@@ -250,8 +241,8 @@ function () {
|
|
|
250
241
|
_proto.buildInputField = function buildInputField(value) {
|
|
251
242
|
// Note: While this could make assertions to get the correctly typed
|
|
252
243
|
// value, that would throw immediately while type system validation
|
|
253
|
-
|
|
254
|
-
|
|
244
|
+
// with validateSchema() will produce more actionable results.
|
|
245
|
+
var type = this.getWrappedType(value.type);
|
|
255
246
|
return {
|
|
256
247
|
type: type,
|
|
257
248
|
description: getDescription(value, this._options),
|
|
@@ -268,7 +259,13 @@ function () {
|
|
|
268
259
|
};
|
|
269
260
|
};
|
|
270
261
|
|
|
271
|
-
_proto.
|
|
262
|
+
_proto.buildType = function buildType(astNode) {
|
|
263
|
+
var name = astNode.name.value;
|
|
264
|
+
|
|
265
|
+
if (stdTypeMap[name]) {
|
|
266
|
+
return stdTypeMap[name];
|
|
267
|
+
}
|
|
268
|
+
|
|
272
269
|
switch (astNode.kind) {
|
|
273
270
|
case Kind.OBJECT_TYPE_DEFINITION:
|
|
274
271
|
return this._makeTypeDef(astNode);
|
|
@@ -287,10 +284,12 @@ function () {
|
|
|
287
284
|
|
|
288
285
|
case Kind.INPUT_OBJECT_TYPE_DEFINITION:
|
|
289
286
|
return this._makeInputObjectDef(astNode);
|
|
287
|
+
} // Not reachable. All possible type definition nodes have been considered.
|
|
290
288
|
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
289
|
+
/* istanbul ignore next */
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
throw new Error("Unexpected type definition node: \"".concat(inspect(astNode), "\"."));
|
|
294
293
|
};
|
|
295
294
|
|
|
296
295
|
_proto._makeTypeDef = function _makeTypeDef(astNode) {
|
|
@@ -303,7 +302,7 @@ function () {
|
|
|
303
302
|
|
|
304
303
|
var interfaces = interfaceNodes && interfaceNodes.length > 0 ? function () {
|
|
305
304
|
return interfaceNodes.map(function (ref) {
|
|
306
|
-
return _this3.
|
|
305
|
+
return _this3.getNamedType(ref);
|
|
307
306
|
});
|
|
308
307
|
} : [];
|
|
309
308
|
var fields = fieldNodes && fieldNodes.length > 0 ? function () {
|
|
@@ -360,7 +359,7 @@ function () {
|
|
|
360
359
|
|
|
361
360
|
var types = typeNodes && typeNodes.length > 0 ? function () {
|
|
362
361
|
return typeNodes.map(function (ref) {
|
|
363
|
-
return _this6.
|
|
362
|
+
return _this6.getNamedType(ref);
|
|
364
363
|
});
|
|
365
364
|
} : [];
|
|
366
365
|
return new GraphQLUnionType({
|
|
@@ -438,7 +437,7 @@ export function getDescription(node, options) {
|
|
|
438
437
|
var rawValue = getLeadingCommentBlock(node);
|
|
439
438
|
|
|
440
439
|
if (rawValue !== undefined) {
|
|
441
|
-
return
|
|
440
|
+
return dedentBlockStringValue('\n' + rawValue);
|
|
442
441
|
}
|
|
443
442
|
}
|
|
444
443
|
}
|
|
@@ -469,4 +468,4 @@ function getLeadingCommentBlock(node) {
|
|
|
469
468
|
|
|
470
469
|
export function buildSchema(source, options) {
|
|
471
470
|
return buildASTSchema(parse(source, options), options);
|
|
472
|
-
}
|
|
471
|
+
}
|
|
@@ -5,12 +5,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.buildClientSchema = buildClientSchema;
|
|
7
7
|
|
|
8
|
+
var _objectValues = _interopRequireDefault(require("../polyfills/objectValues"));
|
|
9
|
+
|
|
8
10
|
var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
|
|
9
11
|
|
|
10
12
|
var _invariant = _interopRequireDefault(require("../jsutils/invariant"));
|
|
11
13
|
|
|
12
|
-
var _keyMap = _interopRequireDefault(require("../jsutils/keyMap"));
|
|
13
|
-
|
|
14
14
|
var _keyValMap = _interopRequireDefault(require("../jsutils/keyValMap"));
|
|
15
15
|
|
|
16
16
|
var _valueFromAST = require("./valueFromAST");
|
|
@@ -30,7 +30,7 @@ var _scalars = require("../type/scalars");
|
|
|
30
30
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
|
-
* Copyright (c)
|
|
33
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
34
34
|
*
|
|
35
35
|
* This source code is licensed under the MIT license found in the
|
|
36
36
|
* LICENSE file in the root directory of this source tree.
|
|
@@ -52,16 +52,38 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
52
52
|
*/
|
|
53
53
|
function buildClientSchema(introspection, options) {
|
|
54
54
|
// Get the schema from the introspection result.
|
|
55
|
-
var schemaIntrospection = introspection.__schema; //
|
|
55
|
+
var schemaIntrospection = introspection.__schema; // Iterate through all types, getting the type definition for each.
|
|
56
|
+
|
|
57
|
+
var typeMap = (0, _keyValMap.default)(schemaIntrospection.types, function (typeIntrospection) {
|
|
58
|
+
return typeIntrospection.name;
|
|
59
|
+
}, function (typeIntrospection) {
|
|
60
|
+
return buildType(typeIntrospection);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
for (var _i = 0, _arr = [].concat(_scalars.specifiedScalarTypes, _introspection.introspectionTypes); _i < _arr.length; _i++) {
|
|
64
|
+
var stdType = _arr[_i];
|
|
65
|
+
|
|
66
|
+
if (typeMap[stdType.name]) {
|
|
67
|
+
typeMap[stdType.name] = stdType;
|
|
68
|
+
}
|
|
69
|
+
} // Get the root Query, Mutation, and Subscription types.
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
var queryType = schemaIntrospection.queryType ? getObjectType(schemaIntrospection.queryType) : null;
|
|
73
|
+
var mutationType = schemaIntrospection.mutationType ? getObjectType(schemaIntrospection.mutationType) : null;
|
|
74
|
+
var subscriptionType = schemaIntrospection.subscriptionType ? getObjectType(schemaIntrospection.subscriptionType) : null; // Get the directives supported by Introspection, assuming empty-set if
|
|
75
|
+
// directives were not queried for.
|
|
56
76
|
|
|
57
|
-
var
|
|
58
|
-
return type.name;
|
|
59
|
-
}); // A cache to use to store the actual GraphQLType definition objects by name.
|
|
60
|
-
// Initialize to the GraphQL built in scalars. All functions below are inline
|
|
61
|
-
// so that this type def cache is within the scope of the closure.
|
|
77
|
+
var directives = schemaIntrospection.directives ? schemaIntrospection.directives.map(buildDirective) : []; // Then produce and return a Schema with these types.
|
|
62
78
|
|
|
63
|
-
|
|
64
|
-
|
|
79
|
+
return new _schema.GraphQLSchema({
|
|
80
|
+
query: queryType,
|
|
81
|
+
mutation: mutationType,
|
|
82
|
+
subscription: subscriptionType,
|
|
83
|
+
types: (0, _objectValues.default)(typeMap),
|
|
84
|
+
directives: directives,
|
|
85
|
+
assumeValid: options && options.assumeValid,
|
|
86
|
+
allowedLegacyNames: options && options.allowedLegacyNames
|
|
65
87
|
}); // Given a type reference in introspection, return the GraphQLType instance.
|
|
66
88
|
// preferring cached instances before building new instances.
|
|
67
89
|
|
|
@@ -95,19 +117,13 @@ function buildClientSchema(introspection, options) {
|
|
|
95
117
|
}
|
|
96
118
|
|
|
97
119
|
function getNamedType(typeName) {
|
|
98
|
-
|
|
99
|
-
return typeDefCache[typeName];
|
|
100
|
-
}
|
|
120
|
+
var type = typeMap[typeName];
|
|
101
121
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
if (!typeIntrospection) {
|
|
122
|
+
if (!type) {
|
|
105
123
|
throw new Error("Invalid or incomplete schema, unknown type: ".concat(typeName, ". Ensure ") + 'that a full introspection query is used in order to build a ' + 'client schema.');
|
|
106
124
|
}
|
|
107
125
|
|
|
108
|
-
|
|
109
|
-
typeDefCache[typeName] = typeDef;
|
|
110
|
-
return typeDef;
|
|
126
|
+
return type;
|
|
111
127
|
}
|
|
112
128
|
|
|
113
129
|
function getInputType(typeRef) {
|
|
@@ -296,28 +312,5 @@ function buildClientSchema(introspection, options) {
|
|
|
296
312
|
locations: directiveIntrospection.locations.slice(),
|
|
297
313
|
args: buildInputValueDefMap(directiveIntrospection.args)
|
|
298
314
|
});
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
var types = schemaIntrospection.types.map(function (typeIntrospection) {
|
|
304
|
-
return getNamedType(typeIntrospection.name);
|
|
305
|
-
}); // Get the root Query, Mutation, and Subscription types.
|
|
306
|
-
|
|
307
|
-
var queryType = schemaIntrospection.queryType ? getObjectType(schemaIntrospection.queryType) : null;
|
|
308
|
-
var mutationType = schemaIntrospection.mutationType ? getObjectType(schemaIntrospection.mutationType) : null;
|
|
309
|
-
var subscriptionType = schemaIntrospection.subscriptionType ? getObjectType(schemaIntrospection.subscriptionType) : null; // Get the directives supported by Introspection, assuming empty-set if
|
|
310
|
-
// directives were not queried for.
|
|
311
|
-
|
|
312
|
-
var directives = schemaIntrospection.directives ? schemaIntrospection.directives.map(buildDirective) : []; // Then produce and return a Schema with these types.
|
|
313
|
-
|
|
314
|
-
return new _schema.GraphQLSchema({
|
|
315
|
-
query: queryType,
|
|
316
|
-
mutation: mutationType,
|
|
317
|
-
subscription: subscriptionType,
|
|
318
|
-
types: types,
|
|
319
|
-
directives: directives,
|
|
320
|
-
assumeValid: options && options.assumeValid,
|
|
321
|
-
allowedLegacyNames: options && options.allowedLegacyNames
|
|
322
|
-
});
|
|
323
|
-
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
@@ -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,15 +7,22 @@
|
|
|
7
7
|
* @flow strict
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
+
import objectValues from '../polyfills/objectValues';
|
|
10
11
|
import inspect from '../jsutils/inspect';
|
|
11
12
|
import invariant from '../jsutils/invariant';
|
|
12
|
-
import keyMap from '../jsutils/keyMap';
|
|
13
13
|
import keyValMap from '../jsutils/keyValMap';
|
|
14
14
|
import { valueFromAST } from './valueFromAST';
|
|
15
15
|
import { parseValue } from '../language/parser';
|
|
16
|
-
import {
|
|
16
|
+
import {
|
|
17
|
+
type GraphQLSchemaValidationOptions,
|
|
18
|
+
GraphQLSchema,
|
|
19
|
+
} from '../type/schema';
|
|
17
20
|
|
|
18
21
|
import {
|
|
22
|
+
type GraphQLType,
|
|
23
|
+
type GraphQLInputType,
|
|
24
|
+
type GraphQLOutputType,
|
|
25
|
+
type GraphQLNamedType,
|
|
19
26
|
isInputType,
|
|
20
27
|
isOutputType,
|
|
21
28
|
GraphQLScalarType,
|
|
@@ -31,36 +38,27 @@ import {
|
|
|
31
38
|
assertInterfaceType,
|
|
32
39
|
} from '../type/definition';
|
|
33
40
|
|
|
34
|
-
import type {
|
|
35
|
-
GraphQLType,
|
|
36
|
-
GraphQLInputType,
|
|
37
|
-
GraphQLOutputType,
|
|
38
|
-
GraphQLNamedType,
|
|
39
|
-
} from '../type/definition';
|
|
40
|
-
|
|
41
41
|
import { GraphQLDirective } from '../type/directives';
|
|
42
42
|
|
|
43
43
|
import { introspectionTypes, TypeKind } from '../type/introspection';
|
|
44
44
|
|
|
45
45
|
import { specifiedScalarTypes } from '../type/scalars';
|
|
46
46
|
|
|
47
|
-
import
|
|
48
|
-
IntrospectionQuery,
|
|
49
|
-
IntrospectionType,
|
|
50
|
-
IntrospectionScalarType,
|
|
51
|
-
IntrospectionObjectType,
|
|
52
|
-
IntrospectionInterfaceType,
|
|
53
|
-
IntrospectionUnionType,
|
|
54
|
-
IntrospectionEnumType,
|
|
55
|
-
IntrospectionInputObjectType,
|
|
56
|
-
IntrospectionTypeRef,
|
|
57
|
-
IntrospectionInputTypeRef,
|
|
58
|
-
IntrospectionOutputTypeRef,
|
|
59
|
-
IntrospectionNamedTypeRef,
|
|
47
|
+
import {
|
|
48
|
+
type IntrospectionQuery,
|
|
49
|
+
type IntrospectionType,
|
|
50
|
+
type IntrospectionScalarType,
|
|
51
|
+
type IntrospectionObjectType,
|
|
52
|
+
type IntrospectionInterfaceType,
|
|
53
|
+
type IntrospectionUnionType,
|
|
54
|
+
type IntrospectionEnumType,
|
|
55
|
+
type IntrospectionInputObjectType,
|
|
56
|
+
type IntrospectionTypeRef,
|
|
57
|
+
type IntrospectionInputTypeRef,
|
|
58
|
+
type IntrospectionOutputTypeRef,
|
|
59
|
+
type IntrospectionNamedTypeRef,
|
|
60
60
|
} from './introspectionQuery';
|
|
61
61
|
|
|
62
|
-
import type { GraphQLSchemaValidationOptions } from '../type/schema';
|
|
63
|
-
|
|
64
62
|
type Options = {|
|
|
65
63
|
...GraphQLSchemaValidationOptions,
|
|
66
64
|
|};
|
|
@@ -84,19 +82,48 @@ export function buildClientSchema(
|
|
|
84
82
|
// Get the schema from the introspection result.
|
|
85
83
|
const schemaIntrospection = introspection.__schema;
|
|
86
84
|
|
|
87
|
-
//
|
|
88
|
-
const
|
|
85
|
+
// Iterate through all types, getting the type definition for each.
|
|
86
|
+
const typeMap = keyValMap(
|
|
89
87
|
schemaIntrospection.types,
|
|
90
|
-
|
|
88
|
+
typeIntrospection => typeIntrospection.name,
|
|
89
|
+
typeIntrospection => buildType(typeIntrospection),
|
|
91
90
|
);
|
|
92
91
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
92
|
+
for (const stdType of [...specifiedScalarTypes, ...introspectionTypes]) {
|
|
93
|
+
if (typeMap[stdType.name]) {
|
|
94
|
+
typeMap[stdType.name] = stdType;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Get the root Query, Mutation, and Subscription types.
|
|
99
|
+
const queryType = schemaIntrospection.queryType
|
|
100
|
+
? getObjectType(schemaIntrospection.queryType)
|
|
101
|
+
: null;
|
|
102
|
+
|
|
103
|
+
const mutationType = schemaIntrospection.mutationType
|
|
104
|
+
? getObjectType(schemaIntrospection.mutationType)
|
|
105
|
+
: null;
|
|
106
|
+
|
|
107
|
+
const subscriptionType = schemaIntrospection.subscriptionType
|
|
108
|
+
? getObjectType(schemaIntrospection.subscriptionType)
|
|
109
|
+
: null;
|
|
110
|
+
|
|
111
|
+
// Get the directives supported by Introspection, assuming empty-set if
|
|
112
|
+
// directives were not queried for.
|
|
113
|
+
const directives = schemaIntrospection.directives
|
|
114
|
+
? schemaIntrospection.directives.map(buildDirective)
|
|
115
|
+
: [];
|
|
116
|
+
|
|
117
|
+
// Then produce and return a Schema with these types.
|
|
118
|
+
return new GraphQLSchema({
|
|
119
|
+
query: queryType,
|
|
120
|
+
mutation: mutationType,
|
|
121
|
+
subscription: subscriptionType,
|
|
122
|
+
types: objectValues(typeMap),
|
|
123
|
+
directives,
|
|
124
|
+
assumeValid: options && options.assumeValid,
|
|
125
|
+
allowedLegacyNames: options && options.allowedLegacyNames,
|
|
126
|
+
});
|
|
100
127
|
|
|
101
128
|
// Given a type reference in introspection, return the GraphQLType instance.
|
|
102
129
|
// preferring cached instances before building new instances.
|
|
@@ -123,20 +150,16 @@ export function buildClientSchema(
|
|
|
123
150
|
}
|
|
124
151
|
|
|
125
152
|
function getNamedType(typeName: string): GraphQLNamedType {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
}
|
|
129
|
-
const typeIntrospection = typeIntrospectionMap[typeName];
|
|
130
|
-
if (!typeIntrospection) {
|
|
153
|
+
const type = typeMap[typeName];
|
|
154
|
+
if (!type) {
|
|
131
155
|
throw new Error(
|
|
132
156
|
`Invalid or incomplete schema, unknown type: ${typeName}. Ensure ` +
|
|
133
157
|
'that a full introspection query is used in order to build a ' +
|
|
134
158
|
'client schema.',
|
|
135
159
|
);
|
|
136
160
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
return typeDef;
|
|
161
|
+
|
|
162
|
+
return type;
|
|
140
163
|
}
|
|
141
164
|
|
|
142
165
|
function getInputType(typeRef: IntrospectionInputTypeRef): GraphQLInputType {
|
|
@@ -361,40 +384,4 @@ export function buildClientSchema(
|
|
|
361
384
|
args: buildInputValueDefMap(directiveIntrospection.args),
|
|
362
385
|
});
|
|
363
386
|
}
|
|
364
|
-
|
|
365
|
-
// Iterate through all types, getting the type definition for each, ensuring
|
|
366
|
-
// that any type not directly referenced by a field will get created.
|
|
367
|
-
const types = schemaIntrospection.types.map(typeIntrospection =>
|
|
368
|
-
getNamedType(typeIntrospection.name),
|
|
369
|
-
);
|
|
370
|
-
|
|
371
|
-
// Get the root Query, Mutation, and Subscription types.
|
|
372
|
-
const queryType = schemaIntrospection.queryType
|
|
373
|
-
? getObjectType(schemaIntrospection.queryType)
|
|
374
|
-
: null;
|
|
375
|
-
|
|
376
|
-
const mutationType = schemaIntrospection.mutationType
|
|
377
|
-
? getObjectType(schemaIntrospection.mutationType)
|
|
378
|
-
: null;
|
|
379
|
-
|
|
380
|
-
const subscriptionType = schemaIntrospection.subscriptionType
|
|
381
|
-
? getObjectType(schemaIntrospection.subscriptionType)
|
|
382
|
-
: null;
|
|
383
|
-
|
|
384
|
-
// Get the directives supported by Introspection, assuming empty-set if
|
|
385
|
-
// directives were not queried for.
|
|
386
|
-
const directives = schemaIntrospection.directives
|
|
387
|
-
? schemaIntrospection.directives.map(buildDirective)
|
|
388
|
-
: [];
|
|
389
|
-
|
|
390
|
-
// Then produce and return a Schema with these types.
|
|
391
|
-
return new GraphQLSchema({
|
|
392
|
-
query: queryType,
|
|
393
|
-
mutation: mutationType,
|
|
394
|
-
subscription: subscriptionType,
|
|
395
|
-
types,
|
|
396
|
-
directives,
|
|
397
|
-
assumeValid: options && options.assumeValid,
|
|
398
|
-
allowedLegacyNames: options && options.allowedLegacyNames,
|
|
399
|
-
});
|
|
400
387
|
}
|