graphql 16.13.2 → 16.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/error/GraphQLError.d.ts +151 -15
- package/error/GraphQLError.js +143 -12
- package/error/GraphQLError.mjs +143 -12
- package/error/index.d.ts +6 -0
- package/error/index.mjs +6 -0
- package/error/locatedError.d.ts +20 -0
- package/error/locatedError.js +21 -0
- package/error/locatedError.mjs +20 -0
- package/error/syntaxError.d.ts +15 -0
- package/error/syntaxError.js +16 -0
- package/error/syntaxError.mjs +15 -0
- package/execution/collectFields.js +6 -0
- package/execution/collectFields.mjs +6 -0
- package/execution/execute.d.ts +211 -12
- package/execution/execute.js +214 -23
- package/execution/execute.mjs +213 -23
- package/execution/index.d.ts +6 -0
- package/execution/index.mjs +6 -0
- package/execution/mapAsyncIterator.d.ts +2 -0
- package/execution/mapAsyncIterator.js +2 -0
- package/execution/mapAsyncIterator.mjs +2 -0
- package/execution/subscribe.d.ts +195 -5
- package/execution/subscribe.js +154 -11
- package/execution/subscribe.mjs +153 -11
- package/execution/values.d.ts +167 -10
- package/execution/values.js +149 -5
- package/execution/values.mjs +148 -5
- package/graphql.d.ts +163 -41
- package/graphql.js +126 -4
- package/graphql.mjs +131 -41
- package/index.d.ts +12 -17
- package/index.mjs +13 -19
- package/jsutils/Maybe.d.ts +5 -1
- package/jsutils/ObjMap.d.ts +4 -0
- package/jsutils/Path.d.ts +30 -0
- package/jsutils/Path.js +29 -0
- package/jsutils/Path.mjs +29 -0
- package/jsutils/PromiseOrValue.d.ts +1 -0
- package/jsutils/devAssert.d.ts +1 -0
- package/jsutils/devAssert.js +1 -0
- package/jsutils/devAssert.mjs +1 -0
- package/jsutils/didYouMean.d.ts +4 -1
- package/jsutils/didYouMean.js +4 -1
- package/jsutils/didYouMean.mjs +4 -1
- package/jsutils/groupBy.d.ts +2 -0
- package/jsutils/groupBy.js +2 -0
- package/jsutils/groupBy.mjs +2 -0
- package/jsutils/identityFunc.d.ts +2 -0
- package/jsutils/identityFunc.js +2 -0
- package/jsutils/identityFunc.mjs +2 -0
- package/jsutils/inspect.d.ts +2 -0
- package/jsutils/inspect.js +2 -0
- package/jsutils/inspect.mjs +2 -0
- package/jsutils/instanceOf.d.ts +2 -0
- package/jsutils/instanceOf.js +2 -0
- package/jsutils/instanceOf.mjs +2 -0
- package/jsutils/invariant.d.ts +1 -0
- package/jsutils/invariant.js +1 -0
- package/jsutils/invariant.mjs +1 -0
- package/jsutils/isAsyncIterable.d.ts +2 -0
- package/jsutils/isAsyncIterable.js +2 -0
- package/jsutils/isAsyncIterable.mjs +2 -0
- package/jsutils/isIterableObject.d.ts +6 -5
- package/jsutils/isIterableObject.js +6 -5
- package/jsutils/isIterableObject.mjs +6 -5
- package/jsutils/isObjectLike.d.ts +2 -0
- package/jsutils/isObjectLike.js +2 -0
- package/jsutils/isObjectLike.mjs +2 -0
- package/jsutils/isPromise.d.ts +2 -0
- package/jsutils/isPromise.js +2 -0
- package/jsutils/isPromise.mjs +2 -0
- package/jsutils/keyMap.d.ts +7 -14
- package/jsutils/keyMap.js +7 -14
- package/jsutils/keyMap.mjs +7 -14
- package/jsutils/keyValMap.d.ts +9 -6
- package/jsutils/keyValMap.js +9 -6
- package/jsutils/keyValMap.mjs +9 -6
- package/jsutils/mapValue.d.ts +2 -0
- package/jsutils/mapValue.js +2 -0
- package/jsutils/mapValue.mjs +2 -0
- package/jsutils/memoize3.d.ts +2 -0
- package/jsutils/memoize3.js +2 -0
- package/jsutils/memoize3.mjs +2 -0
- package/jsutils/naturalCompare.d.ts +2 -0
- package/jsutils/naturalCompare.js +2 -0
- package/jsutils/naturalCompare.mjs +2 -0
- package/jsutils/printPathArray.d.ts +2 -0
- package/jsutils/printPathArray.js +2 -0
- package/jsutils/printPathArray.mjs +2 -0
- package/jsutils/promiseForObject.d.ts +2 -0
- package/jsutils/promiseForObject.js +2 -0
- package/jsutils/promiseForObject.mjs +2 -0
- package/jsutils/promiseReduce.d.ts +2 -0
- package/jsutils/promiseReduce.js +2 -0
- package/jsutils/promiseReduce.mjs +2 -0
- package/jsutils/suggestionList.d.ts +2 -0
- package/jsutils/suggestionList.js +4 -0
- package/jsutils/suggestionList.mjs +4 -0
- package/jsutils/toError.d.ts +2 -0
- package/jsutils/toError.js +2 -0
- package/jsutils/toError.mjs +2 -0
- package/jsutils/toObjMap.d.ts +1 -0
- package/jsutils/toObjMap.js +1 -0
- package/jsutils/toObjMap.mjs +1 -0
- package/language/ast.d.ts +422 -55
- package/language/ast.js +103 -39
- package/language/ast.mjs +103 -39
- package/language/blockString.d.ts +1 -3
- package/language/blockString.js +1 -3
- package/language/blockString.mjs +1 -3
- package/language/directiveLocation.d.ts +29 -8
- package/language/directiveLocation.js +10 -6
- package/language/directiveLocation.mjs +10 -6
- package/language/index.d.ts +7 -0
- package/language/index.mjs +6 -0
- package/language/kinds.d.ts +58 -18
- package/language/kinds.js +10 -6
- package/language/kinds.mjs +10 -6
- package/language/lexer.d.ts +47 -14
- package/language/lexer.js +71 -13
- package/language/lexer.mjs +70 -13
- package/language/location.d.ts +16 -3
- package/language/location.js +14 -3
- package/language/location.mjs +14 -3
- package/language/parser.d.ts +248 -11
- package/language/parser.js +257 -0
- package/language/parser.mjs +257 -3
- package/language/predicates.d.ts +169 -0
- package/language/predicates.js +173 -1
- package/language/predicates.mjs +185 -1
- package/language/printLocation.d.ts +28 -0
- package/language/printLocation.js +29 -0
- package/language/printLocation.mjs +28 -0
- package/language/printString.d.ts +2 -0
- package/language/printString.js +5 -1
- package/language/printString.mjs +5 -1
- package/language/printer.d.ts +12 -0
- package/language/printer.js +32 -1
- package/language/printer.mjs +31 -1
- package/language/schemaCoordinateLexer.d.ts +8 -6
- package/language/schemaCoordinateLexer.js +10 -6
- package/language/schemaCoordinateLexer.mjs +10 -6
- package/language/source.d.ts +28 -0
- package/language/source.js +32 -0
- package/language/source.mjs +31 -0
- package/language/tokenKind.d.ts +30 -3
- package/language/tokenKind.js +8 -3
- package/language/tokenKind.mjs +8 -3
- package/language/visitor.d.ts +200 -72
- package/language/visitor.js +122 -50
- package/language/visitor.mjs +122 -54
- package/package.json +1 -1
- package/subscription/index.d.ts +9 -3
- package/subscription/index.mjs +9 -3
- package/type/assertName.d.ts +18 -1
- package/type/assertName.js +19 -1
- package/type/assertName.mjs +18 -1
- package/type/definition.d.ts +2540 -79
- package/type/definition.js +2214 -61
- package/type/definition.mjs +2241 -60
- package/type/directives.d.ts +202 -19
- package/type/directives.js +206 -20
- package/type/directives.mjs +206 -20
- package/type/index.d.ts +6 -0
- package/type/index.mjs +6 -0
- package/type/introspection.d.ts +36 -0
- package/type/introspection.js +57 -1
- package/type/introspection.mjs +65 -1
- package/type/scalars.d.ts +29 -2
- package/type/scalars.js +37 -2
- package/type/scalars.mjs +36 -2
- package/type/schema.d.ts +490 -28
- package/type/schema.js +484 -26
- package/type/schema.mjs +484 -26
- package/type/validate.d.ts +31 -0
- package/type/validate.js +32 -0
- package/type/validate.mjs +31 -0
- package/utilities/TypeInfo.d.ts +441 -1
- package/utilities/TypeInfo.js +444 -1
- package/utilities/TypeInfo.mjs +443 -1
- package/utilities/assertValidName.d.ts +27 -2
- package/utilities/assertValidName.js +28 -2
- package/utilities/assertValidName.mjs +27 -2
- package/utilities/astFromValue.d.ts +33 -3
- package/utilities/astFromValue.js +36 -3
- package/utilities/astFromValue.mjs +35 -3
- package/utilities/buildASTSchema.d.ts +65 -6
- package/utilities/buildASTSchema.js +69 -6
- package/utilities/buildASTSchema.mjs +69 -6
- package/utilities/buildClientSchema.d.ts +15 -0
- package/utilities/buildClientSchema.js +17 -0
- package/utilities/buildClientSchema.mjs +16 -0
- package/utilities/coerceInputValue.d.ts +46 -0
- package/utilities/coerceInputValue.js +47 -0
- package/utilities/coerceInputValue.mjs +46 -0
- package/utilities/concatAST.d.ts +12 -0
- package/utilities/concatAST.js +13 -0
- package/utilities/concatAST.mjs +12 -0
- package/utilities/extendSchema.d.ts +56 -3
- package/utilities/extendSchema.js +121 -6
- package/utilities/extendSchema.mjs +120 -6
- package/utilities/findBreakingChanges.d.ts +95 -0
- package/utilities/findBreakingChanges.js +68 -0
- package/utilities/findBreakingChanges.mjs +70 -0
- package/utilities/getIntrospectionQuery.d.ts +148 -0
- package/utilities/getIntrospectionQuery.js +72 -38
- package/utilities/getIntrospectionQuery.mjs +72 -38
- package/utilities/getOperationAST.d.ts +15 -0
- package/utilities/getOperationAST.js +16 -0
- package/utilities/getOperationAST.mjs +15 -0
- package/utilities/getOperationRootType.d.ts +18 -1
- package/utilities/getOperationRootType.js +19 -1
- package/utilities/getOperationRootType.mjs +18 -1
- package/utilities/index.d.ts +7 -0
- package/utilities/index.mjs +7 -0
- package/utilities/introspectionFromSchema.d.ts +54 -0
- package/utilities/introspectionFromSchema.js +56 -0
- package/utilities/introspectionFromSchema.mjs +55 -0
- package/utilities/lexicographicSortSchema.d.ts +35 -0
- package/utilities/lexicographicSortSchema.js +36 -0
- package/utilities/lexicographicSortSchema.mjs +35 -0
- package/utilities/printSchema.d.ts +63 -0
- package/utilities/printSchema.js +67 -0
- package/utilities/printSchema.mjs +68 -0
- package/utilities/resolveSchemaCoordinate.d.ts +62 -0
- package/utilities/resolveSchemaCoordinate.js +64 -0
- package/utilities/resolveSchemaCoordinate.mjs +63 -0
- package/utilities/separateOperations.d.ts +30 -0
- package/utilities/separateOperations.js +31 -0
- package/utilities/separateOperations.mjs +30 -0
- package/utilities/stripIgnoredCharacters.d.ts +13 -6
- package/utilities/stripIgnoredCharacters.js +16 -6
- package/utilities/stripIgnoredCharacters.mjs +15 -6
- package/utilities/typeComparators.d.ts +84 -0
- package/utilities/typeComparators.js +85 -0
- package/utilities/typeComparators.mjs +84 -0
- package/utilities/typeFromAST.d.ts +86 -0
- package/utilities/typeFromAST.js +3 -0
- package/utilities/typeFromAST.mjs +3 -0
- package/utilities/typedQueryDocumentNode.d.ts +4 -0
- package/utilities/valueFromAST.d.ts +38 -0
- package/utilities/valueFromAST.js +51 -2
- package/utilities/valueFromAST.mjs +50 -2
- package/utilities/valueFromASTUntyped.d.ts +15 -2
- package/utilities/valueFromASTUntyped.js +16 -2
- package/utilities/valueFromASTUntyped.mjs +15 -2
- package/validation/ValidationContext.d.ts +399 -0
- package/validation/ValidationContext.js +400 -0
- package/validation/ValidationContext.mjs +401 -0
- package/validation/index.d.ts +6 -0
- package/validation/index.mjs +6 -0
- package/validation/rules/ExecutableDefinitionsRule.d.ts +28 -0
- package/validation/rules/ExecutableDefinitionsRule.js +29 -0
- package/validation/rules/ExecutableDefinitionsRule.mjs +28 -0
- package/validation/rules/FieldsOnCorrectTypeRule.d.ts +28 -0
- package/validation/rules/FieldsOnCorrectTypeRule.js +33 -0
- package/validation/rules/FieldsOnCorrectTypeRule.mjs +32 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.d.ts +28 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.js +29 -0
- package/validation/rules/FragmentsOnCompositeTypesRule.mjs +28 -0
- package/validation/rules/KnownArgumentNamesRule.d.ts +29 -3
- package/validation/rules/KnownArgumentNamesRule.js +30 -3
- package/validation/rules/KnownArgumentNamesRule.mjs +29 -3
- package/validation/rules/KnownDirectivesRule.d.ts +28 -0
- package/validation/rules/KnownDirectivesRule.js +33 -0
- package/validation/rules/KnownDirectivesRule.mjs +32 -0
- package/validation/rules/KnownFragmentNamesRule.d.ts +28 -0
- package/validation/rules/KnownFragmentNamesRule.js +29 -0
- package/validation/rules/KnownFragmentNamesRule.mjs +28 -0
- package/validation/rules/KnownTypeNamesRule.d.ts +28 -0
- package/validation/rules/KnownTypeNamesRule.js +29 -0
- package/validation/rules/KnownTypeNamesRule.mjs +28 -0
- package/validation/rules/LoneAnonymousOperationRule.d.ts +28 -0
- package/validation/rules/LoneAnonymousOperationRule.js +29 -0
- package/validation/rules/LoneAnonymousOperationRule.mjs +28 -0
- package/validation/rules/LoneSchemaDefinitionRule.d.ts +21 -0
- package/validation/rules/LoneSchemaDefinitionRule.js +22 -0
- package/validation/rules/LoneSchemaDefinitionRule.mjs +21 -0
- package/validation/rules/MaxIntrospectionDepthRule.d.ts +31 -0
- package/validation/rules/MaxIntrospectionDepthRule.js +33 -0
- package/validation/rules/MaxIntrospectionDepthRule.mjs +34 -0
- package/validation/rules/NoFragmentCyclesRule.d.ts +28 -0
- package/validation/rules/NoFragmentCyclesRule.js +29 -0
- package/validation/rules/NoFragmentCyclesRule.mjs +28 -0
- package/validation/rules/NoUndefinedVariablesRule.d.ts +28 -0
- package/validation/rules/NoUndefinedVariablesRule.js +29 -0
- package/validation/rules/NoUndefinedVariablesRule.mjs +28 -0
- package/validation/rules/NoUnusedFragmentsRule.d.ts +28 -0
- package/validation/rules/NoUnusedFragmentsRule.js +29 -0
- package/validation/rules/NoUnusedFragmentsRule.mjs +28 -0
- package/validation/rules/NoUnusedVariablesRule.d.ts +29 -0
- package/validation/rules/NoUnusedVariablesRule.js +30 -0
- package/validation/rules/NoUnusedVariablesRule.mjs +29 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +33 -0
- package/validation/rules/OverlappingFieldsCanBeMergedRule.js +45 -6
- package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +45 -6
- package/validation/rules/PossibleFragmentSpreadsRule.d.ts +36 -0
- package/validation/rules/PossibleFragmentSpreadsRule.js +37 -0
- package/validation/rules/PossibleFragmentSpreadsRule.mjs +36 -0
- package/validation/rules/PossibleTypeExtensionsRule.d.ts +21 -0
- package/validation/rules/PossibleTypeExtensionsRule.js +22 -0
- package/validation/rules/PossibleTypeExtensionsRule.mjs +21 -0
- package/validation/rules/ProvidedRequiredArgumentsRule.d.ts +29 -3
- package/validation/rules/ProvidedRequiredArgumentsRule.js +30 -3
- package/validation/rules/ProvidedRequiredArgumentsRule.mjs +29 -3
- package/validation/rules/ScalarLeafsRule.d.ts +28 -0
- package/validation/rules/ScalarLeafsRule.js +29 -0
- package/validation/rules/ScalarLeafsRule.mjs +28 -0
- package/validation/rules/SingleFieldSubscriptionsRule.d.ts +33 -0
- package/validation/rules/SingleFieldSubscriptionsRule.js +34 -0
- package/validation/rules/SingleFieldSubscriptionsRule.mjs +33 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts +21 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.js +22 -0
- package/validation/rules/UniqueArgumentDefinitionNamesRule.mjs +21 -0
- package/validation/rules/UniqueArgumentNamesRule.d.ts +28 -0
- package/validation/rules/UniqueArgumentNamesRule.js +29 -0
- package/validation/rules/UniqueArgumentNamesRule.mjs +28 -0
- package/validation/rules/UniqueDirectiveNamesRule.d.ts +21 -0
- package/validation/rules/UniqueDirectiveNamesRule.js +22 -0
- package/validation/rules/UniqueDirectiveNamesRule.mjs +21 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.d.ts +28 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.js +41 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.mjs +40 -0
- package/validation/rules/UniqueEnumValueNamesRule.d.ts +21 -0
- package/validation/rules/UniqueEnumValueNamesRule.js +22 -0
- package/validation/rules/UniqueEnumValueNamesRule.mjs +21 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.d.ts +21 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.js +22 -0
- package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +21 -0
- package/validation/rules/UniqueFragmentNamesRule.d.ts +28 -0
- package/validation/rules/UniqueFragmentNamesRule.js +29 -0
- package/validation/rules/UniqueFragmentNamesRule.mjs +28 -0
- package/validation/rules/UniqueInputFieldNamesRule.d.ts +32 -0
- package/validation/rules/UniqueInputFieldNamesRule.js +33 -0
- package/validation/rules/UniqueInputFieldNamesRule.mjs +32 -0
- package/validation/rules/UniqueOperationNamesRule.d.ts +28 -0
- package/validation/rules/UniqueOperationNamesRule.js +29 -0
- package/validation/rules/UniqueOperationNamesRule.mjs +28 -0
- package/validation/rules/UniqueOperationTypesRule.d.ts +21 -0
- package/validation/rules/UniqueOperationTypesRule.js +22 -0
- package/validation/rules/UniqueOperationTypesRule.mjs +21 -0
- package/validation/rules/UniqueTypeNamesRule.d.ts +21 -0
- package/validation/rules/UniqueTypeNamesRule.js +22 -0
- package/validation/rules/UniqueTypeNamesRule.mjs +21 -0
- package/validation/rules/UniqueVariableNamesRule.d.ts +28 -0
- package/validation/rules/UniqueVariableNamesRule.js +29 -0
- package/validation/rules/UniqueVariableNamesRule.mjs +28 -0
- package/validation/rules/ValuesOfCorrectTypeRule.d.ts +28 -0
- package/validation/rules/ValuesOfCorrectTypeRule.js +31 -0
- package/validation/rules/ValuesOfCorrectTypeRule.mjs +30 -0
- package/validation/rules/VariablesAreInputTypesRule.d.ts +32 -0
- package/validation/rules/VariablesAreInputTypesRule.js +33 -0
- package/validation/rules/VariablesAreInputTypesRule.mjs +32 -0
- package/validation/rules/VariablesInAllowedPositionRule.d.ts +28 -0
- package/validation/rules/VariablesInAllowedPositionRule.js +35 -1
- package/validation/rules/VariablesInAllowedPositionRule.mjs +34 -1
- package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +41 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.js +42 -0
- package/validation/rules/custom/NoDeprecatedCustomRule.mjs +41 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +28 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +29 -0
- package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs +28 -0
- package/validation/specifiedRules.d.ts +2 -3
- package/validation/specifiedRules.js +2 -3
- package/validation/specifiedRules.mjs +2 -3
- package/validation/validate.d.ts +70 -9
- package/validation/validate.js +63 -7
- package/validation/validate.mjs +63 -7
- package/version.d.ts +3 -6
- package/version.js +7 -9
- package/version.mjs +6 -9
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category AST Utilities */
|
|
1
2
|
import { printBlockString } from '../language/blockString.mjs';
|
|
2
3
|
import { isPunctuatorTokenKind, Lexer } from '../language/lexer.mjs';
|
|
3
4
|
import { isSource, Source } from '../language/source.mjs';
|
|
@@ -21,9 +22,9 @@ import { TokenKind } from '../language/tokenKind.mjs';
|
|
|
21
22
|
* Warning: It is guaranteed that this function will always produce stable results.
|
|
22
23
|
* However, it's not guaranteed that it will stay the same between different
|
|
23
24
|
* releases due to bugfixes or changes in the GraphQL specification.
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
25
|
+
* @param source - The GraphQL source text or source object.
|
|
26
|
+
* @returns A semantically equivalent GraphQL source string without ignored characters.
|
|
27
|
+
* @example Query source
|
|
27
28
|
* ```graphql
|
|
28
29
|
* query SomeQuery($foo: String!, $bar: String) {
|
|
29
30
|
* someField(foo: $foo, bar: $bar) {
|
|
@@ -41,9 +42,7 @@ import { TokenKind } from '../language/tokenKind.mjs';
|
|
|
41
42
|
* ```graphql
|
|
42
43
|
* query SomeQuery($foo:String!$bar:String){someField(foo:$foo bar:$bar){a b{c d}}}
|
|
43
44
|
* ```
|
|
44
|
-
*
|
|
45
|
-
* SDL example:
|
|
46
|
-
*
|
|
45
|
+
* @example SDL source
|
|
47
46
|
* ```graphql
|
|
48
47
|
* """
|
|
49
48
|
* Type description
|
|
@@ -61,6 +60,14 @@ import { TokenKind } from '../language/tokenKind.mjs';
|
|
|
61
60
|
* ```graphql
|
|
62
61
|
* """Type description""" type Foo{"""Field description""" bar:String}
|
|
63
62
|
* ```
|
|
63
|
+
* @example
|
|
64
|
+
* ```ts
|
|
65
|
+
* import { stripIgnoredCharacters } from 'graphql/utilities';
|
|
66
|
+
*
|
|
67
|
+
* const source = stripIgnoredCharacters('query Example { name }');
|
|
68
|
+
*
|
|
69
|
+
* source; // => 'query Example{name}'
|
|
70
|
+
* ```
|
|
64
71
|
*/
|
|
65
72
|
|
|
66
73
|
export function stripIgnoredCharacters(source) {
|
|
@@ -77,6 +84,8 @@ export function stripIgnoredCharacters(source) {
|
|
|
77
84
|
* Every two non-punctuator tokens should have space between them.
|
|
78
85
|
* Also prevent case of non-punctuator token following by spread resulting
|
|
79
86
|
* in invalid token (e.g. `1...` is invalid Float token).
|
|
87
|
+
*
|
|
88
|
+
* @internal
|
|
80
89
|
*/
|
|
81
90
|
|
|
82
91
|
const isNonPunctuator = !isPunctuatorTokenKind(currentToken.kind);
|
|
@@ -1,7 +1,24 @@
|
|
|
1
|
+
/** @category Type Comparisons */
|
|
1
2
|
import type { GraphQLCompositeType, GraphQLType } from '../type/definition';
|
|
2
3
|
import type { GraphQLSchema } from '../type/schema';
|
|
3
4
|
/**
|
|
4
5
|
* Provided two types, return true if the types are equal (invariant).
|
|
6
|
+
* @param typeA - The first GraphQL type to compare.
|
|
7
|
+
* @param typeB - The second GraphQL type to compare.
|
|
8
|
+
* @returns True when both types are equal.
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import {
|
|
12
|
+
* GraphQLList,
|
|
13
|
+
* GraphQLNonNull,
|
|
14
|
+
* GraphQLString,
|
|
15
|
+
* } from 'graphql/type';
|
|
16
|
+
* import { isEqualType } from 'graphql/utilities';
|
|
17
|
+
*
|
|
18
|
+
* isEqualType(GraphQLString, GraphQLString); // => true
|
|
19
|
+
* isEqualType(new GraphQLList(GraphQLString), new GraphQLList(GraphQLString)); // => true
|
|
20
|
+
* isEqualType(new GraphQLNonNull(GraphQLString), GraphQLString); // => false
|
|
21
|
+
* ```
|
|
5
22
|
*/
|
|
6
23
|
export declare function isEqualType(
|
|
7
24
|
typeA: GraphQLType,
|
|
@@ -10,6 +27,40 @@ export declare function isEqualType(
|
|
|
10
27
|
/**
|
|
11
28
|
* Provided a type and a super type, return true if the first type is either
|
|
12
29
|
* equal or a subset of the second super type (covariant).
|
|
30
|
+
* @param schema - GraphQL schema to use.
|
|
31
|
+
* @param maybeSubType - The possible subtype to compare.
|
|
32
|
+
* @param superType - The possible supertype to compare.
|
|
33
|
+
* @returns True when `maybeSubType` is equal to or a subtype of `superType`.
|
|
34
|
+
* @example
|
|
35
|
+
* ```ts
|
|
36
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
37
|
+
* import {
|
|
38
|
+
* GraphQLNonNull,
|
|
39
|
+
* assertInterfaceType,
|
|
40
|
+
* assertObjectType,
|
|
41
|
+
* } from 'graphql/type';
|
|
42
|
+
* import { isTypeSubTypeOf } from 'graphql/utilities';
|
|
43
|
+
*
|
|
44
|
+
* const schema = buildSchema(`
|
|
45
|
+
* interface Node {
|
|
46
|
+
* id: ID!
|
|
47
|
+
* }
|
|
48
|
+
*
|
|
49
|
+
* type User implements Node {
|
|
50
|
+
* id: ID!
|
|
51
|
+
* }
|
|
52
|
+
*
|
|
53
|
+
* type Query {
|
|
54
|
+
* node: Node
|
|
55
|
+
* }
|
|
56
|
+
* `);
|
|
57
|
+
* const Node = assertInterfaceType(schema.getType('Node'));
|
|
58
|
+
* const User = assertObjectType(schema.getType('User'));
|
|
59
|
+
*
|
|
60
|
+
* isTypeSubTypeOf(schema, User, Node); // => true
|
|
61
|
+
* isTypeSubTypeOf(schema, new GraphQLNonNull(User), Node); // => true
|
|
62
|
+
* isTypeSubTypeOf(schema, Node, User); // => false
|
|
63
|
+
* ```
|
|
13
64
|
*/
|
|
14
65
|
export declare function isTypeSubTypeOf(
|
|
15
66
|
schema: GraphQLSchema,
|
|
@@ -24,6 +75,39 @@ export declare function isTypeSubTypeOf(
|
|
|
24
75
|
* be visited in a context of another type.
|
|
25
76
|
*
|
|
26
77
|
* This function is commutative.
|
|
78
|
+
* @param schema - GraphQL schema to use.
|
|
79
|
+
* @param typeA - The first GraphQL type to compare.
|
|
80
|
+
* @param typeB - The second GraphQL type to compare.
|
|
81
|
+
* @returns True when the two composite types can apply to at least one common object type.
|
|
82
|
+
* @example
|
|
83
|
+
* ```ts
|
|
84
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
85
|
+
* import { assertObjectType, assertUnionType } from 'graphql/type';
|
|
86
|
+
* import { doTypesOverlap } from 'graphql/utilities';
|
|
87
|
+
*
|
|
88
|
+
* const schema = buildSchema(`
|
|
89
|
+
* type Photo {
|
|
90
|
+
* url: String!
|
|
91
|
+
* }
|
|
92
|
+
*
|
|
93
|
+
* type Video {
|
|
94
|
+
* url: String!
|
|
95
|
+
* }
|
|
96
|
+
*
|
|
97
|
+
* union Media = Photo | Video
|
|
98
|
+
* union StillImage = Photo
|
|
99
|
+
*
|
|
100
|
+
* type Query {
|
|
101
|
+
* media: [Media]
|
|
102
|
+
* }
|
|
103
|
+
* `);
|
|
104
|
+
* const Media = assertUnionType(schema.getType('Media'));
|
|
105
|
+
* const StillImage = assertUnionType(schema.getType('StillImage'));
|
|
106
|
+
* const Video = assertObjectType(schema.getType('Video'));
|
|
107
|
+
*
|
|
108
|
+
* doTypesOverlap(schema, Media, StillImage); // => true
|
|
109
|
+
* doTypesOverlap(schema, StillImage, Video); // => false
|
|
110
|
+
* ```
|
|
27
111
|
*/
|
|
28
112
|
export declare function doTypesOverlap(
|
|
29
113
|
schema: GraphQLSchema,
|
|
@@ -9,8 +9,26 @@ exports.isTypeSubTypeOf = isTypeSubTypeOf;
|
|
|
9
9
|
|
|
10
10
|
var _definition = require('../type/definition.js');
|
|
11
11
|
|
|
12
|
+
/** @category Type Comparisons */
|
|
13
|
+
|
|
12
14
|
/**
|
|
13
15
|
* Provided two types, return true if the types are equal (invariant).
|
|
16
|
+
* @param typeA - The first GraphQL type to compare.
|
|
17
|
+
* @param typeB - The second GraphQL type to compare.
|
|
18
|
+
* @returns True when both types are equal.
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* import {
|
|
22
|
+
* GraphQLList,
|
|
23
|
+
* GraphQLNonNull,
|
|
24
|
+
* GraphQLString,
|
|
25
|
+
* } from 'graphql/type';
|
|
26
|
+
* import { isEqualType } from 'graphql/utilities';
|
|
27
|
+
*
|
|
28
|
+
* isEqualType(GraphQLString, GraphQLString); // => true
|
|
29
|
+
* isEqualType(new GraphQLList(GraphQLString), new GraphQLList(GraphQLString)); // => true
|
|
30
|
+
* isEqualType(new GraphQLNonNull(GraphQLString), GraphQLString); // => false
|
|
31
|
+
* ```
|
|
14
32
|
*/
|
|
15
33
|
function isEqualType(typeA, typeB) {
|
|
16
34
|
// Equivalent types are equal.
|
|
@@ -37,6 +55,40 @@ function isEqualType(typeA, typeB) {
|
|
|
37
55
|
/**
|
|
38
56
|
* Provided a type and a super type, return true if the first type is either
|
|
39
57
|
* equal or a subset of the second super type (covariant).
|
|
58
|
+
* @param schema - GraphQL schema to use.
|
|
59
|
+
* @param maybeSubType - The possible subtype to compare.
|
|
60
|
+
* @param superType - The possible supertype to compare.
|
|
61
|
+
* @returns True when `maybeSubType` is equal to or a subtype of `superType`.
|
|
62
|
+
* @example
|
|
63
|
+
* ```ts
|
|
64
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
65
|
+
* import {
|
|
66
|
+
* GraphQLNonNull,
|
|
67
|
+
* assertInterfaceType,
|
|
68
|
+
* assertObjectType,
|
|
69
|
+
* } from 'graphql/type';
|
|
70
|
+
* import { isTypeSubTypeOf } from 'graphql/utilities';
|
|
71
|
+
*
|
|
72
|
+
* const schema = buildSchema(`
|
|
73
|
+
* interface Node {
|
|
74
|
+
* id: ID!
|
|
75
|
+
* }
|
|
76
|
+
*
|
|
77
|
+
* type User implements Node {
|
|
78
|
+
* id: ID!
|
|
79
|
+
* }
|
|
80
|
+
*
|
|
81
|
+
* type Query {
|
|
82
|
+
* node: Node
|
|
83
|
+
* }
|
|
84
|
+
* `);
|
|
85
|
+
* const Node = assertInterfaceType(schema.getType('Node'));
|
|
86
|
+
* const User = assertObjectType(schema.getType('User'));
|
|
87
|
+
*
|
|
88
|
+
* isTypeSubTypeOf(schema, User, Node); // => true
|
|
89
|
+
* isTypeSubTypeOf(schema, new GraphQLNonNull(User), Node); // => true
|
|
90
|
+
* isTypeSubTypeOf(schema, Node, User); // => false
|
|
91
|
+
* ```
|
|
40
92
|
*/
|
|
41
93
|
|
|
42
94
|
function isTypeSubTypeOf(schema, maybeSubType, superType) {
|
|
@@ -87,6 +139,39 @@ function isTypeSubTypeOf(schema, maybeSubType, superType) {
|
|
|
87
139
|
* be visited in a context of another type.
|
|
88
140
|
*
|
|
89
141
|
* This function is commutative.
|
|
142
|
+
* @param schema - GraphQL schema to use.
|
|
143
|
+
* @param typeA - The first GraphQL type to compare.
|
|
144
|
+
* @param typeB - The second GraphQL type to compare.
|
|
145
|
+
* @returns True when the two composite types can apply to at least one common object type.
|
|
146
|
+
* @example
|
|
147
|
+
* ```ts
|
|
148
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
149
|
+
* import { assertObjectType, assertUnionType } from 'graphql/type';
|
|
150
|
+
* import { doTypesOverlap } from 'graphql/utilities';
|
|
151
|
+
*
|
|
152
|
+
* const schema = buildSchema(`
|
|
153
|
+
* type Photo {
|
|
154
|
+
* url: String!
|
|
155
|
+
* }
|
|
156
|
+
*
|
|
157
|
+
* type Video {
|
|
158
|
+
* url: String!
|
|
159
|
+
* }
|
|
160
|
+
*
|
|
161
|
+
* union Media = Photo | Video
|
|
162
|
+
* union StillImage = Photo
|
|
163
|
+
*
|
|
164
|
+
* type Query {
|
|
165
|
+
* media: [Media]
|
|
166
|
+
* }
|
|
167
|
+
* `);
|
|
168
|
+
* const Media = assertUnionType(schema.getType('Media'));
|
|
169
|
+
* const StillImage = assertUnionType(schema.getType('StillImage'));
|
|
170
|
+
* const Video = assertObjectType(schema.getType('Video'));
|
|
171
|
+
*
|
|
172
|
+
* doTypesOverlap(schema, Media, StillImage); // => true
|
|
173
|
+
* doTypesOverlap(schema, StillImage, Video); // => false
|
|
174
|
+
* ```
|
|
90
175
|
*/
|
|
91
176
|
|
|
92
177
|
function doTypesOverlap(schema, typeA, typeB) {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Type Comparisons */
|
|
1
2
|
import {
|
|
2
3
|
isAbstractType,
|
|
3
4
|
isInterfaceType,
|
|
@@ -8,6 +9,22 @@ import {
|
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Provided two types, return true if the types are equal (invariant).
|
|
12
|
+
* @param typeA - The first GraphQL type to compare.
|
|
13
|
+
* @param typeB - The second GraphQL type to compare.
|
|
14
|
+
* @returns True when both types are equal.
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import {
|
|
18
|
+
* GraphQLList,
|
|
19
|
+
* GraphQLNonNull,
|
|
20
|
+
* GraphQLString,
|
|
21
|
+
* } from 'graphql/type';
|
|
22
|
+
* import { isEqualType } from 'graphql/utilities';
|
|
23
|
+
*
|
|
24
|
+
* isEqualType(GraphQLString, GraphQLString); // => true
|
|
25
|
+
* isEqualType(new GraphQLList(GraphQLString), new GraphQLList(GraphQLString)); // => true
|
|
26
|
+
* isEqualType(new GraphQLNonNull(GraphQLString), GraphQLString); // => false
|
|
27
|
+
* ```
|
|
11
28
|
*/
|
|
12
29
|
export function isEqualType(typeA, typeB) {
|
|
13
30
|
// Equivalent types are equal.
|
|
@@ -28,6 +45,40 @@ export function isEqualType(typeA, typeB) {
|
|
|
28
45
|
/**
|
|
29
46
|
* Provided a type and a super type, return true if the first type is either
|
|
30
47
|
* equal or a subset of the second super type (covariant).
|
|
48
|
+
* @param schema - GraphQL schema to use.
|
|
49
|
+
* @param maybeSubType - The possible subtype to compare.
|
|
50
|
+
* @param superType - The possible supertype to compare.
|
|
51
|
+
* @returns True when `maybeSubType` is equal to or a subtype of `superType`.
|
|
52
|
+
* @example
|
|
53
|
+
* ```ts
|
|
54
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
55
|
+
* import {
|
|
56
|
+
* GraphQLNonNull,
|
|
57
|
+
* assertInterfaceType,
|
|
58
|
+
* assertObjectType,
|
|
59
|
+
* } from 'graphql/type';
|
|
60
|
+
* import { isTypeSubTypeOf } from 'graphql/utilities';
|
|
61
|
+
*
|
|
62
|
+
* const schema = buildSchema(`
|
|
63
|
+
* interface Node {
|
|
64
|
+
* id: ID!
|
|
65
|
+
* }
|
|
66
|
+
*
|
|
67
|
+
* type User implements Node {
|
|
68
|
+
* id: ID!
|
|
69
|
+
* }
|
|
70
|
+
*
|
|
71
|
+
* type Query {
|
|
72
|
+
* node: Node
|
|
73
|
+
* }
|
|
74
|
+
* `);
|
|
75
|
+
* const Node = assertInterfaceType(schema.getType('Node'));
|
|
76
|
+
* const User = assertObjectType(schema.getType('User'));
|
|
77
|
+
*
|
|
78
|
+
* isTypeSubTypeOf(schema, User, Node); // => true
|
|
79
|
+
* isTypeSubTypeOf(schema, new GraphQLNonNull(User), Node); // => true
|
|
80
|
+
* isTypeSubTypeOf(schema, Node, User); // => false
|
|
81
|
+
* ```
|
|
31
82
|
*/
|
|
32
83
|
|
|
33
84
|
export function isTypeSubTypeOf(schema, maybeSubType, superType) {
|
|
@@ -77,6 +128,39 @@ export function isTypeSubTypeOf(schema, maybeSubType, superType) {
|
|
|
77
128
|
* be visited in a context of another type.
|
|
78
129
|
*
|
|
79
130
|
* This function is commutative.
|
|
131
|
+
* @param schema - GraphQL schema to use.
|
|
132
|
+
* @param typeA - The first GraphQL type to compare.
|
|
133
|
+
* @param typeB - The second GraphQL type to compare.
|
|
134
|
+
* @returns True when the two composite types can apply to at least one common object type.
|
|
135
|
+
* @example
|
|
136
|
+
* ```ts
|
|
137
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
138
|
+
* import { assertObjectType, assertUnionType } from 'graphql/type';
|
|
139
|
+
* import { doTypesOverlap } from 'graphql/utilities';
|
|
140
|
+
*
|
|
141
|
+
* const schema = buildSchema(`
|
|
142
|
+
* type Photo {
|
|
143
|
+
* url: String!
|
|
144
|
+
* }
|
|
145
|
+
*
|
|
146
|
+
* type Video {
|
|
147
|
+
* url: String!
|
|
148
|
+
* }
|
|
149
|
+
*
|
|
150
|
+
* union Media = Photo | Video
|
|
151
|
+
* union StillImage = Photo
|
|
152
|
+
*
|
|
153
|
+
* type Query {
|
|
154
|
+
* media: [Media]
|
|
155
|
+
* }
|
|
156
|
+
* `);
|
|
157
|
+
* const Media = assertUnionType(schema.getType('Media'));
|
|
158
|
+
* const StillImage = assertUnionType(schema.getType('StillImage'));
|
|
159
|
+
* const Video = assertObjectType(schema.getType('Video'));
|
|
160
|
+
*
|
|
161
|
+
* doTypesOverlap(schema, Media, StillImage); // => true
|
|
162
|
+
* doTypesOverlap(schema, StillImage, Video); // => false
|
|
163
|
+
* ```
|
|
80
164
|
*/
|
|
81
165
|
|
|
82
166
|
export function doTypesOverlap(schema, typeA, typeB) {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Values */
|
|
1
2
|
import type {
|
|
2
3
|
ListTypeNode,
|
|
3
4
|
NamedTypeNode,
|
|
@@ -13,19 +14,104 @@ import type { GraphQLSchema } from '../type/schema';
|
|
|
13
14
|
* AST node for `[User]`, a GraphQLList instance will be returned, containing
|
|
14
15
|
* the type called "User" found in the schema. If a type called "User" is not
|
|
15
16
|
* found in the schema, then undefined will be returned.
|
|
17
|
+
* @param schema - GraphQL schema to use.
|
|
18
|
+
* @param typeNode - The GraphQL type AST node to resolve.
|
|
19
|
+
* @returns The GraphQL type referenced by the AST node, or undefined if it cannot be resolved.
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* import { parseType } from 'graphql/language';
|
|
23
|
+
* import { buildSchema, typeFromAST } from 'graphql/utilities';
|
|
24
|
+
*
|
|
25
|
+
* const schema = buildSchema(`
|
|
26
|
+
* type Query {
|
|
27
|
+
* name: String
|
|
28
|
+
* }
|
|
29
|
+
* `);
|
|
30
|
+
*
|
|
31
|
+
* typeFromAST(schema, parseType('String'))?.toString(); // => 'String'
|
|
32
|
+
* typeFromAST(schema, parseType('Missing')); // => undefined
|
|
33
|
+
* ```
|
|
16
34
|
*/
|
|
17
35
|
export declare function typeFromAST(
|
|
18
36
|
schema: GraphQLSchema,
|
|
19
37
|
typeNode: NamedTypeNode,
|
|
20
38
|
): GraphQLNamedType | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Resolves a list type AST node against a schema.
|
|
41
|
+
* @param schema - GraphQL schema to use.
|
|
42
|
+
* @param typeNode - The list type AST node to resolve.
|
|
43
|
+
* @returns The GraphQL list type referenced by the AST node, or undefined if
|
|
44
|
+
* it cannot be resolved.
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* import { parseType } from 'graphql/language';
|
|
48
|
+
* import { buildSchema, typeFromAST } from 'graphql/utilities';
|
|
49
|
+
*
|
|
50
|
+
* const schema = buildSchema(`
|
|
51
|
+
* type Query {
|
|
52
|
+
* tags: [String]
|
|
53
|
+
* }
|
|
54
|
+
* `);
|
|
55
|
+
*
|
|
56
|
+
* typeFromAST(schema, parseType('[String]'))?.toString(); // => '[String]'
|
|
57
|
+
* typeFromAST(schema, parseType('[Missing]')); // => undefined
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
21
60
|
export declare function typeFromAST(
|
|
22
61
|
schema: GraphQLSchema,
|
|
23
62
|
typeNode: ListTypeNode,
|
|
24
63
|
): GraphQLList<any> | undefined;
|
|
64
|
+
/**
|
|
65
|
+
* Resolves a non-null type AST node against a schema.
|
|
66
|
+
* @param schema - GraphQL schema to use.
|
|
67
|
+
* @param typeNode - The non-null type AST node to resolve.
|
|
68
|
+
* @returns The GraphQL non-null type referenced by the AST node, or undefined
|
|
69
|
+
* if it cannot be resolved.
|
|
70
|
+
* @example
|
|
71
|
+
* ```ts
|
|
72
|
+
* import { parseType } from 'graphql/language';
|
|
73
|
+
* import { buildSchema, typeFromAST } from 'graphql/utilities';
|
|
74
|
+
*
|
|
75
|
+
* const schema = buildSchema(`
|
|
76
|
+
* type Query {
|
|
77
|
+
* name: String!
|
|
78
|
+
* }
|
|
79
|
+
* `);
|
|
80
|
+
*
|
|
81
|
+
* typeFromAST(schema, parseType('String!'))?.toString(); // => 'String!'
|
|
82
|
+
* typeFromAST(schema, parseType('[String!]!'))?.toString(); // => '[String!]!'
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
25
85
|
export declare function typeFromAST(
|
|
26
86
|
schema: GraphQLSchema,
|
|
27
87
|
typeNode: NonNullTypeNode,
|
|
28
88
|
): GraphQLNonNull<any> | undefined;
|
|
89
|
+
/**
|
|
90
|
+
* Resolves a type AST node against a schema.
|
|
91
|
+
* @param schema - GraphQL schema to use.
|
|
92
|
+
* @param typeNode - The GraphQL type AST node to resolve.
|
|
93
|
+
* @returns The GraphQL type referenced by the AST node, or undefined if it
|
|
94
|
+
* cannot be resolved.
|
|
95
|
+
* @example
|
|
96
|
+
* ```ts
|
|
97
|
+
* import { parseType } from 'graphql/language';
|
|
98
|
+
* import { buildSchema, typeFromAST } from 'graphql/utilities';
|
|
99
|
+
*
|
|
100
|
+
* const schema = buildSchema(`
|
|
101
|
+
* type User {
|
|
102
|
+
* name: String
|
|
103
|
+
* }
|
|
104
|
+
*
|
|
105
|
+
* type Query {
|
|
106
|
+
* users: [User!]!
|
|
107
|
+
* }
|
|
108
|
+
* `);
|
|
109
|
+
*
|
|
110
|
+
* typeFromAST(schema, parseType('User'))?.toString(); // => 'User'
|
|
111
|
+
* typeFromAST(schema, parseType('[User!]!'))?.toString(); // => '[User!]!'
|
|
112
|
+
* typeFromAST(schema, parseType('Missing')); // => undefined
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
29
115
|
export declare function typeFromAST(
|
|
30
116
|
schema: GraphQLSchema,
|
|
31
117
|
typeNode: TypeNode,
|
package/utilities/typeFromAST.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
/** @category Values */
|
|
1
2
|
import { Kind } from '../language/kinds.mjs';
|
|
2
3
|
import { GraphQLList, GraphQLNonNull } from '../type/definition.mjs';
|
|
4
|
+
|
|
5
|
+
/** @internal */
|
|
3
6
|
export function typeFromAST(schema, typeNode) {
|
|
4
7
|
switch (typeNode.kind) {
|
|
5
8
|
case Kind.LIST_TYPE: {
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
/** @category Typed Documents */
|
|
1
2
|
import type { DocumentNode, ExecutableDefinitionNode } from '../language/ast';
|
|
2
3
|
/**
|
|
3
4
|
* Wrapper type that contains DocumentNode and types that can be deduced from it.
|
|
5
|
+
* @typeParam TResponseData - Typed GraphQL response data shape.
|
|
6
|
+
* @typeParam TRequestVariables - Typed GraphQL request variables shape.
|
|
4
7
|
*/
|
|
5
8
|
export interface TypedQueryDocumentNode<
|
|
6
9
|
TResponseData = {
|
|
@@ -10,6 +13,7 @@ export interface TypedQueryDocumentNode<
|
|
|
10
13
|
[key: string]: any;
|
|
11
14
|
},
|
|
12
15
|
> extends DocumentNode {
|
|
16
|
+
/** Top-level executable and type-system definitions in this document. */
|
|
13
17
|
readonly definitions: ReadonlyArray<ExecutableDefinitionNode>;
|
|
14
18
|
/**
|
|
15
19
|
* This type is used to ensure that the variables you pass in to the query are assignable to Variables
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Values */
|
|
1
2
|
import type { Maybe } from '../jsutils/Maybe';
|
|
2
3
|
import type { ObjMap } from '../jsutils/ObjMap';
|
|
3
4
|
import type { ValueNode } from '../language/ast';
|
|
@@ -20,7 +21,44 @@ import type { GraphQLInputType } from '../type/definition';
|
|
|
20
21
|
* | Int / Float | Number |
|
|
21
22
|
* | Enum Value | Unknown |
|
|
22
23
|
* | NullValue | null |
|
|
24
|
+
* @param valueNode - GraphQL value AST node to convert.
|
|
25
|
+
* @param type - The GraphQL type to inspect.
|
|
26
|
+
* @param variables - Optional runtime variable values keyed by variable name.
|
|
27
|
+
* @returns The coerced JavaScript value, or undefined if the AST value cannot be coerced to the type.
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* // Coerce literal values without variables.
|
|
31
|
+
* import { parseValue } from 'graphql/language';
|
|
32
|
+
* import {
|
|
33
|
+
* GraphQLInputObjectType,
|
|
34
|
+
* GraphQLInt,
|
|
35
|
+
* GraphQLList,
|
|
36
|
+
* GraphQLNonNull,
|
|
37
|
+
* GraphQLString,
|
|
38
|
+
* } from 'graphql/type';
|
|
39
|
+
* import { valueFromAST } from 'graphql/utilities';
|
|
23
40
|
*
|
|
41
|
+
* const ReviewInput = new GraphQLInputObjectType({
|
|
42
|
+
* name: 'ReviewInput',
|
|
43
|
+
* fields: {
|
|
44
|
+
* stars: { type: new GraphQLNonNull(GraphQLInt) },
|
|
45
|
+
* tags: { type: new GraphQLList(GraphQLString) },
|
|
46
|
+
* },
|
|
47
|
+
* });
|
|
48
|
+
*
|
|
49
|
+
* valueFromAST(parseValue('{ stars: 5, tags: ["featured"] }'), ReviewInput); // => { stars: 5, tags: ['featured'] }
|
|
50
|
+
* valueFromAST(parseValue('{ stars: "bad" }'), ReviewInput); // => undefined
|
|
51
|
+
* ```
|
|
52
|
+
* @example
|
|
53
|
+
* ```ts
|
|
54
|
+
* // This variant resolves variable references from runtime values.
|
|
55
|
+
* import { parseValue } from 'graphql/language';
|
|
56
|
+
* import { GraphQLInt } from 'graphql/type';
|
|
57
|
+
* import { valueFromAST } from 'graphql/utilities';
|
|
58
|
+
*
|
|
59
|
+
* valueFromAST(parseValue('$stars'), GraphQLInt, { stars: 5 }); // => 5
|
|
60
|
+
* valueFromAST(parseValue('$stars'), GraphQLInt, {}); // => undefined
|
|
61
|
+
* ```
|
|
24
62
|
*/
|
|
25
63
|
export declare function valueFromAST(
|
|
26
64
|
valueNode: Maybe<ValueNode>,
|
|
@@ -15,6 +15,8 @@ var _kinds = require('../language/kinds.js');
|
|
|
15
15
|
|
|
16
16
|
var _definition = require('../type/definition.js');
|
|
17
17
|
|
|
18
|
+
/** @category Values */
|
|
19
|
+
|
|
18
20
|
/**
|
|
19
21
|
* Produces a JavaScript value given a GraphQL Value AST.
|
|
20
22
|
*
|
|
@@ -33,7 +35,44 @@ var _definition = require('../type/definition.js');
|
|
|
33
35
|
* | Int / Float | Number |
|
|
34
36
|
* | Enum Value | Unknown |
|
|
35
37
|
* | NullValue | null |
|
|
38
|
+
* @param valueNode - GraphQL value AST node to convert.
|
|
39
|
+
* @param type - The GraphQL type to inspect.
|
|
40
|
+
* @param variables - Optional runtime variable values keyed by variable name.
|
|
41
|
+
* @returns The coerced JavaScript value, or undefined if the AST value cannot be coerced to the type.
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* // Coerce literal values without variables.
|
|
45
|
+
* import { parseValue } from 'graphql/language';
|
|
46
|
+
* import {
|
|
47
|
+
* GraphQLInputObjectType,
|
|
48
|
+
* GraphQLInt,
|
|
49
|
+
* GraphQLList,
|
|
50
|
+
* GraphQLNonNull,
|
|
51
|
+
* GraphQLString,
|
|
52
|
+
* } from 'graphql/type';
|
|
53
|
+
* import { valueFromAST } from 'graphql/utilities';
|
|
54
|
+
*
|
|
55
|
+
* const ReviewInput = new GraphQLInputObjectType({
|
|
56
|
+
* name: 'ReviewInput',
|
|
57
|
+
* fields: {
|
|
58
|
+
* stars: { type: new GraphQLNonNull(GraphQLInt) },
|
|
59
|
+
* tags: { type: new GraphQLList(GraphQLString) },
|
|
60
|
+
* },
|
|
61
|
+
* });
|
|
62
|
+
*
|
|
63
|
+
* valueFromAST(parseValue('{ stars: 5, tags: ["featured"] }'), ReviewInput); // => { stars: 5, tags: ['featured'] }
|
|
64
|
+
* valueFromAST(parseValue('{ stars: "bad" }'), ReviewInput); // => undefined
|
|
65
|
+
* ```
|
|
66
|
+
* @example
|
|
67
|
+
* ```ts
|
|
68
|
+
* // This variant resolves variable references from runtime values.
|
|
69
|
+
* import { parseValue } from 'graphql/language';
|
|
70
|
+
* import { GraphQLInt } from 'graphql/type';
|
|
71
|
+
* import { valueFromAST } from 'graphql/utilities';
|
|
36
72
|
*
|
|
73
|
+
* valueFromAST(parseValue('$stars'), GraphQLInt, { stars: 5 }); // => 5
|
|
74
|
+
* valueFromAST(parseValue('$stars'), GraphQLInt, {}); // => undefined
|
|
75
|
+
* ```
|
|
37
76
|
*/
|
|
38
77
|
function valueFromAST(valueNode, type, variables) {
|
|
39
78
|
if (!valueNode) {
|
|
@@ -45,7 +84,11 @@ function valueFromAST(valueNode, type, variables) {
|
|
|
45
84
|
if (valueNode.kind === _kinds.Kind.VARIABLE) {
|
|
46
85
|
const variableName = valueNode.name.value;
|
|
47
86
|
|
|
48
|
-
if (
|
|
87
|
+
if (
|
|
88
|
+
variables == null ||
|
|
89
|
+
variables[variableName] === undefined ||
|
|
90
|
+
!hasOwnProperty(variables, variableName)
|
|
91
|
+
) {
|
|
49
92
|
// No valid return value.
|
|
50
93
|
return;
|
|
51
94
|
}
|
|
@@ -192,6 +235,12 @@ function valueFromAST(valueNode, type, variables) {
|
|
|
192
235
|
function isMissingVariable(valueNode, variables) {
|
|
193
236
|
return (
|
|
194
237
|
valueNode.kind === _kinds.Kind.VARIABLE &&
|
|
195
|
-
(variables == null ||
|
|
238
|
+
(variables == null ||
|
|
239
|
+
variables[valueNode.name.value] === undefined ||
|
|
240
|
+
!hasOwnProperty(variables, valueNode.name.value))
|
|
196
241
|
);
|
|
197
242
|
}
|
|
243
|
+
|
|
244
|
+
function hasOwnProperty(obj, prop) {
|
|
245
|
+
return Object.prototype.hasOwnProperty.call(obj, prop);
|
|
246
|
+
}
|