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,395 @@
|
|
|
1
|
+
import { isNode } from '../language/ast.mjs';
|
|
2
|
+
import { Kind } from '../language/kinds.mjs';
|
|
3
|
+
import { getEnterLeaveForKind } from '../language/visitor.mjs';
|
|
4
|
+
import {
|
|
5
|
+
getNamedType,
|
|
6
|
+
getNullableType,
|
|
7
|
+
isCompositeType,
|
|
8
|
+
isEnumType,
|
|
9
|
+
isInputObjectType,
|
|
10
|
+
isInputType,
|
|
11
|
+
isInterfaceType,
|
|
12
|
+
isListType,
|
|
13
|
+
isObjectType,
|
|
14
|
+
isOutputType,
|
|
15
|
+
} from '../type/definition.mjs';
|
|
16
|
+
import {
|
|
17
|
+
SchemaMetaFieldDef,
|
|
18
|
+
TypeMetaFieldDef,
|
|
19
|
+
TypeNameMetaFieldDef,
|
|
20
|
+
} from '../type/introspection.mjs';
|
|
21
|
+
import { typeFromAST } from './typeFromAST.mjs';
|
|
22
|
+
/**
|
|
23
|
+
* TypeInfo is a utility class which, given a GraphQL schema, can keep track
|
|
24
|
+
* of the current field and type definitions at any point in a GraphQL document
|
|
25
|
+
* AST during a recursive descent by calling `enter(node)` and `leave(node)`.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
export class TypeInfo {
|
|
29
|
+
constructor(
|
|
30
|
+
schema,
|
|
31
|
+
/**
|
|
32
|
+
* Initial type may be provided in rare cases to facilitate traversals
|
|
33
|
+
* beginning somewhere other than documents.
|
|
34
|
+
*/
|
|
35
|
+
initialType,
|
|
36
|
+
/** @deprecated will be removed in 17.0.0 */
|
|
37
|
+
getFieldDefFn,
|
|
38
|
+
) {
|
|
39
|
+
this._schema = schema;
|
|
40
|
+
this._typeStack = [];
|
|
41
|
+
this._parentTypeStack = [];
|
|
42
|
+
this._inputTypeStack = [];
|
|
43
|
+
this._fieldDefStack = [];
|
|
44
|
+
this._defaultValueStack = [];
|
|
45
|
+
this._directive = null;
|
|
46
|
+
this._argument = null;
|
|
47
|
+
this._enumValue = null;
|
|
48
|
+
this._getFieldDef =
|
|
49
|
+
getFieldDefFn !== null && getFieldDefFn !== void 0
|
|
50
|
+
? getFieldDefFn
|
|
51
|
+
: getFieldDef;
|
|
52
|
+
|
|
53
|
+
if (initialType) {
|
|
54
|
+
if (isInputType(initialType)) {
|
|
55
|
+
this._inputTypeStack.push(initialType);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (isCompositeType(initialType)) {
|
|
59
|
+
this._parentTypeStack.push(initialType);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (isOutputType(initialType)) {
|
|
63
|
+
this._typeStack.push(initialType);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
get [Symbol.toStringTag]() {
|
|
69
|
+
return 'TypeInfo';
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
getType() {
|
|
73
|
+
if (this._typeStack.length > 0) {
|
|
74
|
+
return this._typeStack[this._typeStack.length - 1];
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
getParentType() {
|
|
79
|
+
if (this._parentTypeStack.length > 0) {
|
|
80
|
+
return this._parentTypeStack[this._parentTypeStack.length - 1];
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
getInputType() {
|
|
85
|
+
if (this._inputTypeStack.length > 0) {
|
|
86
|
+
return this._inputTypeStack[this._inputTypeStack.length - 1];
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
getParentInputType() {
|
|
91
|
+
if (this._inputTypeStack.length > 1) {
|
|
92
|
+
return this._inputTypeStack[this._inputTypeStack.length - 2];
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
getFieldDef() {
|
|
97
|
+
if (this._fieldDefStack.length > 0) {
|
|
98
|
+
return this._fieldDefStack[this._fieldDefStack.length - 1];
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
getDefaultValue() {
|
|
103
|
+
if (this._defaultValueStack.length > 0) {
|
|
104
|
+
return this._defaultValueStack[this._defaultValueStack.length - 1];
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
getDirective() {
|
|
109
|
+
return this._directive;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
getArgument() {
|
|
113
|
+
return this._argument;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
getEnumValue() {
|
|
117
|
+
return this._enumValue;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
enter(node) {
|
|
121
|
+
const schema = this._schema; // Note: many of the types below are explicitly typed as "unknown" to drop
|
|
122
|
+
// any assumptions of a valid schema to ensure runtime types are properly
|
|
123
|
+
// checked before continuing since TypeInfo is used as part of validation
|
|
124
|
+
// which occurs before guarantees of schema and document validity.
|
|
125
|
+
|
|
126
|
+
switch (node.kind) {
|
|
127
|
+
case Kind.SELECTION_SET: {
|
|
128
|
+
const namedType = getNamedType(this.getType());
|
|
129
|
+
|
|
130
|
+
this._parentTypeStack.push(
|
|
131
|
+
isCompositeType(namedType) ? namedType : undefined,
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
case Kind.FIELD: {
|
|
138
|
+
const parentType = this.getParentType();
|
|
139
|
+
let fieldDef;
|
|
140
|
+
let fieldType;
|
|
141
|
+
|
|
142
|
+
if (parentType) {
|
|
143
|
+
fieldDef = this._getFieldDef(schema, parentType, node);
|
|
144
|
+
|
|
145
|
+
if (fieldDef) {
|
|
146
|
+
fieldType = fieldDef.type;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
this._fieldDefStack.push(fieldDef);
|
|
151
|
+
|
|
152
|
+
this._typeStack.push(isOutputType(fieldType) ? fieldType : undefined);
|
|
153
|
+
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
case Kind.DIRECTIVE:
|
|
158
|
+
this._directive = schema.getDirective(node.name.value);
|
|
159
|
+
break;
|
|
160
|
+
|
|
161
|
+
case Kind.OPERATION_DEFINITION: {
|
|
162
|
+
const rootType = schema.getRootType(node.operation);
|
|
163
|
+
|
|
164
|
+
this._typeStack.push(isObjectType(rootType) ? rootType : undefined);
|
|
165
|
+
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
case Kind.INLINE_FRAGMENT:
|
|
170
|
+
case Kind.FRAGMENT_DEFINITION: {
|
|
171
|
+
const typeConditionAST = node.typeCondition;
|
|
172
|
+
const outputType = typeConditionAST
|
|
173
|
+
? typeFromAST(schema, typeConditionAST)
|
|
174
|
+
: getNamedType(this.getType());
|
|
175
|
+
|
|
176
|
+
this._typeStack.push(isOutputType(outputType) ? outputType : undefined);
|
|
177
|
+
|
|
178
|
+
break;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
case Kind.VARIABLE_DEFINITION: {
|
|
182
|
+
const inputType = typeFromAST(schema, node.type);
|
|
183
|
+
|
|
184
|
+
this._inputTypeStack.push(
|
|
185
|
+
isInputType(inputType) ? inputType : undefined,
|
|
186
|
+
);
|
|
187
|
+
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
case Kind.ARGUMENT: {
|
|
192
|
+
var _this$getDirective;
|
|
193
|
+
|
|
194
|
+
let argDef;
|
|
195
|
+
let argType;
|
|
196
|
+
const fieldOrDirective =
|
|
197
|
+
(_this$getDirective = this.getDirective()) !== null &&
|
|
198
|
+
_this$getDirective !== void 0
|
|
199
|
+
? _this$getDirective
|
|
200
|
+
: this.getFieldDef();
|
|
201
|
+
|
|
202
|
+
if (fieldOrDirective) {
|
|
203
|
+
argDef = fieldOrDirective.args.find(
|
|
204
|
+
(arg) => arg.name === node.name.value,
|
|
205
|
+
);
|
|
206
|
+
|
|
207
|
+
if (argDef) {
|
|
208
|
+
argType = argDef.type;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
this._argument = argDef;
|
|
213
|
+
|
|
214
|
+
this._defaultValueStack.push(argDef ? argDef.defaultValue : undefined);
|
|
215
|
+
|
|
216
|
+
this._inputTypeStack.push(isInputType(argType) ? argType : undefined);
|
|
217
|
+
|
|
218
|
+
break;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
case Kind.LIST: {
|
|
222
|
+
const listType = getNullableType(this.getInputType());
|
|
223
|
+
const itemType = isListType(listType) ? listType.ofType : listType; // List positions never have a default value.
|
|
224
|
+
|
|
225
|
+
this._defaultValueStack.push(undefined);
|
|
226
|
+
|
|
227
|
+
this._inputTypeStack.push(isInputType(itemType) ? itemType : undefined);
|
|
228
|
+
|
|
229
|
+
break;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
case Kind.OBJECT_FIELD: {
|
|
233
|
+
const objectType = getNamedType(this.getInputType());
|
|
234
|
+
let inputFieldType;
|
|
235
|
+
let inputField;
|
|
236
|
+
|
|
237
|
+
if (isInputObjectType(objectType)) {
|
|
238
|
+
inputField = objectType.getFields()[node.name.value];
|
|
239
|
+
|
|
240
|
+
if (inputField) {
|
|
241
|
+
inputFieldType = inputField.type;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
this._defaultValueStack.push(
|
|
246
|
+
inputField ? inputField.defaultValue : undefined,
|
|
247
|
+
);
|
|
248
|
+
|
|
249
|
+
this._inputTypeStack.push(
|
|
250
|
+
isInputType(inputFieldType) ? inputFieldType : undefined,
|
|
251
|
+
);
|
|
252
|
+
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
case Kind.ENUM: {
|
|
257
|
+
const enumType = getNamedType(this.getInputType());
|
|
258
|
+
let enumValue;
|
|
259
|
+
|
|
260
|
+
if (isEnumType(enumType)) {
|
|
261
|
+
enumValue = enumType.getValue(node.value);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
this._enumValue = enumValue;
|
|
265
|
+
break;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
default: // Ignore other nodes
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
leave(node) {
|
|
273
|
+
switch (node.kind) {
|
|
274
|
+
case Kind.SELECTION_SET:
|
|
275
|
+
this._parentTypeStack.pop();
|
|
276
|
+
|
|
277
|
+
break;
|
|
278
|
+
|
|
279
|
+
case Kind.FIELD:
|
|
280
|
+
this._fieldDefStack.pop();
|
|
281
|
+
|
|
282
|
+
this._typeStack.pop();
|
|
283
|
+
|
|
284
|
+
break;
|
|
285
|
+
|
|
286
|
+
case Kind.DIRECTIVE:
|
|
287
|
+
this._directive = null;
|
|
288
|
+
break;
|
|
289
|
+
|
|
290
|
+
case Kind.OPERATION_DEFINITION:
|
|
291
|
+
case Kind.INLINE_FRAGMENT:
|
|
292
|
+
case Kind.FRAGMENT_DEFINITION:
|
|
293
|
+
this._typeStack.pop();
|
|
294
|
+
|
|
295
|
+
break;
|
|
296
|
+
|
|
297
|
+
case Kind.VARIABLE_DEFINITION:
|
|
298
|
+
this._inputTypeStack.pop();
|
|
299
|
+
|
|
300
|
+
break;
|
|
301
|
+
|
|
302
|
+
case Kind.ARGUMENT:
|
|
303
|
+
this._argument = null;
|
|
304
|
+
|
|
305
|
+
this._defaultValueStack.pop();
|
|
306
|
+
|
|
307
|
+
this._inputTypeStack.pop();
|
|
308
|
+
|
|
309
|
+
break;
|
|
310
|
+
|
|
311
|
+
case Kind.LIST:
|
|
312
|
+
case Kind.OBJECT_FIELD:
|
|
313
|
+
this._defaultValueStack.pop();
|
|
314
|
+
|
|
315
|
+
this._inputTypeStack.pop();
|
|
316
|
+
|
|
317
|
+
break;
|
|
318
|
+
|
|
319
|
+
case Kind.ENUM:
|
|
320
|
+
this._enumValue = null;
|
|
321
|
+
break;
|
|
322
|
+
|
|
323
|
+
default: // Ignore other nodes
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Not exactly the same as the executor's definition of getFieldDef, in this
|
|
330
|
+
* statically evaluated environment we do not always have an Object type,
|
|
331
|
+
* and need to handle Interface and Union types.
|
|
332
|
+
*/
|
|
333
|
+
function getFieldDef(schema, parentType, fieldNode) {
|
|
334
|
+
const name = fieldNode.name.value;
|
|
335
|
+
|
|
336
|
+
if (
|
|
337
|
+
name === SchemaMetaFieldDef.name &&
|
|
338
|
+
schema.getQueryType() === parentType
|
|
339
|
+
) {
|
|
340
|
+
return SchemaMetaFieldDef;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
if (name === TypeMetaFieldDef.name && schema.getQueryType() === parentType) {
|
|
344
|
+
return TypeMetaFieldDef;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
if (name === TypeNameMetaFieldDef.name && isCompositeType(parentType)) {
|
|
348
|
+
return TypeNameMetaFieldDef;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
if (isObjectType(parentType) || isInterfaceType(parentType)) {
|
|
352
|
+
return parentType.getFields()[name];
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Creates a new visitor instance which maintains a provided TypeInfo instance
|
|
357
|
+
* along with visiting visitor.
|
|
358
|
+
*/
|
|
359
|
+
|
|
360
|
+
export function visitWithTypeInfo(typeInfo, visitor) {
|
|
361
|
+
return {
|
|
362
|
+
enter(...args) {
|
|
363
|
+
const node = args[0];
|
|
364
|
+
typeInfo.enter(node);
|
|
365
|
+
const fn = getEnterLeaveForKind(visitor, node.kind).enter;
|
|
366
|
+
|
|
367
|
+
if (fn) {
|
|
368
|
+
const result = fn.apply(visitor, args);
|
|
369
|
+
|
|
370
|
+
if (result !== undefined) {
|
|
371
|
+
typeInfo.leave(node);
|
|
372
|
+
|
|
373
|
+
if (isNode(result)) {
|
|
374
|
+
typeInfo.enter(result);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
return result;
|
|
379
|
+
}
|
|
380
|
+
},
|
|
381
|
+
|
|
382
|
+
leave(...args) {
|
|
383
|
+
const node = args[0];
|
|
384
|
+
const fn = getEnterLeaveForKind(visitor, node.kind).leave;
|
|
385
|
+
let result;
|
|
386
|
+
|
|
387
|
+
if (fn) {
|
|
388
|
+
result = fn.apply(visitor, args);
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
typeInfo.leave(node);
|
|
392
|
+
return result;
|
|
393
|
+
},
|
|
394
|
+
};
|
|
395
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { GraphQLError } from '../error/GraphQLError';
|
|
2
|
+
/**
|
|
3
|
+
* Upholds the spec rules about naming.
|
|
4
|
+
* @deprecated Please use `assertName` instead. Will be removed in v17
|
|
5
|
+
*/
|
|
6
|
+
export declare function assertValidName(name: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* Returns an Error if a name is invalid.
|
|
9
|
+
* @deprecated Please use `assertName` instead. Will be removed in v17
|
|
10
|
+
*/
|
|
11
|
+
export declare function isValidNameError(
|
|
12
|
+
name: string,
|
|
13
|
+
): GraphQLError | undefined;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.assertValidName = assertValidName;
|
|
7
|
+
exports.isValidNameError = isValidNameError;
|
|
8
|
+
|
|
9
|
+
var _devAssert = require('../jsutils/devAssert.js');
|
|
10
|
+
|
|
11
|
+
var _GraphQLError = require('../error/GraphQLError.js');
|
|
12
|
+
|
|
13
|
+
var _assertName = require('../type/assertName.js');
|
|
14
|
+
|
|
15
|
+
/* c8 ignore start */
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Upholds the spec rules about naming.
|
|
19
|
+
* @deprecated Please use `assertName` instead. Will be removed in v17
|
|
20
|
+
*/
|
|
21
|
+
function assertValidName(name) {
|
|
22
|
+
const error = isValidNameError(name);
|
|
23
|
+
|
|
24
|
+
if (error) {
|
|
25
|
+
throw error;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return name;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Returns an Error if a name is invalid.
|
|
32
|
+
* @deprecated Please use `assertName` instead. Will be removed in v17
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
function isValidNameError(name) {
|
|
36
|
+
typeof name === 'string' ||
|
|
37
|
+
(0, _devAssert.devAssert)(false, 'Expected name to be a string.');
|
|
38
|
+
|
|
39
|
+
if (name.startsWith('__')) {
|
|
40
|
+
return new _GraphQLError.GraphQLError(
|
|
41
|
+
`Name "${name}" must not begin with "__", which is reserved by GraphQL introspection.`,
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
try {
|
|
46
|
+
(0, _assertName.assertName)(name);
|
|
47
|
+
} catch (error) {
|
|
48
|
+
return error;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/* c8 ignore stop */
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { devAssert } from '../jsutils/devAssert.mjs';
|
|
2
|
+
import { GraphQLError } from '../error/GraphQLError.mjs';
|
|
3
|
+
import { assertName } from '../type/assertName.mjs';
|
|
4
|
+
/* c8 ignore start */
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Upholds the spec rules about naming.
|
|
8
|
+
* @deprecated Please use `assertName` instead. Will be removed in v17
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export function assertValidName(name) {
|
|
12
|
+
const error = isValidNameError(name);
|
|
13
|
+
|
|
14
|
+
if (error) {
|
|
15
|
+
throw error;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return name;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Returns an Error if a name is invalid.
|
|
22
|
+
* @deprecated Please use `assertName` instead. Will be removed in v17
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
export function isValidNameError(name) {
|
|
26
|
+
typeof name === 'string' || devAssert(false, 'Expected name to be a string.');
|
|
27
|
+
|
|
28
|
+
if (name.startsWith('__')) {
|
|
29
|
+
return new GraphQLError(
|
|
30
|
+
`Name "${name}" must not begin with "__", which is reserved by GraphQL introspection.`,
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
try {
|
|
35
|
+
assertName(name);
|
|
36
|
+
} catch (error) {
|
|
37
|
+
return error;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/* c8 ignore stop */
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Maybe } from '../jsutils/Maybe';
|
|
2
|
+
import type { ValueNode } from '../language/ast';
|
|
3
|
+
import type { GraphQLInputType } from '../type/definition';
|
|
4
|
+
/**
|
|
5
|
+
* Produces a GraphQL Value AST given a JavaScript object.
|
|
6
|
+
* Function will match JavaScript/JSON values to GraphQL AST schema format
|
|
7
|
+
* by using suggested GraphQLInputType. For example:
|
|
8
|
+
*
|
|
9
|
+
* astFromValue("value", GraphQLString)
|
|
10
|
+
*
|
|
11
|
+
* A GraphQL type must be provided, which will be used to interpret different
|
|
12
|
+
* JavaScript values.
|
|
13
|
+
*
|
|
14
|
+
* | JSON Value | GraphQL Value |
|
|
15
|
+
* | ------------- | -------------------- |
|
|
16
|
+
* | Object | Input Object |
|
|
17
|
+
* | Array | List |
|
|
18
|
+
* | Boolean | Boolean |
|
|
19
|
+
* | String | String / Enum Value |
|
|
20
|
+
* | Number | Int / Float |
|
|
21
|
+
* | Unknown | Enum Value |
|
|
22
|
+
* | null | NullValue |
|
|
23
|
+
*
|
|
24
|
+
*/
|
|
25
|
+
export declare function astFromValue(
|
|
26
|
+
value: unknown,
|
|
27
|
+
type: GraphQLInputType,
|
|
28
|
+
): Maybe<ValueNode>;
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', {
|
|
4
|
+
value: true,
|
|
5
|
+
});
|
|
6
|
+
exports.astFromValue = astFromValue;
|
|
7
|
+
|
|
8
|
+
var _inspect = require('../jsutils/inspect.js');
|
|
9
|
+
|
|
10
|
+
var _invariant = require('../jsutils/invariant.js');
|
|
11
|
+
|
|
12
|
+
var _isIterableObject = require('../jsutils/isIterableObject.js');
|
|
13
|
+
|
|
14
|
+
var _isObjectLike = require('../jsutils/isObjectLike.js');
|
|
15
|
+
|
|
16
|
+
var _kinds = require('../language/kinds.js');
|
|
17
|
+
|
|
18
|
+
var _definition = require('../type/definition.js');
|
|
19
|
+
|
|
20
|
+
var _scalars = require('../type/scalars.js');
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Produces a GraphQL Value AST given a JavaScript object.
|
|
24
|
+
* Function will match JavaScript/JSON values to GraphQL AST schema format
|
|
25
|
+
* by using suggested GraphQLInputType. For example:
|
|
26
|
+
*
|
|
27
|
+
* astFromValue("value", GraphQLString)
|
|
28
|
+
*
|
|
29
|
+
* A GraphQL type must be provided, which will be used to interpret different
|
|
30
|
+
* JavaScript values.
|
|
31
|
+
*
|
|
32
|
+
* | JSON Value | GraphQL Value |
|
|
33
|
+
* | ------------- | -------------------- |
|
|
34
|
+
* | Object | Input Object |
|
|
35
|
+
* | Array | List |
|
|
36
|
+
* | Boolean | Boolean |
|
|
37
|
+
* | String | String / Enum Value |
|
|
38
|
+
* | Number | Int / Float |
|
|
39
|
+
* | Unknown | Enum Value |
|
|
40
|
+
* | null | NullValue |
|
|
41
|
+
*
|
|
42
|
+
*/
|
|
43
|
+
function astFromValue(value, type) {
|
|
44
|
+
if ((0, _definition.isNonNullType)(type)) {
|
|
45
|
+
const astValue = astFromValue(value, type.ofType);
|
|
46
|
+
|
|
47
|
+
if (
|
|
48
|
+
(astValue === null || astValue === void 0 ? void 0 : astValue.kind) ===
|
|
49
|
+
_kinds.Kind.NULL
|
|
50
|
+
) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return astValue;
|
|
55
|
+
} // only explicit null, not undefined, NaN
|
|
56
|
+
|
|
57
|
+
if (value === null) {
|
|
58
|
+
return {
|
|
59
|
+
kind: _kinds.Kind.NULL,
|
|
60
|
+
};
|
|
61
|
+
} // undefined
|
|
62
|
+
|
|
63
|
+
if (value === undefined) {
|
|
64
|
+
return null;
|
|
65
|
+
} // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but
|
|
66
|
+
// the value is not an array, convert the value using the list's item type.
|
|
67
|
+
|
|
68
|
+
if ((0, _definition.isListType)(type)) {
|
|
69
|
+
const itemType = type.ofType;
|
|
70
|
+
|
|
71
|
+
if ((0, _isIterableObject.isIterableObject)(value)) {
|
|
72
|
+
const valuesNodes = [];
|
|
73
|
+
|
|
74
|
+
for (const item of value) {
|
|
75
|
+
const itemNode = astFromValue(item, itemType);
|
|
76
|
+
|
|
77
|
+
if (itemNode != null) {
|
|
78
|
+
valuesNodes.push(itemNode);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return {
|
|
83
|
+
kind: _kinds.Kind.LIST,
|
|
84
|
+
values: valuesNodes,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return astFromValue(value, itemType);
|
|
89
|
+
} // Populate the fields of the input object by creating ASTs from each value
|
|
90
|
+
// in the JavaScript object according to the fields in the input type.
|
|
91
|
+
|
|
92
|
+
if ((0, _definition.isInputObjectType)(type)) {
|
|
93
|
+
if (!(0, _isObjectLike.isObjectLike)(value)) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const fieldNodes = [];
|
|
98
|
+
|
|
99
|
+
for (const field of Object.values(type.getFields())) {
|
|
100
|
+
const fieldValue = astFromValue(value[field.name], field.type);
|
|
101
|
+
|
|
102
|
+
if (fieldValue) {
|
|
103
|
+
fieldNodes.push({
|
|
104
|
+
kind: _kinds.Kind.OBJECT_FIELD,
|
|
105
|
+
name: {
|
|
106
|
+
kind: _kinds.Kind.NAME,
|
|
107
|
+
value: field.name,
|
|
108
|
+
},
|
|
109
|
+
value: fieldValue,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return {
|
|
115
|
+
kind: _kinds.Kind.OBJECT,
|
|
116
|
+
fields: fieldNodes,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if ((0, _definition.isLeafType)(type)) {
|
|
121
|
+
// Since value is an internally represented value, it must be serialized
|
|
122
|
+
// to an externally represented value before converting into an AST.
|
|
123
|
+
const serialized = type.serialize(value);
|
|
124
|
+
|
|
125
|
+
if (serialized == null) {
|
|
126
|
+
return null;
|
|
127
|
+
} // Others serialize based on their corresponding JavaScript scalar types.
|
|
128
|
+
|
|
129
|
+
if (typeof serialized === 'boolean') {
|
|
130
|
+
return {
|
|
131
|
+
kind: _kinds.Kind.BOOLEAN,
|
|
132
|
+
value: serialized,
|
|
133
|
+
};
|
|
134
|
+
} // JavaScript numbers can be Int or Float values.
|
|
135
|
+
|
|
136
|
+
if (typeof serialized === 'number' && Number.isFinite(serialized)) {
|
|
137
|
+
const stringNum = String(serialized);
|
|
138
|
+
return integerStringRegExp.test(stringNum)
|
|
139
|
+
? {
|
|
140
|
+
kind: _kinds.Kind.INT,
|
|
141
|
+
value: stringNum,
|
|
142
|
+
}
|
|
143
|
+
: {
|
|
144
|
+
kind: _kinds.Kind.FLOAT,
|
|
145
|
+
value: stringNum,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if (typeof serialized === 'string') {
|
|
150
|
+
// Enum types use Enum literals.
|
|
151
|
+
if ((0, _definition.isEnumType)(type)) {
|
|
152
|
+
return {
|
|
153
|
+
kind: _kinds.Kind.ENUM,
|
|
154
|
+
value: serialized,
|
|
155
|
+
};
|
|
156
|
+
} // ID types can use Int literals.
|
|
157
|
+
|
|
158
|
+
if (type === _scalars.GraphQLID && integerStringRegExp.test(serialized)) {
|
|
159
|
+
return {
|
|
160
|
+
kind: _kinds.Kind.INT,
|
|
161
|
+
value: serialized,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
return {
|
|
166
|
+
kind: _kinds.Kind.STRING,
|
|
167
|
+
value: serialized,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
throw new TypeError(
|
|
172
|
+
`Cannot convert value to AST: ${(0, _inspect.inspect)(serialized)}.`,
|
|
173
|
+
);
|
|
174
|
+
}
|
|
175
|
+
/* c8 ignore next 3 */
|
|
176
|
+
// Not reachable, all possible types have been considered.
|
|
177
|
+
|
|
178
|
+
false ||
|
|
179
|
+
(0, _invariant.invariant)(
|
|
180
|
+
false,
|
|
181
|
+
'Unexpected input type: ' + (0, _inspect.inspect)(type),
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* IntValue:
|
|
186
|
+
* - NegativeSign? 0
|
|
187
|
+
* - NegativeSign? NonZeroDigit ( Digit+ )?
|
|
188
|
+
*/
|
|
189
|
+
|
|
190
|
+
const integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;
|