graphql 16.14.0 → 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 +11 -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 +412 -54
- package/language/ast.js +95 -38
- package/language/ast.mjs +95 -38
- package/language/blockString.d.ts +1 -3
- package/language/blockString.js +1 -3
- package/language/blockString.mjs +1 -3
- package/language/directiveLocation.d.ts +28 -8
- package/language/directiveLocation.js +9 -6
- package/language/directiveLocation.mjs +9 -6
- package/language/index.d.ts +6 -0
- package/language/index.mjs +6 -0
- package/language/kinds.d.ts +57 -18
- package/language/kinds.js +9 -6
- package/language/kinds.mjs +9 -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 +236 -13
- package/language/parser.js +224 -0
- package/language/parser.mjs +224 -3
- package/language/predicates.d.ts +169 -0
- package/language/predicates.js +170 -0
- package/language/predicates.mjs +180 -0
- 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 +19 -0
- package/language/printer.mjs +18 -0
- 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 +193 -18
- package/type/directives.js +196 -19
- package/type/directives.mjs +196 -19
- package/type/index.d.ts +6 -0
- package/type/index.mjs +6 -0
- package/type/introspection.d.ts +36 -0
- package/type/introspection.js +33 -0
- package/type/introspection.mjs +41 -0
- 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 +65 -6
- package/utilities/buildASTSchema.mjs +65 -6
- package/utilities/buildClientSchema.d.ts +15 -0
- package/utilities/buildClientSchema.js +16 -0
- package/utilities/buildClientSchema.mjs +15 -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 +63 -3
- package/utilities/extendSchema.mjs +62 -3
- package/utilities/findBreakingChanges.d.ts +95 -0
- package/utilities/findBreakingChanges.js +68 -0
- package/utilities/findBreakingChanges.mjs +70 -0
- package/utilities/getIntrospectionQuery.d.ts +132 -0
- package/utilities/getIntrospectionQuery.js +41 -0
- package/utilities/getIntrospectionQuery.mjs +41 -0
- 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 +55 -0
- package/utilities/introspectionFromSchema.mjs +54 -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 +66 -0
- package/utilities/printSchema.mjs +67 -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 +39 -0
- package/utilities/valueFromAST.mjs +38 -0
- 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 +29 -0
- package/validation/rules/KnownDirectivesRule.mjs +28 -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 +29 -0
- package/validation/rules/UniqueDirectivesPerLocationRule.mjs +28 -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 +6 -8
- package/version.mjs +5 -8
package/type/validate.js
CHANGED
|
@@ -22,12 +22,30 @@ var _introspection = require('./introspection.js');
|
|
|
22
22
|
|
|
23
23
|
var _schema = require('./schema.js');
|
|
24
24
|
|
|
25
|
+
/** @category Validation */
|
|
26
|
+
|
|
25
27
|
/**
|
|
26
28
|
* Implements the "Type Validation" sub-sections of the specification's
|
|
27
29
|
* "Type System" section.
|
|
28
30
|
*
|
|
29
31
|
* Validation runs synchronously, returning an array of encountered errors, or
|
|
30
32
|
* an empty array if no errors were encountered and the Schema is valid.
|
|
33
|
+
* @param schema - GraphQL schema to use.
|
|
34
|
+
* @returns Schema validation errors, or an empty array when the schema is valid.
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* import { validateSchema } from 'graphql/type';
|
|
38
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
39
|
+
*
|
|
40
|
+
* const schema = buildSchema(`
|
|
41
|
+
* type Query {
|
|
42
|
+
* name: String
|
|
43
|
+
* }
|
|
44
|
+
* `);
|
|
45
|
+
* const errors = validateSchema(schema);
|
|
46
|
+
*
|
|
47
|
+
* errors; // => []
|
|
48
|
+
* ```
|
|
31
49
|
*/
|
|
32
50
|
function validateSchema(schema) {
|
|
33
51
|
// First check to ensure the provided value is in fact a GraphQLSchema.
|
|
@@ -50,6 +68,20 @@ function validateSchema(schema) {
|
|
|
50
68
|
/**
|
|
51
69
|
* Utility function which asserts a schema is valid by throwing an error if
|
|
52
70
|
* it is invalid.
|
|
71
|
+
* @param schema - GraphQL schema to use.
|
|
72
|
+
* @example
|
|
73
|
+
* ```ts
|
|
74
|
+
* import { assertValidSchema } from 'graphql/type';
|
|
75
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
76
|
+
*
|
|
77
|
+
* const schema = buildSchema(`
|
|
78
|
+
* type Query {
|
|
79
|
+
* name: String
|
|
80
|
+
* }
|
|
81
|
+
* `);
|
|
82
|
+
*
|
|
83
|
+
* assertValidSchema(schema); // does not throw
|
|
84
|
+
* ```
|
|
53
85
|
*/
|
|
54
86
|
|
|
55
87
|
function assertValidSchema(schema) {
|
package/type/validate.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Validation */
|
|
1
2
|
import { inspect } from '../jsutils/inspect.mjs';
|
|
2
3
|
import { GraphQLError } from '../error/GraphQLError.mjs';
|
|
3
4
|
import { OperationTypeNode } from '../language/ast.mjs';
|
|
@@ -24,6 +25,22 @@ import { assertSchema } from './schema.mjs';
|
|
|
24
25
|
*
|
|
25
26
|
* Validation runs synchronously, returning an array of encountered errors, or
|
|
26
27
|
* an empty array if no errors were encountered and the Schema is valid.
|
|
28
|
+
* @param schema - GraphQL schema to use.
|
|
29
|
+
* @returns Schema validation errors, or an empty array when the schema is valid.
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* import { validateSchema } from 'graphql/type';
|
|
33
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
34
|
+
*
|
|
35
|
+
* const schema = buildSchema(`
|
|
36
|
+
* type Query {
|
|
37
|
+
* name: String
|
|
38
|
+
* }
|
|
39
|
+
* `);
|
|
40
|
+
* const errors = validateSchema(schema);
|
|
41
|
+
*
|
|
42
|
+
* errors; // => []
|
|
43
|
+
* ```
|
|
27
44
|
*/
|
|
28
45
|
|
|
29
46
|
export function validateSchema(schema) {
|
|
@@ -47,6 +64,20 @@ export function validateSchema(schema) {
|
|
|
47
64
|
/**
|
|
48
65
|
* Utility function which asserts a schema is valid by throwing an error if
|
|
49
66
|
* it is invalid.
|
|
67
|
+
* @param schema - GraphQL schema to use.
|
|
68
|
+
* @example
|
|
69
|
+
* ```ts
|
|
70
|
+
* import { assertValidSchema } from 'graphql/type';
|
|
71
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
72
|
+
*
|
|
73
|
+
* const schema = buildSchema(`
|
|
74
|
+
* type Query {
|
|
75
|
+
* name: String
|
|
76
|
+
* }
|
|
77
|
+
* `);
|
|
78
|
+
*
|
|
79
|
+
* assertValidSchema(schema); // does not throw
|
|
80
|
+
* ```
|
|
50
81
|
*/
|
|
51
82
|
|
|
52
83
|
export function assertValidSchema(schema) {
|
package/utilities/TypeInfo.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Type Info */
|
|
1
2
|
import type { Maybe } from '../jsutils/Maybe';
|
|
2
3
|
import type { ASTNode, FieldNode } from '../language/ast';
|
|
3
4
|
import type { ASTVisitor } from '../language/visitor';
|
|
@@ -28,6 +29,74 @@ export declare class TypeInfo {
|
|
|
28
29
|
private _argument;
|
|
29
30
|
private _enumValue;
|
|
30
31
|
private _getFieldDef;
|
|
32
|
+
/**
|
|
33
|
+
* Creates a TypeInfo instance.
|
|
34
|
+
* @param schema - Schema used for type lookups.
|
|
35
|
+
* @param initialType - Optional type to use at the start of traversal.
|
|
36
|
+
* @param getFieldDefFn - Optional field definition lookup override.
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* // Track field types during a visitWithTypeInfo traversal.
|
|
40
|
+
* import { parse, visit } from 'graphql/language';
|
|
41
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
42
|
+
* import { TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
|
|
43
|
+
*
|
|
44
|
+
* const schema = buildSchema(`
|
|
45
|
+
* type Query {
|
|
46
|
+
* greeting: String
|
|
47
|
+
* }
|
|
48
|
+
* `);
|
|
49
|
+
* const typeInfo = new TypeInfo(schema);
|
|
50
|
+
* const seenTypes = [];
|
|
51
|
+
*
|
|
52
|
+
* visit(
|
|
53
|
+
* parse('{ greeting }'),
|
|
54
|
+
* visitWithTypeInfo(typeInfo, {
|
|
55
|
+
* Field: () => {
|
|
56
|
+
* seenTypes.push(String(typeInfo.getType()));
|
|
57
|
+
* },
|
|
58
|
+
* }),
|
|
59
|
+
* );
|
|
60
|
+
*
|
|
61
|
+
* seenTypes; // => ['String']
|
|
62
|
+
* ```
|
|
63
|
+
* @example
|
|
64
|
+
* ```ts
|
|
65
|
+
* // This variant starts from an initial type and supplies a field definition resolver.
|
|
66
|
+
* import { Kind } from 'graphql/language';
|
|
67
|
+
* import { GraphQLString } from 'graphql/type';
|
|
68
|
+
* import { buildSchema, TypeInfo } from 'graphql/utilities';
|
|
69
|
+
*
|
|
70
|
+
* const schema = buildSchema(`
|
|
71
|
+
* type Query {
|
|
72
|
+
* greeting: String
|
|
73
|
+
* }
|
|
74
|
+
* `);
|
|
75
|
+
* const typeInfo = new TypeInfo(schema, schema.getQueryType(), () => ({
|
|
76
|
+
* name: 'virtualGreeting',
|
|
77
|
+
* description: undefined,
|
|
78
|
+
* type: GraphQLString,
|
|
79
|
+
* args: [],
|
|
80
|
+
* resolve: undefined,
|
|
81
|
+
* subscribe: undefined,
|
|
82
|
+
* deprecationReason: undefined,
|
|
83
|
+
* extensions: Object.create(null),
|
|
84
|
+
* astNode: undefined,
|
|
85
|
+
* }));
|
|
86
|
+
*
|
|
87
|
+
* typeInfo.enter({
|
|
88
|
+
* kind: Kind.SELECTION_SET,
|
|
89
|
+
* selections: [],
|
|
90
|
+
* });
|
|
91
|
+
* typeInfo.enter({
|
|
92
|
+
* kind: Kind.FIELD,
|
|
93
|
+
* name: { kind: Kind.NAME, value: 'ignored' },
|
|
94
|
+
* });
|
|
95
|
+
*
|
|
96
|
+
* typeInfo.getFieldDef()?.name; // => 'virtualGreeting'
|
|
97
|
+
* String(typeInfo.getType()); // => 'String'
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
31
100
|
constructor(
|
|
32
101
|
schema: GraphQLSchema,
|
|
33
102
|
/**
|
|
@@ -35,20 +104,360 @@ export declare class TypeInfo {
|
|
|
35
104
|
* beginning somewhere other than documents.
|
|
36
105
|
*/
|
|
37
106
|
initialType?: Maybe<GraphQLType>,
|
|
38
|
-
/**
|
|
107
|
+
/**
|
|
108
|
+
* Deprecated field definition lookup override. Use TypeInfo's built-in
|
|
109
|
+
* field definition lookup instead because this hook will be removed in v17.
|
|
110
|
+
* @deprecated will be removed in 17.0.0
|
|
111
|
+
*/
|
|
39
112
|
getFieldDefFn?: GetFieldDefFn,
|
|
40
113
|
);
|
|
114
|
+
/**
|
|
115
|
+
* Returns the value used by `Object.prototype.toString`.
|
|
116
|
+
* @returns The built-in string tag for this object.
|
|
117
|
+
*/
|
|
41
118
|
get [Symbol.toStringTag](): string;
|
|
119
|
+
/**
|
|
120
|
+
* Returns the current output type at this point in traversal.
|
|
121
|
+
* @returns The current output type, if known.
|
|
122
|
+
* @example
|
|
123
|
+
* ```ts
|
|
124
|
+
* import { parse, visit } from 'graphql/language';
|
|
125
|
+
* import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
|
|
126
|
+
*
|
|
127
|
+
* const schema = buildSchema(`
|
|
128
|
+
* type Query {
|
|
129
|
+
* viewer: User
|
|
130
|
+
* }
|
|
131
|
+
*
|
|
132
|
+
* type User {
|
|
133
|
+
* name: String
|
|
134
|
+
* }
|
|
135
|
+
* `);
|
|
136
|
+
* const typeInfo = new TypeInfo(schema);
|
|
137
|
+
* const fieldTypes = {};
|
|
138
|
+
*
|
|
139
|
+
* visit(
|
|
140
|
+
* parse('{ viewer { name } }'),
|
|
141
|
+
* visitWithTypeInfo(typeInfo, {
|
|
142
|
+
* Field: (node) => {
|
|
143
|
+
* fieldTypes[node.name.value] = String(typeInfo.getType());
|
|
144
|
+
* },
|
|
145
|
+
* }),
|
|
146
|
+
* );
|
|
147
|
+
*
|
|
148
|
+
* fieldTypes; // => { viewer: 'User', name: 'String' }
|
|
149
|
+
* ```
|
|
150
|
+
*/
|
|
42
151
|
getType(): Maybe<GraphQLOutputType>;
|
|
152
|
+
/**
|
|
153
|
+
* Returns the current parent composite type.
|
|
154
|
+
* @returns The current parent composite type, if known.
|
|
155
|
+
* @example
|
|
156
|
+
* ```ts
|
|
157
|
+
* import { parse, visit } from 'graphql/language';
|
|
158
|
+
* import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
|
|
159
|
+
*
|
|
160
|
+
* const schema = buildSchema(`
|
|
161
|
+
* type Query {
|
|
162
|
+
* viewer: User
|
|
163
|
+
* }
|
|
164
|
+
*
|
|
165
|
+
* type User {
|
|
166
|
+
* name: String
|
|
167
|
+
* }
|
|
168
|
+
* `);
|
|
169
|
+
* const typeInfo = new TypeInfo(schema);
|
|
170
|
+
* const parentTypes = {};
|
|
171
|
+
*
|
|
172
|
+
* visit(
|
|
173
|
+
* parse('{ viewer { name } }'),
|
|
174
|
+
* visitWithTypeInfo(typeInfo, {
|
|
175
|
+
* Field: (node) => {
|
|
176
|
+
* parentTypes[node.name.value] = String(typeInfo.getParentType());
|
|
177
|
+
* },
|
|
178
|
+
* }),
|
|
179
|
+
* );
|
|
180
|
+
*
|
|
181
|
+
* parentTypes; // => { viewer: 'Query', name: 'User' }
|
|
182
|
+
* ```
|
|
183
|
+
*/
|
|
43
184
|
getParentType(): Maybe<GraphQLCompositeType>;
|
|
185
|
+
/**
|
|
186
|
+
* Returns the current input type at this point in traversal.
|
|
187
|
+
* @returns The current input type, if known.
|
|
188
|
+
* @example
|
|
189
|
+
* ```ts
|
|
190
|
+
* import { parse, visit } from 'graphql/language';
|
|
191
|
+
* import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
|
|
192
|
+
*
|
|
193
|
+
* const schema = buildSchema(`
|
|
194
|
+
* type Query {
|
|
195
|
+
* reviews(stars: Int!, sort: Sort = NEWEST): [String]
|
|
196
|
+
* }
|
|
197
|
+
*
|
|
198
|
+
* enum Sort {
|
|
199
|
+
* NEWEST
|
|
200
|
+
* OLDEST
|
|
201
|
+
* }
|
|
202
|
+
* `);
|
|
203
|
+
* const typeInfo = new TypeInfo(schema);
|
|
204
|
+
* const inputTypes = {};
|
|
205
|
+
*
|
|
206
|
+
* visit(
|
|
207
|
+
* parse('{ reviews(stars: 5, sort: OLDEST) }'),
|
|
208
|
+
* visitWithTypeInfo(typeInfo, {
|
|
209
|
+
* Argument: (node) => {
|
|
210
|
+
* inputTypes[node.name.value] = String(typeInfo.getInputType());
|
|
211
|
+
* },
|
|
212
|
+
* }),
|
|
213
|
+
* );
|
|
214
|
+
*
|
|
215
|
+
* inputTypes; // => { stars: 'Int!', sort: 'Sort' }
|
|
216
|
+
* ```
|
|
217
|
+
*/
|
|
44
218
|
getInputType(): Maybe<GraphQLInputType>;
|
|
219
|
+
/**
|
|
220
|
+
* Returns the parent input type for the current input position.
|
|
221
|
+
* @returns The parent input type, if known.
|
|
222
|
+
* @example
|
|
223
|
+
* ```ts
|
|
224
|
+
* import { parse, visit } from 'graphql/language';
|
|
225
|
+
* import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
|
|
226
|
+
*
|
|
227
|
+
* const schema = buildSchema(`
|
|
228
|
+
* input ReviewFilter {
|
|
229
|
+
* stars: Int!
|
|
230
|
+
* }
|
|
231
|
+
*
|
|
232
|
+
* type Query {
|
|
233
|
+
* reviews(filter: ReviewFilter): [String]
|
|
234
|
+
* }
|
|
235
|
+
* `);
|
|
236
|
+
* const typeInfo = new TypeInfo(schema);
|
|
237
|
+
* const parentInputTypes = {};
|
|
238
|
+
*
|
|
239
|
+
* visit(
|
|
240
|
+
* parse('{ reviews(filter: { stars: 5 }) }'),
|
|
241
|
+
* visitWithTypeInfo(typeInfo, {
|
|
242
|
+
* ObjectField: (node) => {
|
|
243
|
+
* parentInputTypes[node.name.value] = String(typeInfo.getParentInputType());
|
|
244
|
+
* },
|
|
245
|
+
* }),
|
|
246
|
+
* );
|
|
247
|
+
*
|
|
248
|
+
* parentInputTypes; // => { stars: 'ReviewFilter' }
|
|
249
|
+
* ```
|
|
250
|
+
*/
|
|
45
251
|
getParentInputType(): Maybe<GraphQLInputType>;
|
|
252
|
+
/**
|
|
253
|
+
* Returns the current field definition.
|
|
254
|
+
* @returns The current field definition, if known.
|
|
255
|
+
* @example
|
|
256
|
+
* ```ts
|
|
257
|
+
* import { parse, visit } from 'graphql/language';
|
|
258
|
+
* import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
|
|
259
|
+
*
|
|
260
|
+
* const schema = buildSchema(`
|
|
261
|
+
* type Query {
|
|
262
|
+
* greeting: String
|
|
263
|
+
* }
|
|
264
|
+
* `);
|
|
265
|
+
* const typeInfo = new TypeInfo(schema);
|
|
266
|
+
* let fieldName;
|
|
267
|
+
*
|
|
268
|
+
* visit(
|
|
269
|
+
* parse('{ greeting }'),
|
|
270
|
+
* visitWithTypeInfo(typeInfo, {
|
|
271
|
+
* Field: () => {
|
|
272
|
+
* fieldName = typeInfo.getFieldDef()?.name;
|
|
273
|
+
* },
|
|
274
|
+
* }),
|
|
275
|
+
* );
|
|
276
|
+
*
|
|
277
|
+
* fieldName; // => 'greeting'
|
|
278
|
+
* ```
|
|
279
|
+
*/
|
|
46
280
|
getFieldDef(): Maybe<GraphQLField<unknown, unknown>>;
|
|
281
|
+
/**
|
|
282
|
+
* Returns the default value for the current input position.
|
|
283
|
+
* @returns The current default value, if one is available.
|
|
284
|
+
* @example
|
|
285
|
+
* ```ts
|
|
286
|
+
* import { parse, visit } from 'graphql/language';
|
|
287
|
+
* import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
|
|
288
|
+
*
|
|
289
|
+
* const schema = buildSchema(`
|
|
290
|
+
* type Query {
|
|
291
|
+
* reviews(limit: Int = 10): [String]
|
|
292
|
+
* }
|
|
293
|
+
* `);
|
|
294
|
+
* const typeInfo = new TypeInfo(schema);
|
|
295
|
+
* let defaultLimit;
|
|
296
|
+
*
|
|
297
|
+
* visit(
|
|
298
|
+
* parse('{ reviews(limit: 5) }'),
|
|
299
|
+
* visitWithTypeInfo(typeInfo, {
|
|
300
|
+
* Argument: () => {
|
|
301
|
+
* defaultLimit = typeInfo.getDefaultValue();
|
|
302
|
+
* },
|
|
303
|
+
* }),
|
|
304
|
+
* );
|
|
305
|
+
*
|
|
306
|
+
* defaultLimit; // => 10
|
|
307
|
+
* ```
|
|
308
|
+
*/
|
|
47
309
|
getDefaultValue(): Maybe<unknown>;
|
|
310
|
+
/**
|
|
311
|
+
* Returns the current directive definition.
|
|
312
|
+
* @returns The current directive definition, if known.
|
|
313
|
+
* @example
|
|
314
|
+
* ```ts
|
|
315
|
+
* import { parse, visit } from 'graphql/language';
|
|
316
|
+
* import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
|
|
317
|
+
*
|
|
318
|
+
* const schema = buildSchema(`
|
|
319
|
+
* type Query {
|
|
320
|
+
* greeting: String
|
|
321
|
+
* }
|
|
322
|
+
* `);
|
|
323
|
+
* const typeInfo = new TypeInfo(schema);
|
|
324
|
+
* let directiveName;
|
|
325
|
+
*
|
|
326
|
+
* visit(
|
|
327
|
+
* parse('{ greeting @include(if: true) }'),
|
|
328
|
+
* visitWithTypeInfo(typeInfo, {
|
|
329
|
+
* Directive: () => {
|
|
330
|
+
* directiveName = typeInfo.getDirective()?.name;
|
|
331
|
+
* },
|
|
332
|
+
* }),
|
|
333
|
+
* );
|
|
334
|
+
*
|
|
335
|
+
* directiveName; // => 'include'
|
|
336
|
+
* ```
|
|
337
|
+
*/
|
|
48
338
|
getDirective(): Maybe<GraphQLDirective>;
|
|
339
|
+
/**
|
|
340
|
+
* Returns the current argument definition.
|
|
341
|
+
* @returns The current argument definition, if known.
|
|
342
|
+
* @example
|
|
343
|
+
* ```ts
|
|
344
|
+
* import { parse, visit } from 'graphql/language';
|
|
345
|
+
* import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
|
|
346
|
+
*
|
|
347
|
+
* const schema = buildSchema(`
|
|
348
|
+
* type Query {
|
|
349
|
+
* reviews(limit: Int = 10): [String]
|
|
350
|
+
* }
|
|
351
|
+
* `);
|
|
352
|
+
* const typeInfo = new TypeInfo(schema);
|
|
353
|
+
* let argumentName;
|
|
354
|
+
*
|
|
355
|
+
* visit(
|
|
356
|
+
* parse('{ reviews(limit: 5) }'),
|
|
357
|
+
* visitWithTypeInfo(typeInfo, {
|
|
358
|
+
* Argument: () => {
|
|
359
|
+
* argumentName = typeInfo.getArgument()?.name;
|
|
360
|
+
* },
|
|
361
|
+
* }),
|
|
362
|
+
* );
|
|
363
|
+
*
|
|
364
|
+
* argumentName; // => 'limit'
|
|
365
|
+
* ```
|
|
366
|
+
*/
|
|
49
367
|
getArgument(): Maybe<GraphQLArgument>;
|
|
368
|
+
/**
|
|
369
|
+
* Returns the current enum value definition.
|
|
370
|
+
* @returns The current enum value definition, if known.
|
|
371
|
+
* @example
|
|
372
|
+
* ```ts
|
|
373
|
+
* import { parse, visit } from 'graphql/language';
|
|
374
|
+
* import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
|
|
375
|
+
*
|
|
376
|
+
* const schema = buildSchema(`
|
|
377
|
+
* enum Sort {
|
|
378
|
+
* NEWEST
|
|
379
|
+
* OLDEST
|
|
380
|
+
* }
|
|
381
|
+
*
|
|
382
|
+
* type Query {
|
|
383
|
+
* reviews(sort: Sort = NEWEST): [String]
|
|
384
|
+
* }
|
|
385
|
+
* `);
|
|
386
|
+
* const typeInfo = new TypeInfo(schema);
|
|
387
|
+
* let enumValueName;
|
|
388
|
+
*
|
|
389
|
+
* visit(
|
|
390
|
+
* parse('{ reviews(sort: OLDEST) }'),
|
|
391
|
+
* visitWithTypeInfo(typeInfo, {
|
|
392
|
+
* EnumValue: () => {
|
|
393
|
+
* enumValueName = typeInfo.getEnumValue()?.name;
|
|
394
|
+
* },
|
|
395
|
+
* }),
|
|
396
|
+
* );
|
|
397
|
+
*
|
|
398
|
+
* enumValueName; // => 'OLDEST'
|
|
399
|
+
* ```
|
|
400
|
+
*/
|
|
50
401
|
getEnumValue(): Maybe<GraphQLEnumValue>;
|
|
402
|
+
/**
|
|
403
|
+
* Updates this TypeInfo instance for an entered AST node.
|
|
404
|
+
* @param node - AST node being entered.
|
|
405
|
+
* @returns Nothing.
|
|
406
|
+
* @example
|
|
407
|
+
* ```ts
|
|
408
|
+
* import { Kind, parse } from 'graphql/language';
|
|
409
|
+
* import { buildSchema, TypeInfo } from 'graphql/utilities';
|
|
410
|
+
*
|
|
411
|
+
* const schema = buildSchema(`
|
|
412
|
+
* type Query {
|
|
413
|
+
* greeting: String
|
|
414
|
+
* }
|
|
415
|
+
* `);
|
|
416
|
+
* const document = parse('{ greeting }');
|
|
417
|
+
* const operation = document.definitions[0];
|
|
418
|
+
* const selectionSet = operation.selectionSet;
|
|
419
|
+
* const field = selectionSet.selections[0];
|
|
420
|
+
* const typeInfo = new TypeInfo(schema);
|
|
421
|
+
*
|
|
422
|
+
* typeInfo.enter(operation);
|
|
423
|
+
* typeInfo.enter(selectionSet);
|
|
424
|
+
* typeInfo.enter(field);
|
|
425
|
+
*
|
|
426
|
+
* field.kind; // => Kind.FIELD
|
|
427
|
+
* typeInfo.getParentType()?.name; // => 'Query'
|
|
428
|
+
* String(typeInfo.getType()); // => 'String'
|
|
429
|
+
* ```
|
|
430
|
+
*/
|
|
51
431
|
enter(node: ASTNode): void;
|
|
432
|
+
/**
|
|
433
|
+
* Updates this TypeInfo instance for a left AST node.
|
|
434
|
+
* @param node - AST node being entered.
|
|
435
|
+
* @returns Nothing.
|
|
436
|
+
* @example
|
|
437
|
+
* ```ts
|
|
438
|
+
* import { parse } from 'graphql/language';
|
|
439
|
+
* import { buildSchema, TypeInfo } from 'graphql/utilities';
|
|
440
|
+
*
|
|
441
|
+
* const schema = buildSchema(`
|
|
442
|
+
* type Query {
|
|
443
|
+
* greeting: String
|
|
444
|
+
* }
|
|
445
|
+
* `);
|
|
446
|
+
* const document = parse('{ greeting }');
|
|
447
|
+
* const operation = document.definitions[0];
|
|
448
|
+
* const selectionSet = operation.selectionSet;
|
|
449
|
+
* const field = selectionSet.selections[0];
|
|
450
|
+
* const typeInfo = new TypeInfo(schema);
|
|
451
|
+
*
|
|
452
|
+
* typeInfo.enter(operation);
|
|
453
|
+
* typeInfo.enter(selectionSet);
|
|
454
|
+
* typeInfo.enter(field);
|
|
455
|
+
* String(typeInfo.getType()); // => 'String'
|
|
456
|
+
*
|
|
457
|
+
* typeInfo.leave(field);
|
|
458
|
+
* typeInfo.getType(); // => undefined
|
|
459
|
+
* ```
|
|
460
|
+
*/
|
|
52
461
|
leave(node: ASTNode): void;
|
|
53
462
|
}
|
|
54
463
|
declare type GetFieldDefFn = (
|
|
@@ -59,6 +468,37 @@ declare type GetFieldDefFn = (
|
|
|
59
468
|
/**
|
|
60
469
|
* Creates a new visitor instance which maintains a provided TypeInfo instance
|
|
61
470
|
* along with visiting visitor.
|
|
471
|
+
* @param typeInfo - TypeInfo instance to update during traversal.
|
|
472
|
+
* @param visitor - Visitor callbacks to wrap with TypeInfo updates.
|
|
473
|
+
* @returns A visitor that keeps TypeInfo in sync while delegating callbacks.
|
|
474
|
+
* @example
|
|
475
|
+
* ```ts
|
|
476
|
+
* import { parse, visit } from 'graphql/language';
|
|
477
|
+
* import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
|
|
478
|
+
*
|
|
479
|
+
* const schema = buildSchema(`
|
|
480
|
+
* type Query {
|
|
481
|
+
* greeting: String
|
|
482
|
+
* }
|
|
483
|
+
* `);
|
|
484
|
+
* const typeInfo = new TypeInfo(schema);
|
|
485
|
+
* const fields = [];
|
|
486
|
+
*
|
|
487
|
+
* visit(
|
|
488
|
+
* parse('{ greeting }'),
|
|
489
|
+
* visitWithTypeInfo(typeInfo, {
|
|
490
|
+
* Field: (node) => {
|
|
491
|
+
* fields.push({
|
|
492
|
+
* name: node.name.value,
|
|
493
|
+
* parentType: String(typeInfo.getParentType()),
|
|
494
|
+
* type: String(typeInfo.getType()),
|
|
495
|
+
* });
|
|
496
|
+
* },
|
|
497
|
+
* }),
|
|
498
|
+
* );
|
|
499
|
+
*
|
|
500
|
+
* fields; // => [{ name: 'greeting', parentType: 'Query', type: 'String' }]
|
|
501
|
+
* ```
|
|
62
502
|
*/
|
|
63
503
|
export declare function visitWithTypeInfo(
|
|
64
504
|
typeInfo: TypeInfo,
|