graphql 0.0.1-test.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 +21 -0
- package/NotSupportedTSVersion.d.ts +1 -0
- package/README.md +158 -0
- package/error/GraphQLError.d.ts +142 -0
- package/error/GraphQLError.js +267 -0
- package/error/GraphQLError.mjs +253 -0
- package/error/index.d.ts +7 -0
- package/error/index.js +41 -0
- package/error/index.mjs +3 -0
- package/error/locatedError.d.ts +13 -0
- package/error/locatedError.js +40 -0
- package/error/locatedError.mjs +32 -0
- package/error/syntaxError.d.ts +11 -0
- package/error/syntaxError.js +21 -0
- package/error/syntaxError.mjs +11 -0
- package/execution/collectFields.d.ts +45 -0
- package/execution/collectFields.js +229 -0
- package/execution/collectFields.mjs +213 -0
- package/execution/execute.d.ts +185 -0
- package/execution/execute.js +1016 -0
- package/execution/execute.mjs +988 -0
- package/execution/index.d.ts +14 -0
- package/execution/index.js +67 -0
- package/execution/index.mjs +9 -0
- package/execution/mapAsyncIterator.d.ts +9 -0
- package/execution/mapAsyncIterator.js +68 -0
- package/execution/mapAsyncIterator.mjs +61 -0
- package/execution/subscribe.d.ts +68 -0
- package/execution/subscribe.js +261 -0
- package/execution/subscribe.mjs +239 -0
- package/execution/values.d.ts +81 -0
- package/execution/values.js +292 -0
- package/execution/values.mjs +255 -0
- package/graphql.d.ts +67 -0
- package/graphql.js +96 -0
- package/graphql.mjs +122 -0
- package/index.d.ts +411 -0
- package/index.js +1263 -0
- package/index.mjs +254 -0
- package/jsutils/Maybe.d.ts +2 -0
- package/jsutils/Maybe.js +5 -0
- package/jsutils/Maybe.mjs +1 -0
- package/jsutils/ObjMap.d.ts +16 -0
- package/jsutils/ObjMap.js +5 -0
- package/jsutils/ObjMap.mjs +1 -0
- package/jsutils/Path.d.ts +20 -0
- package/jsutils/Path.js +33 -0
- package/jsutils/Path.mjs +25 -0
- package/jsutils/PromiseOrValue.d.ts +1 -0
- package/jsutils/PromiseOrValue.js +5 -0
- package/jsutils/PromiseOrValue.mjs +1 -0
- package/jsutils/devAssert.d.ts +1 -0
- package/jsutils/devAssert.js +14 -0
- package/jsutils/devAssert.mjs +7 -0
- package/jsutils/didYouMean.d.ts +8 -0
- package/jsutils/didYouMean.js +38 -0
- package/jsutils/didYouMean.mjs +32 -0
- package/jsutils/groupBy.d.ts +7 -0
- package/jsutils/groupBy.js +26 -0
- package/jsutils/groupBy.mjs +19 -0
- package/jsutils/identityFunc.d.ts +4 -0
- package/jsutils/identityFunc.js +13 -0
- package/jsutils/identityFunc.mjs +6 -0
- package/jsutils/inspect.d.ts +4 -0
- package/jsutils/inspect.js +121 -0
- package/jsutils/inspect.mjs +115 -0
- package/jsutils/instanceOf.d.ts +16 -0
- package/jsutils/instanceOf.js +60 -0
- package/jsutils/instanceOf.mjs +52 -0
- package/jsutils/invariant.d.ts +4 -0
- package/jsutils/invariant.js +16 -0
- package/jsutils/invariant.mjs +9 -0
- package/jsutils/isAsyncIterable.d.ts +7 -0
- package/jsutils/isAsyncIterable.js +18 -0
- package/jsutils/isAsyncIterable.mjs +11 -0
- package/jsutils/isIterableObject.d.ts +20 -0
- package/jsutils/isIterableObject.js +32 -0
- package/jsutils/isIterableObject.mjs +25 -0
- package/jsutils/isObjectLike.d.ts +7 -0
- package/jsutils/isObjectLike.js +14 -0
- package/jsutils/isObjectLike.mjs +7 -0
- package/jsutils/isPromise.d.ts +5 -0
- package/jsutils/isPromise.js +17 -0
- package/jsutils/isPromise.mjs +10 -0
- package/jsutils/keyMap.d.ts +32 -0
- package/jsutils/keyMap.js +43 -0
- package/jsutils/keyMap.mjs +36 -0
- package/jsutils/keyValMap.d.ts +23 -0
- package/jsutils/keyValMap.js +33 -0
- package/jsutils/keyValMap.mjs +26 -0
- package/jsutils/mapValue.d.ts +9 -0
- package/jsutils/mapValue.js +20 -0
- package/jsutils/mapValue.mjs +13 -0
- package/jsutils/memoize3.d.ts +9 -0
- package/jsutils/memoize3.js +41 -0
- package/jsutils/memoize3.mjs +34 -0
- package/jsutils/naturalCompare.d.ts +8 -0
- package/jsutils/naturalCompare.js +69 -0
- package/jsutils/naturalCompare.mjs +61 -0
- package/jsutils/printPathArray.d.ts +6 -0
- package/jsutils/printPathArray.js +17 -0
- package/jsutils/printPathArray.mjs +10 -0
- package/jsutils/promiseForObject.d.ts +11 -0
- package/jsutils/promiseForObject.js +25 -0
- package/jsutils/promiseForObject.mjs +18 -0
- package/jsutils/promiseReduce.d.ts +13 -0
- package/jsutils/promiseReduce.js +27 -0
- package/jsutils/promiseReduce.mjs +20 -0
- package/jsutils/suggestionList.d.ts +8 -0
- package/jsutils/suggestionList.js +139 -0
- package/jsutils/suggestionList.mjs +130 -0
- package/jsutils/toError.d.ts +4 -0
- package/jsutils/toError.js +25 -0
- package/jsutils/toError.mjs +18 -0
- package/jsutils/toObjMap.d.ts +5 -0
- package/jsutils/toObjMap.js +24 -0
- package/jsutils/toObjMap.mjs +17 -0
- package/language/ast.d.ts +536 -0
- package/language/ast.js +224 -0
- package/language/ast.mjs +206 -0
- package/language/blockString.d.ts +28 -0
- package/language/blockString.js +195 -0
- package/language/blockString.mjs +178 -0
- package/language/characterClasses.d.ts +47 -0
- package/language/characterClasses.js +75 -0
- package/language/characterClasses.mjs +64 -0
- package/language/directiveLocation.d.ts +32 -0
- package/language/directiveLocation.js +40 -0
- package/language/directiveLocation.mjs +31 -0
- package/language/index.d.ts +97 -0
- package/language/index.js +215 -0
- package/language/index.mjs +29 -0
- package/language/kinds.d.ts +65 -0
- package/language/kinds.js +64 -0
- package/language/kinds.mjs +55 -0
- package/language/lexer.d.ts +45 -0
- package/language/lexer.js +1006 -0
- package/language/lexer.mjs +902 -0
- package/language/location.d.ts +16 -0
- package/language/location.js +38 -0
- package/language/location.mjs +30 -0
- package/language/parser.d.ts +554 -0
- package/language/parser.js +1567 -0
- package/language/parser.mjs +1524 -0
- package/language/predicates.d.ts +33 -0
- package/language/predicates.js +109 -0
- package/language/predicates.mjs +81 -0
- package/language/printLocation.d.ts +14 -0
- package/language/printLocation.js +74 -0
- package/language/printLocation.mjs +66 -0
- package/language/printString.d.ts +5 -0
- package/language/printString.js +183 -0
- package/language/printString.mjs +176 -0
- package/language/printer.d.ts +6 -0
- package/language/printer.js +351 -0
- package/language/printer.mjs +339 -0
- package/language/source.d.ts +25 -0
- package/language/source.js +65 -0
- package/language/source.mjs +50 -0
- package/language/tokenKind.d.ts +34 -0
- package/language/tokenKind.js +44 -0
- package/language/tokenKind.mjs +35 -0
- package/language/visitor.d.ts +194 -0
- package/language/visitor.js +377 -0
- package/language/visitor.mjs +361 -0
- package/package.json +40 -0
- package/subscription/index.d.ts +19 -0
- package/subscription/index.js +19 -0
- package/subscription/index.mjs +19 -0
- package/type/assertName.d.ts +10 -0
- package/type/assertName.js +59 -0
- package/type/assertName.mjs +44 -0
- package/type/definition.d.ts +917 -0
- package/type/definition.js +1329 -0
- package/type/definition.mjs +1167 -0
- package/type/directives.d.ts +86 -0
- package/type/directives.js +224 -0
- package/type/directives.mjs +190 -0
- package/type/index.d.ts +150 -0
- package/type/index.js +547 -0
- package/type/index.mjs +103 -0
- package/type/introspection.d.ts +29 -0
- package/type/introspection.js +617 -0
- package/type/introspection.mjs +550 -0
- package/type/scalars.d.ts +19 -0
- package/type/scalars.js +359 -0
- package/type/scalars.mjs +299 -0
- package/type/schema.d.ts +170 -0
- package/type/schema.js +402 -0
- package/type/schema.mjs +381 -0
- package/type/validate.d.ts +17 -0
- package/type/validate.js +672 -0
- package/type/validate.mjs +647 -0
- package/utilities/TypeInfo.d.ts +67 -0
- package/utilities/TypeInfo.js +418 -0
- package/utilities/TypeInfo.mjs +395 -0
- package/utilities/assertValidName.d.ts +13 -0
- package/utilities/assertValidName.js +51 -0
- package/utilities/assertValidName.mjs +40 -0
- package/utilities/astFromValue.d.ts +28 -0
- package/utilities/astFromValue.js +190 -0
- package/utilities/astFromValue.mjs +177 -0
- package/utilities/buildASTSchema.d.ts +35 -0
- package/utilities/buildASTSchema.js +115 -0
- package/utilities/buildASTSchema.mjs +97 -0
- package/utilities/buildClientSchema.d.ts +19 -0
- package/utilities/buildClientSchema.js +386 -0
- package/utilities/buildClientSchema.mjs +363 -0
- package/utilities/coerceInputValue.d.ts +16 -0
- package/utilities/coerceInputValue.js +191 -0
- package/utilities/coerceInputValue.mjs +172 -0
- package/utilities/concatAST.d.ts +9 -0
- package/utilities/concatAST.js +26 -0
- package/utilities/concatAST.mjs +19 -0
- package/utilities/extendSchema.d.ts +40 -0
- package/utilities/extendSchema.js +798 -0
- package/utilities/extendSchema.mjs +789 -0
- package/utilities/findBreakingChanges.d.ts +51 -0
- package/utilities/findBreakingChanges.js +547 -0
- package/utilities/findBreakingChanges.mjs +516 -0
- package/utilities/getIntrospectionQuery.d.ts +182 -0
- package/utilities/getIntrospectionQuery.js +134 -0
- package/utilities/getIntrospectionQuery.mjs +127 -0
- package/utilities/getOperationAST.d.ts +11 -0
- package/utilities/getOperationAST.js +43 -0
- package/utilities/getOperationAST.mjs +36 -0
- package/utilities/getOperationRootType.d.ts +15 -0
- package/utilities/getOperationRootType.js +59 -0
- package/utilities/getOperationRootType.mjs +52 -0
- package/utilities/index.d.ts +61 -0
- package/utilities/index.js +233 -0
- package/utilities/index.mjs +55 -0
- package/utilities/introspectionFromSchema.d.ts +18 -0
- package/utilities/introspectionFromSchema.js +42 -0
- package/utilities/introspectionFromSchema.mjs +30 -0
- package/utilities/lexicographicSortSchema.d.ts +9 -0
- package/utilities/lexicographicSortSchema.js +177 -0
- package/utilities/lexicographicSortSchema.mjs +172 -0
- package/utilities/printSchema.d.ts +5 -0
- package/utilities/printSchema.js +333 -0
- package/utilities/printSchema.mjs +309 -0
- package/utilities/separateOperations.d.ts +11 -0
- package/utilities/separateOperations.js +88 -0
- package/utilities/separateOperations.mjs +80 -0
- package/utilities/sortValueNode.d.ts +9 -0
- package/utilities/sortValueNode.js +47 -0
- package/utilities/sortValueNode.mjs +39 -0
- package/utilities/stripIgnoredCharacters.d.ts +62 -0
- package/utilities/stripIgnoredCharacters.js +121 -0
- package/utilities/stripIgnoredCharacters.mjs +104 -0
- package/utilities/typeComparators.d.ts +32 -0
- package/utilities/typeComparators.js +116 -0
- package/utilities/typeComparators.mjs +106 -0
- package/utilities/typeFromAST.d.ts +32 -0
- package/utilities/typeFromAST.js +27 -0
- package/utilities/typeFromAST.mjs +18 -0
- package/utilities/typedQueryDocumentNode.d.ts +22 -0
- package/utilities/typedQueryDocumentNode.js +5 -0
- package/utilities/typedQueryDocumentNode.mjs +1 -0
- package/utilities/valueFromAST.d.ts +29 -0
- package/utilities/valueFromAST.js +185 -0
- package/utilities/valueFromAST.mjs +172 -0
- package/utilities/valueFromASTUntyped.d.ts +23 -0
- package/utilities/valueFromASTUntyped.js +61 -0
- package/utilities/valueFromASTUntyped.mjs +53 -0
- package/validation/ValidationContext.d.ts +95 -0
- package/validation/ValidationContext.js +232 -0
- package/validation/ValidationContext.mjs +212 -0
- package/validation/index.d.ts +40 -0
- package/validation/index.js +317 -0
- package/validation/index.mjs +68 -0
- package/validation/rules/ExecutableDefinitionsRule.d.ts +13 -0
- package/validation/rules/ExecutableDefinitionsRule.js +44 -0
- package/validation/rules/ExecutableDefinitionsRule.mjs +35 -0
- package/validation/rules/FieldsOnCorrectTypeRule.d.ts +13 -0
- package/validation/rules/FieldsOnCorrectTypeRule.js +143 -0
- package/validation/rules/FieldsOnCorrectTypeRule.mjs +125 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.d.ts +14 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.js +65 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.mjs +49 -0
- package/validation/rules/KnownArgumentNamesRule.d.ts +23 -0
- package/validation/rules/KnownArgumentNamesRule.js +116 -0
- package/validation/rules/KnownArgumentNamesRule.mjs +98 -0
- package/validation/rules/KnownDirectivesRule.d.ts +16 -0
- package/validation/rules/KnownDirectivesRule.js +163 -0
- package/validation/rules/KnownDirectivesRule.mjs +146 -0
- package/validation/rules/KnownFragmentNamesRule.d.ts +13 -0
- package/validation/rules/KnownFragmentNamesRule.js +34 -0
- package/validation/rules/KnownFragmentNamesRule.mjs +24 -0
- package/validation/rules/KnownTypeNamesRule.d.ts +16 -0
- package/validation/rules/KnownTypeNamesRule.js +87 -0
- package/validation/rules/KnownTypeNamesRule.mjs +75 -0
- package/validation/rules/LoneAnonymousOperationRule.d.ts +13 -0
- package/validation/rules/LoneAnonymousOperationRule.js +40 -0
- package/validation/rules/LoneAnonymousOperationRule.mjs +32 -0
- package/validation/rules/LoneSchemaDefinitionRule.d.ts +10 -0
- package/validation/rules/LoneSchemaDefinitionRule.js +63 -0
- package/validation/rules/LoneSchemaDefinitionRule.mjs +53 -0
- package/validation/rules/NoFragmentCyclesRule.d.ts +13 -0
- package/validation/rules/NoFragmentCyclesRule.js +83 -0
- package/validation/rules/NoFragmentCyclesRule.mjs +76 -0
- package/validation/rules/NoUndefinedVariablesRule.d.ts +13 -0
- package/validation/rules/NoUndefinedVariablesRule.js +50 -0
- package/validation/rules/NoUndefinedVariablesRule.mjs +43 -0
- package/validation/rules/NoUnusedFragmentsRule.d.ts +13 -0
- package/validation/rules/NoUnusedFragmentsRule.js +59 -0
- package/validation/rules/NoUnusedFragmentsRule.mjs +52 -0
- package/validation/rules/NoUnusedVariablesRule.d.ts +13 -0
- package/validation/rules/NoUnusedVariablesRule.js +55 -0
- package/validation/rules/NoUnusedVariablesRule.mjs +48 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule-old.js +805 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule-old.mjs +788 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +14 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule.js +805 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +788 -0
- package/validation/rules/PossibleFragmentSpreadsRule.d.ts +12 -0
- package/validation/rules/PossibleFragmentSpreadsRule.js +91 -0
- package/validation/rules/PossibleFragmentSpreadsRule.mjs +69 -0
- package/validation/rules/PossibleTypeExtensionsRule.d.ts +10 -0
- package/validation/rules/PossibleTypeExtensionsRule.js +167 -0
- package/validation/rules/PossibleTypeExtensionsRule.mjs +147 -0
- package/validation/rules/ProvidedRequiredArgumentsRule.d.ts +20 -0
- package/validation/rules/ProvidedRequiredArgumentsRule.js +158 -0
- package/validation/rules/ProvidedRequiredArgumentsRule.mjs +138 -0
- package/validation/rules/ScalarLeafsRule.d.ts +9 -0
- package/validation/rules/ScalarLeafsRule.js +51 -0
- package/validation/rules/ScalarLeafsRule.mjs +42 -0
- package/validation/rules/SingleFieldSubscriptionsRule.d.ts +13 -0
- package/validation/rules/SingleFieldSubscriptionsRule.js +82 -0
- package/validation/rules/SingleFieldSubscriptionsRule.mjs +73 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts +11 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.js +90 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.mjs +79 -0
- package/validation/rules/UniqueArgumentNamesRule.d.ts +13 -0
- package/validation/rules/UniqueArgumentNamesRule.js +53 -0
- package/validation/rules/UniqueArgumentNamesRule.mjs +42 -0
- package/validation/rules/UniqueDirectiveNamesRule.d.ts +10 -0
- package/validation/rules/UniqueDirectiveNamesRule.js +50 -0
- package/validation/rules/UniqueDirectiveNamesRule.mjs +43 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.d.ts +16 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.js +93 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.mjs +83 -0
- package/validation/rules/UniqueEnumValueNamesRule.d.ts +10 -0
- package/validation/rules/UniqueEnumValueNamesRule.js +71 -0
- package/validation/rules/UniqueEnumValueNamesRule.mjs +60 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.d.ts +10 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.js +83 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +75 -0
- package/validation/rules/UniqueFragmentNamesRule.d.ts +12 -0
- package/validation/rules/UniqueFragmentNamesRule.js +39 -0
- package/validation/rules/UniqueFragmentNamesRule.mjs +32 -0
- package/validation/rules/UniqueInputFieldNamesRule.d.ts +13 -0
- package/validation/rules/UniqueInputFieldNamesRule.js +52 -0
- package/validation/rules/UniqueInputFieldNamesRule.mjs +44 -0
- package/validation/rules/UniqueOperationNamesRule.d.ts +12 -0
- package/validation/rules/UniqueOperationNamesRule.js +41 -0
- package/validation/rules/UniqueOperationNamesRule.mjs +34 -0
- package/validation/rules/UniqueOperationTypesRule.d.ts +10 -0
- package/validation/rules/UniqueOperationTypesRule.js +67 -0
- package/validation/rules/UniqueOperationTypesRule.mjs +60 -0
- package/validation/rules/UniqueTypeNamesRule.d.ts +10 -0
- package/validation/rules/UniqueTypeNamesRule.js +53 -0
- package/validation/rules/UniqueTypeNamesRule.mjs +46 -0
- package/validation/rules/UniqueVariableNamesRule.d.ts +10 -0
- package/validation/rules/UniqueVariableNamesRule.js +47 -0
- package/validation/rules/UniqueVariableNamesRule.mjs +39 -0
- package/validation/rules/ValuesOfCorrectTypeRule.d.ts +13 -0
- package/validation/rules/ValuesOfCorrectTypeRule.js +183 -0
- package/validation/rules/ValuesOfCorrectTypeRule.mjs +164 -0
- package/validation/rules/VariablesAreInputTypesRule.d.ts +13 -0
- package/validation/rules/VariablesAreInputTypesRule.js +44 -0
- package/validation/rules/VariablesAreInputTypesRule.mjs +31 -0
- package/validation/rules/VariablesInAllowedPositionRule.d.ts +12 -0
- package/validation/rules/VariablesInAllowedPositionRule.js +114 -0
- package/validation/rules/VariablesInAllowedPositionRule.mjs +95 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +15 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.js +121 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.mjs +107 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +15 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +39 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs +30 -0
- package/validation/specifiedRules.d.ts +12 -0
- package/validation/specifiedRules.js +160 -0
- package/validation/specifiedRules.mjs +123 -0
- package/validation/validate.d.ts +61 -0
- package/validation/validate.js +151 -0
- package/validation/validate.mjs +133 -0
- package/version.d.ts +13 -0
- package/version.js +25 -0
- package/version.mjs +17 -0
|
@@ -0,0 +1,789 @@
|
|
|
1
|
+
import { devAssert } from '../jsutils/devAssert.mjs';
|
|
2
|
+
import { inspect } from '../jsutils/inspect.mjs';
|
|
3
|
+
import { invariant } from '../jsutils/invariant.mjs';
|
|
4
|
+
import { keyMap } from '../jsutils/keyMap.mjs';
|
|
5
|
+
import { mapValue } from '../jsutils/mapValue.mjs';
|
|
6
|
+
import { Kind } from '../language/kinds.mjs';
|
|
7
|
+
import {
|
|
8
|
+
isTypeDefinitionNode,
|
|
9
|
+
isTypeExtensionNode,
|
|
10
|
+
} from '../language/predicates.mjs';
|
|
11
|
+
import {
|
|
12
|
+
GraphQLEnumType,
|
|
13
|
+
GraphQLInputObjectType,
|
|
14
|
+
GraphQLInterfaceType,
|
|
15
|
+
GraphQLList,
|
|
16
|
+
GraphQLNonNull,
|
|
17
|
+
GraphQLObjectType,
|
|
18
|
+
GraphQLScalarType,
|
|
19
|
+
GraphQLUnionType,
|
|
20
|
+
isEnumType,
|
|
21
|
+
isInputObjectType,
|
|
22
|
+
isInterfaceType,
|
|
23
|
+
isListType,
|
|
24
|
+
isNonNullType,
|
|
25
|
+
isObjectType,
|
|
26
|
+
isScalarType,
|
|
27
|
+
isUnionType,
|
|
28
|
+
} from '../type/definition.mjs';
|
|
29
|
+
import {
|
|
30
|
+
GraphQLDeprecatedDirective,
|
|
31
|
+
GraphQLDirective,
|
|
32
|
+
GraphQLSpecifiedByDirective,
|
|
33
|
+
} from '../type/directives.mjs';
|
|
34
|
+
import {
|
|
35
|
+
introspectionTypes,
|
|
36
|
+
isIntrospectionType,
|
|
37
|
+
} from '../type/introspection.mjs';
|
|
38
|
+
import {
|
|
39
|
+
isSpecifiedScalarType,
|
|
40
|
+
specifiedScalarTypes,
|
|
41
|
+
} from '../type/scalars.mjs';
|
|
42
|
+
import { assertSchema, GraphQLSchema } from '../type/schema.mjs';
|
|
43
|
+
import { assertValidSDLExtension } from '../validation/validate.mjs';
|
|
44
|
+
import { getDirectiveValues } from '../execution/values.mjs';
|
|
45
|
+
import { valueFromAST } from './valueFromAST.mjs';
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Produces a new schema given an existing schema and a document which may
|
|
49
|
+
* contain GraphQL type extensions and definitions. The original schema will
|
|
50
|
+
* remain unaltered.
|
|
51
|
+
*
|
|
52
|
+
* Because a schema represents a graph of references, a schema cannot be
|
|
53
|
+
* extended without effectively making an entire copy. We do not know until it's
|
|
54
|
+
* too late if subgraphs remain unchanged.
|
|
55
|
+
*
|
|
56
|
+
* This algorithm copies the provided schema, applying extensions while
|
|
57
|
+
* producing the copy. The original schema remains unaltered.
|
|
58
|
+
*/
|
|
59
|
+
export function extendSchema(schema, documentAST, options) {
|
|
60
|
+
assertSchema(schema);
|
|
61
|
+
(documentAST != null && documentAST.kind === Kind.DOCUMENT) ||
|
|
62
|
+
devAssert(false, 'Must provide valid Document AST.');
|
|
63
|
+
|
|
64
|
+
if (
|
|
65
|
+
(options === null || options === void 0 ? void 0 : options.assumeValid) !==
|
|
66
|
+
true &&
|
|
67
|
+
(options === null || options === void 0
|
|
68
|
+
? void 0
|
|
69
|
+
: options.assumeValidSDL) !== true
|
|
70
|
+
) {
|
|
71
|
+
assertValidSDLExtension(documentAST, schema);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const schemaConfig = schema.toConfig();
|
|
75
|
+
const extendedConfig = extendSchemaImpl(schemaConfig, documentAST, options);
|
|
76
|
+
return schemaConfig === extendedConfig
|
|
77
|
+
? schema
|
|
78
|
+
: new GraphQLSchema(extendedConfig);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* @internal
|
|
82
|
+
*/
|
|
83
|
+
|
|
84
|
+
export function extendSchemaImpl(schemaConfig, documentAST, options) {
|
|
85
|
+
var _schemaDef, _schemaDef$descriptio, _schemaDef2, _options$assumeValid;
|
|
86
|
+
|
|
87
|
+
// Collect the type definitions and extensions found in the document.
|
|
88
|
+
const typeDefs = [];
|
|
89
|
+
const typeExtensionsMap = Object.create(null); // New directives and types are separate because a directives and types can
|
|
90
|
+
// have the same name. For example, a type named "skip".
|
|
91
|
+
|
|
92
|
+
const directiveDefs = [];
|
|
93
|
+
let schemaDef; // Schema extensions are collected which may add additional operation types.
|
|
94
|
+
|
|
95
|
+
const schemaExtensions = [];
|
|
96
|
+
|
|
97
|
+
for (const def of documentAST.definitions) {
|
|
98
|
+
if (def.kind === Kind.SCHEMA_DEFINITION) {
|
|
99
|
+
schemaDef = def;
|
|
100
|
+
} else if (def.kind === Kind.SCHEMA_EXTENSION) {
|
|
101
|
+
schemaExtensions.push(def);
|
|
102
|
+
} else if (isTypeDefinitionNode(def)) {
|
|
103
|
+
typeDefs.push(def);
|
|
104
|
+
} else if (isTypeExtensionNode(def)) {
|
|
105
|
+
const extendedTypeName = def.name.value;
|
|
106
|
+
const existingTypeExtensions = typeExtensionsMap[extendedTypeName];
|
|
107
|
+
typeExtensionsMap[extendedTypeName] = existingTypeExtensions
|
|
108
|
+
? existingTypeExtensions.concat([def])
|
|
109
|
+
: [def];
|
|
110
|
+
} else if (def.kind === Kind.DIRECTIVE_DEFINITION) {
|
|
111
|
+
directiveDefs.push(def);
|
|
112
|
+
}
|
|
113
|
+
} // If this document contains no new types, extensions, or directives then
|
|
114
|
+
// return the same unmodified GraphQLSchema instance.
|
|
115
|
+
|
|
116
|
+
if (
|
|
117
|
+
Object.keys(typeExtensionsMap).length === 0 &&
|
|
118
|
+
typeDefs.length === 0 &&
|
|
119
|
+
directiveDefs.length === 0 &&
|
|
120
|
+
schemaExtensions.length === 0 &&
|
|
121
|
+
schemaDef == null
|
|
122
|
+
) {
|
|
123
|
+
return schemaConfig;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
const typeMap = Object.create(null);
|
|
127
|
+
|
|
128
|
+
for (const existingType of schemaConfig.types) {
|
|
129
|
+
typeMap[existingType.name] = extendNamedType(existingType);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
for (const typeNode of typeDefs) {
|
|
133
|
+
var _stdTypeMap$name;
|
|
134
|
+
|
|
135
|
+
const name = typeNode.name.value;
|
|
136
|
+
typeMap[name] =
|
|
137
|
+
(_stdTypeMap$name = stdTypeMap[name]) !== null &&
|
|
138
|
+
_stdTypeMap$name !== void 0
|
|
139
|
+
? _stdTypeMap$name
|
|
140
|
+
: buildType(typeNode);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
const operationTypes = {
|
|
144
|
+
// Get the extended root operation types.
|
|
145
|
+
query: schemaConfig.query && replaceNamedType(schemaConfig.query),
|
|
146
|
+
mutation: schemaConfig.mutation && replaceNamedType(schemaConfig.mutation),
|
|
147
|
+
subscription:
|
|
148
|
+
schemaConfig.subscription && replaceNamedType(schemaConfig.subscription),
|
|
149
|
+
// Then, incorporate schema definition and all schema extensions.
|
|
150
|
+
...(schemaDef && getOperationTypes([schemaDef])),
|
|
151
|
+
...getOperationTypes(schemaExtensions),
|
|
152
|
+
}; // Then produce and return a Schema config with these types.
|
|
153
|
+
|
|
154
|
+
return {
|
|
155
|
+
description:
|
|
156
|
+
(_schemaDef = schemaDef) === null || _schemaDef === void 0
|
|
157
|
+
? void 0
|
|
158
|
+
: (_schemaDef$descriptio = _schemaDef.description) === null ||
|
|
159
|
+
_schemaDef$descriptio === void 0
|
|
160
|
+
? void 0
|
|
161
|
+
: _schemaDef$descriptio.value,
|
|
162
|
+
...operationTypes,
|
|
163
|
+
types: Object.values(typeMap),
|
|
164
|
+
directives: [
|
|
165
|
+
...schemaConfig.directives.map(replaceDirective),
|
|
166
|
+
...directiveDefs.map(buildDirective),
|
|
167
|
+
],
|
|
168
|
+
extensions: Object.create(null),
|
|
169
|
+
astNode:
|
|
170
|
+
(_schemaDef2 = schemaDef) !== null && _schemaDef2 !== void 0
|
|
171
|
+
? _schemaDef2
|
|
172
|
+
: schemaConfig.astNode,
|
|
173
|
+
extensionASTNodes: schemaConfig.extensionASTNodes.concat(schemaExtensions),
|
|
174
|
+
assumeValid:
|
|
175
|
+
(_options$assumeValid =
|
|
176
|
+
options === null || options === void 0
|
|
177
|
+
? void 0
|
|
178
|
+
: options.assumeValid) !== null && _options$assumeValid !== void 0
|
|
179
|
+
? _options$assumeValid
|
|
180
|
+
: false,
|
|
181
|
+
}; // Below are functions used for producing this schema that have closed over
|
|
182
|
+
// this scope and have access to the schema, cache, and newly defined types.
|
|
183
|
+
|
|
184
|
+
function replaceType(type) {
|
|
185
|
+
if (isListType(type)) {
|
|
186
|
+
// @ts-expect-error
|
|
187
|
+
return new GraphQLList(replaceType(type.ofType));
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
if (isNonNullType(type)) {
|
|
191
|
+
// @ts-expect-error
|
|
192
|
+
return new GraphQLNonNull(replaceType(type.ofType));
|
|
193
|
+
} // @ts-expect-error FIXME
|
|
194
|
+
|
|
195
|
+
return replaceNamedType(type);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
function replaceNamedType(type) {
|
|
199
|
+
// Note: While this could make early assertions to get the correctly
|
|
200
|
+
// typed values, that would throw immediately while type system
|
|
201
|
+
// validation with validateSchema() will produce more actionable results.
|
|
202
|
+
return typeMap[type.name];
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
function replaceDirective(directive) {
|
|
206
|
+
const config = directive.toConfig();
|
|
207
|
+
return new GraphQLDirective({
|
|
208
|
+
...config,
|
|
209
|
+
args: mapValue(config.args, extendArg),
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
function extendNamedType(type) {
|
|
214
|
+
if (isIntrospectionType(type) || isSpecifiedScalarType(type)) {
|
|
215
|
+
// Builtin types are not extended.
|
|
216
|
+
return type;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
if (isScalarType(type)) {
|
|
220
|
+
return extendScalarType(type);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
if (isObjectType(type)) {
|
|
224
|
+
return extendObjectType(type);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
if (isInterfaceType(type)) {
|
|
228
|
+
return extendInterfaceType(type);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
if (isUnionType(type)) {
|
|
232
|
+
return extendUnionType(type);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
if (isEnumType(type)) {
|
|
236
|
+
return extendEnumType(type);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
if (isInputObjectType(type)) {
|
|
240
|
+
return extendInputObjectType(type);
|
|
241
|
+
}
|
|
242
|
+
/* c8 ignore next 3 */
|
|
243
|
+
// Not reachable, all possible type definition nodes have been considered.
|
|
244
|
+
|
|
245
|
+
false || invariant(false, 'Unexpected type: ' + inspect(type));
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
function extendInputObjectType(type) {
|
|
249
|
+
var _typeExtensionsMap$co;
|
|
250
|
+
|
|
251
|
+
const config = type.toConfig();
|
|
252
|
+
const extensions =
|
|
253
|
+
(_typeExtensionsMap$co = typeExtensionsMap[config.name]) !== null &&
|
|
254
|
+
_typeExtensionsMap$co !== void 0
|
|
255
|
+
? _typeExtensionsMap$co
|
|
256
|
+
: [];
|
|
257
|
+
return new GraphQLInputObjectType({
|
|
258
|
+
...config,
|
|
259
|
+
fields: () => ({
|
|
260
|
+
...mapValue(config.fields, (field) => ({
|
|
261
|
+
...field,
|
|
262
|
+
type: replaceType(field.type),
|
|
263
|
+
})),
|
|
264
|
+
...buildInputFieldMap(extensions),
|
|
265
|
+
}),
|
|
266
|
+
extensionASTNodes: config.extensionASTNodes.concat(extensions),
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
function extendEnumType(type) {
|
|
271
|
+
var _typeExtensionsMap$ty;
|
|
272
|
+
|
|
273
|
+
const config = type.toConfig();
|
|
274
|
+
const extensions =
|
|
275
|
+
(_typeExtensionsMap$ty = typeExtensionsMap[type.name]) !== null &&
|
|
276
|
+
_typeExtensionsMap$ty !== void 0
|
|
277
|
+
? _typeExtensionsMap$ty
|
|
278
|
+
: [];
|
|
279
|
+
return new GraphQLEnumType({
|
|
280
|
+
...config,
|
|
281
|
+
values: { ...config.values, ...buildEnumValueMap(extensions) },
|
|
282
|
+
extensionASTNodes: config.extensionASTNodes.concat(extensions),
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
function extendScalarType(type) {
|
|
287
|
+
var _typeExtensionsMap$co2;
|
|
288
|
+
|
|
289
|
+
const config = type.toConfig();
|
|
290
|
+
const extensions =
|
|
291
|
+
(_typeExtensionsMap$co2 = typeExtensionsMap[config.name]) !== null &&
|
|
292
|
+
_typeExtensionsMap$co2 !== void 0
|
|
293
|
+
? _typeExtensionsMap$co2
|
|
294
|
+
: [];
|
|
295
|
+
let specifiedByURL = config.specifiedByURL;
|
|
296
|
+
|
|
297
|
+
for (const extensionNode of extensions) {
|
|
298
|
+
var _getSpecifiedByURL;
|
|
299
|
+
|
|
300
|
+
specifiedByURL =
|
|
301
|
+
(_getSpecifiedByURL = getSpecifiedByURL(extensionNode)) !== null &&
|
|
302
|
+
_getSpecifiedByURL !== void 0
|
|
303
|
+
? _getSpecifiedByURL
|
|
304
|
+
: specifiedByURL;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
return new GraphQLScalarType({
|
|
308
|
+
...config,
|
|
309
|
+
specifiedByURL,
|
|
310
|
+
extensionASTNodes: config.extensionASTNodes.concat(extensions),
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
function extendObjectType(type) {
|
|
315
|
+
var _typeExtensionsMap$co3;
|
|
316
|
+
|
|
317
|
+
const config = type.toConfig();
|
|
318
|
+
const extensions =
|
|
319
|
+
(_typeExtensionsMap$co3 = typeExtensionsMap[config.name]) !== null &&
|
|
320
|
+
_typeExtensionsMap$co3 !== void 0
|
|
321
|
+
? _typeExtensionsMap$co3
|
|
322
|
+
: [];
|
|
323
|
+
return new GraphQLObjectType({
|
|
324
|
+
...config,
|
|
325
|
+
interfaces: () => [
|
|
326
|
+
...type.getInterfaces().map(replaceNamedType),
|
|
327
|
+
...buildInterfaces(extensions),
|
|
328
|
+
],
|
|
329
|
+
fields: () => ({
|
|
330
|
+
...mapValue(config.fields, extendField),
|
|
331
|
+
...buildFieldMap(extensions),
|
|
332
|
+
}),
|
|
333
|
+
extensionASTNodes: config.extensionASTNodes.concat(extensions),
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
function extendInterfaceType(type) {
|
|
338
|
+
var _typeExtensionsMap$co4;
|
|
339
|
+
|
|
340
|
+
const config = type.toConfig();
|
|
341
|
+
const extensions =
|
|
342
|
+
(_typeExtensionsMap$co4 = typeExtensionsMap[config.name]) !== null &&
|
|
343
|
+
_typeExtensionsMap$co4 !== void 0
|
|
344
|
+
? _typeExtensionsMap$co4
|
|
345
|
+
: [];
|
|
346
|
+
return new GraphQLInterfaceType({
|
|
347
|
+
...config,
|
|
348
|
+
interfaces: () => [
|
|
349
|
+
...type.getInterfaces().map(replaceNamedType),
|
|
350
|
+
...buildInterfaces(extensions),
|
|
351
|
+
],
|
|
352
|
+
fields: () => ({
|
|
353
|
+
...mapValue(config.fields, extendField),
|
|
354
|
+
...buildFieldMap(extensions),
|
|
355
|
+
}),
|
|
356
|
+
extensionASTNodes: config.extensionASTNodes.concat(extensions),
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
function extendUnionType(type) {
|
|
361
|
+
var _typeExtensionsMap$co5;
|
|
362
|
+
|
|
363
|
+
const config = type.toConfig();
|
|
364
|
+
const extensions =
|
|
365
|
+
(_typeExtensionsMap$co5 = typeExtensionsMap[config.name]) !== null &&
|
|
366
|
+
_typeExtensionsMap$co5 !== void 0
|
|
367
|
+
? _typeExtensionsMap$co5
|
|
368
|
+
: [];
|
|
369
|
+
return new GraphQLUnionType({
|
|
370
|
+
...config,
|
|
371
|
+
types: () => [
|
|
372
|
+
...type.getTypes().map(replaceNamedType),
|
|
373
|
+
...buildUnionTypes(extensions),
|
|
374
|
+
],
|
|
375
|
+
extensionASTNodes: config.extensionASTNodes.concat(extensions),
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
function extendField(field) {
|
|
380
|
+
return {
|
|
381
|
+
...field,
|
|
382
|
+
type: replaceType(field.type),
|
|
383
|
+
args: field.args && mapValue(field.args, extendArg),
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
function extendArg(arg) {
|
|
388
|
+
return { ...arg, type: replaceType(arg.type) };
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
function getOperationTypes(nodes) {
|
|
392
|
+
const opTypes = {};
|
|
393
|
+
|
|
394
|
+
for (const node of nodes) {
|
|
395
|
+
var _node$operationTypes;
|
|
396
|
+
|
|
397
|
+
// FIXME: https://github.com/graphql/graphql-js/issues/2203
|
|
398
|
+
const operationTypesNodes =
|
|
399
|
+
/* c8 ignore next */
|
|
400
|
+
(_node$operationTypes = node.operationTypes) !== null &&
|
|
401
|
+
_node$operationTypes !== void 0
|
|
402
|
+
? _node$operationTypes
|
|
403
|
+
: [];
|
|
404
|
+
|
|
405
|
+
for (const operationType of operationTypesNodes) {
|
|
406
|
+
// Note: While this could make early assertions to get the correctly
|
|
407
|
+
// typed values below, that would throw immediately while type system
|
|
408
|
+
// validation with validateSchema() will produce more actionable results.
|
|
409
|
+
// @ts-expect-error
|
|
410
|
+
opTypes[operationType.operation] = getNamedType(operationType.type);
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
return opTypes;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
function getNamedType(node) {
|
|
418
|
+
var _stdTypeMap$name2;
|
|
419
|
+
|
|
420
|
+
const name = node.name.value;
|
|
421
|
+
const type =
|
|
422
|
+
(_stdTypeMap$name2 = stdTypeMap[name]) !== null &&
|
|
423
|
+
_stdTypeMap$name2 !== void 0
|
|
424
|
+
? _stdTypeMap$name2
|
|
425
|
+
: typeMap[name];
|
|
426
|
+
|
|
427
|
+
if (type === undefined) {
|
|
428
|
+
throw new Error(`Unknown type: "${name}".`);
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
return type;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
function getWrappedType(node) {
|
|
435
|
+
if (node.kind === Kind.LIST_TYPE) {
|
|
436
|
+
return new GraphQLList(getWrappedType(node.type));
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
if (node.kind === Kind.NON_NULL_TYPE) {
|
|
440
|
+
return new GraphQLNonNull(getWrappedType(node.type));
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
return getNamedType(node);
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
function buildDirective(node) {
|
|
447
|
+
var _node$description;
|
|
448
|
+
|
|
449
|
+
return new GraphQLDirective({
|
|
450
|
+
name: node.name.value,
|
|
451
|
+
description:
|
|
452
|
+
(_node$description = node.description) === null ||
|
|
453
|
+
_node$description === void 0
|
|
454
|
+
? void 0
|
|
455
|
+
: _node$description.value,
|
|
456
|
+
// @ts-expect-error
|
|
457
|
+
locations: node.locations.map(({ value }) => value),
|
|
458
|
+
isRepeatable: node.repeatable,
|
|
459
|
+
args: buildArgumentMap(node.arguments),
|
|
460
|
+
astNode: node,
|
|
461
|
+
});
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
function buildFieldMap(nodes) {
|
|
465
|
+
const fieldConfigMap = Object.create(null);
|
|
466
|
+
|
|
467
|
+
for (const node of nodes) {
|
|
468
|
+
var _node$fields;
|
|
469
|
+
|
|
470
|
+
// FIXME: https://github.com/graphql/graphql-js/issues/2203
|
|
471
|
+
const nodeFields =
|
|
472
|
+
/* c8 ignore next */
|
|
473
|
+
(_node$fields = node.fields) !== null && _node$fields !== void 0
|
|
474
|
+
? _node$fields
|
|
475
|
+
: [];
|
|
476
|
+
|
|
477
|
+
for (const field of nodeFields) {
|
|
478
|
+
var _field$description;
|
|
479
|
+
|
|
480
|
+
fieldConfigMap[field.name.value] = {
|
|
481
|
+
// Note: While this could make assertions to get the correctly typed
|
|
482
|
+
// value, that would throw immediately while type system validation
|
|
483
|
+
// with validateSchema() will produce more actionable results.
|
|
484
|
+
type: getWrappedType(field.type),
|
|
485
|
+
description:
|
|
486
|
+
(_field$description = field.description) === null ||
|
|
487
|
+
_field$description === void 0
|
|
488
|
+
? void 0
|
|
489
|
+
: _field$description.value,
|
|
490
|
+
args: buildArgumentMap(field.arguments),
|
|
491
|
+
deprecationReason: getDeprecationReason(field),
|
|
492
|
+
astNode: field,
|
|
493
|
+
};
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
return fieldConfigMap;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
function buildArgumentMap(args) {
|
|
501
|
+
// FIXME: https://github.com/graphql/graphql-js/issues/2203
|
|
502
|
+
const argsNodes =
|
|
503
|
+
/* c8 ignore next */
|
|
504
|
+
args !== null && args !== void 0 ? args : [];
|
|
505
|
+
const argConfigMap = Object.create(null);
|
|
506
|
+
|
|
507
|
+
for (const arg of argsNodes) {
|
|
508
|
+
var _arg$description;
|
|
509
|
+
|
|
510
|
+
// Note: While this could make assertions to get the correctly typed
|
|
511
|
+
// value, that would throw immediately while type system validation
|
|
512
|
+
// with validateSchema() will produce more actionable results.
|
|
513
|
+
const type = getWrappedType(arg.type);
|
|
514
|
+
argConfigMap[arg.name.value] = {
|
|
515
|
+
type,
|
|
516
|
+
description:
|
|
517
|
+
(_arg$description = arg.description) === null ||
|
|
518
|
+
_arg$description === void 0
|
|
519
|
+
? void 0
|
|
520
|
+
: _arg$description.value,
|
|
521
|
+
defaultValue: valueFromAST(arg.defaultValue, type),
|
|
522
|
+
deprecationReason: getDeprecationReason(arg),
|
|
523
|
+
astNode: arg,
|
|
524
|
+
};
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
return argConfigMap;
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
function buildInputFieldMap(nodes) {
|
|
531
|
+
const inputFieldMap = Object.create(null);
|
|
532
|
+
|
|
533
|
+
for (const node of nodes) {
|
|
534
|
+
var _node$fields2;
|
|
535
|
+
|
|
536
|
+
// FIXME: https://github.com/graphql/graphql-js/issues/2203
|
|
537
|
+
const fieldsNodes =
|
|
538
|
+
/* c8 ignore next */
|
|
539
|
+
(_node$fields2 = node.fields) !== null && _node$fields2 !== void 0
|
|
540
|
+
? _node$fields2
|
|
541
|
+
: [];
|
|
542
|
+
|
|
543
|
+
for (const field of fieldsNodes) {
|
|
544
|
+
var _field$description2;
|
|
545
|
+
|
|
546
|
+
// Note: While this could make assertions to get the correctly typed
|
|
547
|
+
// value, that would throw immediately while type system validation
|
|
548
|
+
// with validateSchema() will produce more actionable results.
|
|
549
|
+
const type = getWrappedType(field.type);
|
|
550
|
+
inputFieldMap[field.name.value] = {
|
|
551
|
+
type,
|
|
552
|
+
description:
|
|
553
|
+
(_field$description2 = field.description) === null ||
|
|
554
|
+
_field$description2 === void 0
|
|
555
|
+
? void 0
|
|
556
|
+
: _field$description2.value,
|
|
557
|
+
defaultValue: valueFromAST(field.defaultValue, type),
|
|
558
|
+
deprecationReason: getDeprecationReason(field),
|
|
559
|
+
astNode: field,
|
|
560
|
+
};
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
return inputFieldMap;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
function buildEnumValueMap(nodes) {
|
|
568
|
+
const enumValueMap = Object.create(null);
|
|
569
|
+
|
|
570
|
+
for (const node of nodes) {
|
|
571
|
+
var _node$values;
|
|
572
|
+
|
|
573
|
+
// FIXME: https://github.com/graphql/graphql-js/issues/2203
|
|
574
|
+
const valuesNodes =
|
|
575
|
+
/* c8 ignore next */
|
|
576
|
+
(_node$values = node.values) !== null && _node$values !== void 0
|
|
577
|
+
? _node$values
|
|
578
|
+
: [];
|
|
579
|
+
|
|
580
|
+
for (const value of valuesNodes) {
|
|
581
|
+
var _value$description;
|
|
582
|
+
|
|
583
|
+
enumValueMap[value.name.value] = {
|
|
584
|
+
description:
|
|
585
|
+
(_value$description = value.description) === null ||
|
|
586
|
+
_value$description === void 0
|
|
587
|
+
? void 0
|
|
588
|
+
: _value$description.value,
|
|
589
|
+
deprecationReason: getDeprecationReason(value),
|
|
590
|
+
astNode: value,
|
|
591
|
+
};
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
return enumValueMap;
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
function buildInterfaces(nodes) {
|
|
599
|
+
// Note: While this could make assertions to get the correctly typed
|
|
600
|
+
// values below, that would throw immediately while type system
|
|
601
|
+
// validation with validateSchema() will produce more actionable results.
|
|
602
|
+
// @ts-expect-error
|
|
603
|
+
return nodes.flatMap(
|
|
604
|
+
// FIXME: https://github.com/graphql/graphql-js/issues/2203
|
|
605
|
+
(node) => {
|
|
606
|
+
var _node$interfaces$map, _node$interfaces;
|
|
607
|
+
|
|
608
|
+
return (
|
|
609
|
+
/* c8 ignore next */
|
|
610
|
+
(_node$interfaces$map =
|
|
611
|
+
(_node$interfaces = node.interfaces) === null ||
|
|
612
|
+
_node$interfaces === void 0
|
|
613
|
+
? void 0
|
|
614
|
+
: _node$interfaces.map(getNamedType)) !== null &&
|
|
615
|
+
_node$interfaces$map !== void 0
|
|
616
|
+
? _node$interfaces$map
|
|
617
|
+
: []
|
|
618
|
+
);
|
|
619
|
+
},
|
|
620
|
+
);
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
function buildUnionTypes(nodes) {
|
|
624
|
+
// Note: While this could make assertions to get the correctly typed
|
|
625
|
+
// values below, that would throw immediately while type system
|
|
626
|
+
// validation with validateSchema() will produce more actionable results.
|
|
627
|
+
// @ts-expect-error
|
|
628
|
+
return nodes.flatMap(
|
|
629
|
+
// FIXME: https://github.com/graphql/graphql-js/issues/2203
|
|
630
|
+
(node) => {
|
|
631
|
+
var _node$types$map, _node$types;
|
|
632
|
+
|
|
633
|
+
return (
|
|
634
|
+
/* c8 ignore next */
|
|
635
|
+
(_node$types$map =
|
|
636
|
+
(_node$types = node.types) === null || _node$types === void 0
|
|
637
|
+
? void 0
|
|
638
|
+
: _node$types.map(getNamedType)) !== null &&
|
|
639
|
+
_node$types$map !== void 0
|
|
640
|
+
? _node$types$map
|
|
641
|
+
: []
|
|
642
|
+
);
|
|
643
|
+
},
|
|
644
|
+
);
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
function buildType(astNode) {
|
|
648
|
+
var _typeExtensionsMap$na;
|
|
649
|
+
|
|
650
|
+
const name = astNode.name.value;
|
|
651
|
+
const extensionASTNodes =
|
|
652
|
+
(_typeExtensionsMap$na = typeExtensionsMap[name]) !== null &&
|
|
653
|
+
_typeExtensionsMap$na !== void 0
|
|
654
|
+
? _typeExtensionsMap$na
|
|
655
|
+
: [];
|
|
656
|
+
|
|
657
|
+
switch (astNode.kind) {
|
|
658
|
+
case Kind.OBJECT_TYPE_DEFINITION: {
|
|
659
|
+
var _astNode$description;
|
|
660
|
+
|
|
661
|
+
const allNodes = [astNode, ...extensionASTNodes];
|
|
662
|
+
return new GraphQLObjectType({
|
|
663
|
+
name,
|
|
664
|
+
description:
|
|
665
|
+
(_astNode$description = astNode.description) === null ||
|
|
666
|
+
_astNode$description === void 0
|
|
667
|
+
? void 0
|
|
668
|
+
: _astNode$description.value,
|
|
669
|
+
interfaces: () => buildInterfaces(allNodes),
|
|
670
|
+
fields: () => buildFieldMap(allNodes),
|
|
671
|
+
astNode,
|
|
672
|
+
extensionASTNodes,
|
|
673
|
+
});
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
case Kind.INTERFACE_TYPE_DEFINITION: {
|
|
677
|
+
var _astNode$description2;
|
|
678
|
+
|
|
679
|
+
const allNodes = [astNode, ...extensionASTNodes];
|
|
680
|
+
return new GraphQLInterfaceType({
|
|
681
|
+
name,
|
|
682
|
+
description:
|
|
683
|
+
(_astNode$description2 = astNode.description) === null ||
|
|
684
|
+
_astNode$description2 === void 0
|
|
685
|
+
? void 0
|
|
686
|
+
: _astNode$description2.value,
|
|
687
|
+
interfaces: () => buildInterfaces(allNodes),
|
|
688
|
+
fields: () => buildFieldMap(allNodes),
|
|
689
|
+
astNode,
|
|
690
|
+
extensionASTNodes,
|
|
691
|
+
});
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
case Kind.ENUM_TYPE_DEFINITION: {
|
|
695
|
+
var _astNode$description3;
|
|
696
|
+
|
|
697
|
+
const allNodes = [astNode, ...extensionASTNodes];
|
|
698
|
+
return new GraphQLEnumType({
|
|
699
|
+
name,
|
|
700
|
+
description:
|
|
701
|
+
(_astNode$description3 = astNode.description) === null ||
|
|
702
|
+
_astNode$description3 === void 0
|
|
703
|
+
? void 0
|
|
704
|
+
: _astNode$description3.value,
|
|
705
|
+
values: buildEnumValueMap(allNodes),
|
|
706
|
+
astNode,
|
|
707
|
+
extensionASTNodes,
|
|
708
|
+
});
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
case Kind.UNION_TYPE_DEFINITION: {
|
|
712
|
+
var _astNode$description4;
|
|
713
|
+
|
|
714
|
+
const allNodes = [astNode, ...extensionASTNodes];
|
|
715
|
+
return new GraphQLUnionType({
|
|
716
|
+
name,
|
|
717
|
+
description:
|
|
718
|
+
(_astNode$description4 = astNode.description) === null ||
|
|
719
|
+
_astNode$description4 === void 0
|
|
720
|
+
? void 0
|
|
721
|
+
: _astNode$description4.value,
|
|
722
|
+
types: () => buildUnionTypes(allNodes),
|
|
723
|
+
astNode,
|
|
724
|
+
extensionASTNodes,
|
|
725
|
+
});
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
case Kind.SCALAR_TYPE_DEFINITION: {
|
|
729
|
+
var _astNode$description5;
|
|
730
|
+
|
|
731
|
+
return new GraphQLScalarType({
|
|
732
|
+
name,
|
|
733
|
+
description:
|
|
734
|
+
(_astNode$description5 = astNode.description) === null ||
|
|
735
|
+
_astNode$description5 === void 0
|
|
736
|
+
? void 0
|
|
737
|
+
: _astNode$description5.value,
|
|
738
|
+
specifiedByURL: getSpecifiedByURL(astNode),
|
|
739
|
+
astNode,
|
|
740
|
+
extensionASTNodes,
|
|
741
|
+
});
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
case Kind.INPUT_OBJECT_TYPE_DEFINITION: {
|
|
745
|
+
var _astNode$description6;
|
|
746
|
+
|
|
747
|
+
const allNodes = [astNode, ...extensionASTNodes];
|
|
748
|
+
return new GraphQLInputObjectType({
|
|
749
|
+
name,
|
|
750
|
+
description:
|
|
751
|
+
(_astNode$description6 = astNode.description) === null ||
|
|
752
|
+
_astNode$description6 === void 0
|
|
753
|
+
? void 0
|
|
754
|
+
: _astNode$description6.value,
|
|
755
|
+
fields: () => buildInputFieldMap(allNodes),
|
|
756
|
+
astNode,
|
|
757
|
+
extensionASTNodes,
|
|
758
|
+
});
|
|
759
|
+
}
|
|
760
|
+
}
|
|
761
|
+
}
|
|
762
|
+
}
|
|
763
|
+
const stdTypeMap = keyMap(
|
|
764
|
+
[...specifiedScalarTypes, ...introspectionTypes],
|
|
765
|
+
(type) => type.name,
|
|
766
|
+
);
|
|
767
|
+
/**
|
|
768
|
+
* Given a field or enum value node, returns the string value for the
|
|
769
|
+
* deprecation reason.
|
|
770
|
+
*/
|
|
771
|
+
|
|
772
|
+
function getDeprecationReason(node) {
|
|
773
|
+
const deprecated = getDirectiveValues(GraphQLDeprecatedDirective, node); // @ts-expect-error validated by `getDirectiveValues`
|
|
774
|
+
|
|
775
|
+
return deprecated === null || deprecated === void 0
|
|
776
|
+
? void 0
|
|
777
|
+
: deprecated.reason;
|
|
778
|
+
}
|
|
779
|
+
/**
|
|
780
|
+
* Given a scalar node, returns the string value for the specifiedByURL.
|
|
781
|
+
*/
|
|
782
|
+
|
|
783
|
+
function getSpecifiedByURL(node) {
|
|
784
|
+
const specifiedBy = getDirectiveValues(GraphQLSpecifiedByDirective, node); // @ts-expect-error validated by `getDirectiveValues`
|
|
785
|
+
|
|
786
|
+
return specifiedBy === null || specifiedBy === void 0
|
|
787
|
+
? void 0
|
|
788
|
+
: specifiedBy.url;
|
|
789
|
+
}
|