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/utilities/TypeInfo.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @category Type Info */
|
|
1
2
|
import { isNode } from '../language/ast.mjs';
|
|
2
3
|
import { Kind } from '../language/kinds.mjs';
|
|
3
4
|
import { getEnterLeaveForKind } from '../language/visitor.mjs';
|
|
@@ -26,6 +27,74 @@ import { typeFromAST } from './typeFromAST.mjs';
|
|
|
26
27
|
*/
|
|
27
28
|
|
|
28
29
|
export class TypeInfo {
|
|
30
|
+
/**
|
|
31
|
+
* Creates a TypeInfo instance.
|
|
32
|
+
* @param schema - Schema used for type lookups.
|
|
33
|
+
* @param initialType - Optional type to use at the start of traversal.
|
|
34
|
+
* @param getFieldDefFn - Optional field definition lookup override.
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* // Track field types during a visitWithTypeInfo traversal.
|
|
38
|
+
* import { parse, visit } from 'graphql/language';
|
|
39
|
+
* import { buildSchema } from 'graphql/utilities';
|
|
40
|
+
* import { TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
|
|
41
|
+
*
|
|
42
|
+
* const schema = buildSchema(`
|
|
43
|
+
* type Query {
|
|
44
|
+
* greeting: String
|
|
45
|
+
* }
|
|
46
|
+
* `);
|
|
47
|
+
* const typeInfo = new TypeInfo(schema);
|
|
48
|
+
* const seenTypes = [];
|
|
49
|
+
*
|
|
50
|
+
* visit(
|
|
51
|
+
* parse('{ greeting }'),
|
|
52
|
+
* visitWithTypeInfo(typeInfo, {
|
|
53
|
+
* Field: () => {
|
|
54
|
+
* seenTypes.push(String(typeInfo.getType()));
|
|
55
|
+
* },
|
|
56
|
+
* }),
|
|
57
|
+
* );
|
|
58
|
+
*
|
|
59
|
+
* seenTypes; // => ['String']
|
|
60
|
+
* ```
|
|
61
|
+
* @example
|
|
62
|
+
* ```ts
|
|
63
|
+
* // This variant starts from an initial type and supplies a field definition resolver.
|
|
64
|
+
* import { Kind } from 'graphql/language';
|
|
65
|
+
* import { GraphQLString } from 'graphql/type';
|
|
66
|
+
* import { buildSchema, TypeInfo } from 'graphql/utilities';
|
|
67
|
+
*
|
|
68
|
+
* const schema = buildSchema(`
|
|
69
|
+
* type Query {
|
|
70
|
+
* greeting: String
|
|
71
|
+
* }
|
|
72
|
+
* `);
|
|
73
|
+
* const typeInfo = new TypeInfo(schema, schema.getQueryType(), () => ({
|
|
74
|
+
* name: 'virtualGreeting',
|
|
75
|
+
* description: undefined,
|
|
76
|
+
* type: GraphQLString,
|
|
77
|
+
* args: [],
|
|
78
|
+
* resolve: undefined,
|
|
79
|
+
* subscribe: undefined,
|
|
80
|
+
* deprecationReason: undefined,
|
|
81
|
+
* extensions: Object.create(null),
|
|
82
|
+
* astNode: undefined,
|
|
83
|
+
* }));
|
|
84
|
+
*
|
|
85
|
+
* typeInfo.enter({
|
|
86
|
+
* kind: Kind.SELECTION_SET,
|
|
87
|
+
* selections: [],
|
|
88
|
+
* });
|
|
89
|
+
* typeInfo.enter({
|
|
90
|
+
* kind: Kind.FIELD,
|
|
91
|
+
* name: { kind: Kind.NAME, value: 'ignored' },
|
|
92
|
+
* });
|
|
93
|
+
*
|
|
94
|
+
* typeInfo.getFieldDef()?.name; // => 'virtualGreeting'
|
|
95
|
+
* String(typeInfo.getType()); // => 'String'
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
29
98
|
constructor(
|
|
30
99
|
schema,
|
|
31
100
|
/**
|
|
@@ -33,7 +102,11 @@ export class TypeInfo {
|
|
|
33
102
|
* beginning somewhere other than documents.
|
|
34
103
|
*/
|
|
35
104
|
initialType,
|
|
36
|
-
/**
|
|
105
|
+
/**
|
|
106
|
+
* Deprecated field definition lookup override. Use TypeInfo's built-in
|
|
107
|
+
* field definition lookup instead because this hook will be removed in v17.
|
|
108
|
+
* @deprecated will be removed in 17.0.0
|
|
109
|
+
*/
|
|
37
110
|
getFieldDefFn,
|
|
38
111
|
) {
|
|
39
112
|
this._schema = schema;
|
|
@@ -64,58 +137,365 @@ export class TypeInfo {
|
|
|
64
137
|
}
|
|
65
138
|
}
|
|
66
139
|
}
|
|
140
|
+
/**
|
|
141
|
+
* Returns the value used by `Object.prototype.toString`.
|
|
142
|
+
* @returns The built-in string tag for this object.
|
|
143
|
+
*/
|
|
67
144
|
|
|
68
145
|
get [Symbol.toStringTag]() {
|
|
69
146
|
return 'TypeInfo';
|
|
70
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* Returns the current output type at this point in traversal.
|
|
150
|
+
* @returns The current output type, if known.
|
|
151
|
+
* @example
|
|
152
|
+
* ```ts
|
|
153
|
+
* import { parse, visit } from 'graphql/language';
|
|
154
|
+
* import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
|
|
155
|
+
*
|
|
156
|
+
* const schema = buildSchema(`
|
|
157
|
+
* type Query {
|
|
158
|
+
* viewer: User
|
|
159
|
+
* }
|
|
160
|
+
*
|
|
161
|
+
* type User {
|
|
162
|
+
* name: String
|
|
163
|
+
* }
|
|
164
|
+
* `);
|
|
165
|
+
* const typeInfo = new TypeInfo(schema);
|
|
166
|
+
* const fieldTypes = {};
|
|
167
|
+
*
|
|
168
|
+
* visit(
|
|
169
|
+
* parse('{ viewer { name } }'),
|
|
170
|
+
* visitWithTypeInfo(typeInfo, {
|
|
171
|
+
* Field: (node) => {
|
|
172
|
+
* fieldTypes[node.name.value] = String(typeInfo.getType());
|
|
173
|
+
* },
|
|
174
|
+
* }),
|
|
175
|
+
* );
|
|
176
|
+
*
|
|
177
|
+
* fieldTypes; // => { viewer: 'User', name: 'String' }
|
|
178
|
+
* ```
|
|
179
|
+
*/
|
|
71
180
|
|
|
72
181
|
getType() {
|
|
73
182
|
if (this._typeStack.length > 0) {
|
|
74
183
|
return this._typeStack[this._typeStack.length - 1];
|
|
75
184
|
}
|
|
76
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* Returns the current parent composite type.
|
|
188
|
+
* @returns The current parent composite type, if known.
|
|
189
|
+
* @example
|
|
190
|
+
* ```ts
|
|
191
|
+
* import { parse, visit } from 'graphql/language';
|
|
192
|
+
* import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
|
|
193
|
+
*
|
|
194
|
+
* const schema = buildSchema(`
|
|
195
|
+
* type Query {
|
|
196
|
+
* viewer: User
|
|
197
|
+
* }
|
|
198
|
+
*
|
|
199
|
+
* type User {
|
|
200
|
+
* name: String
|
|
201
|
+
* }
|
|
202
|
+
* `);
|
|
203
|
+
* const typeInfo = new TypeInfo(schema);
|
|
204
|
+
* const parentTypes = {};
|
|
205
|
+
*
|
|
206
|
+
* visit(
|
|
207
|
+
* parse('{ viewer { name } }'),
|
|
208
|
+
* visitWithTypeInfo(typeInfo, {
|
|
209
|
+
* Field: (node) => {
|
|
210
|
+
* parentTypes[node.name.value] = String(typeInfo.getParentType());
|
|
211
|
+
* },
|
|
212
|
+
* }),
|
|
213
|
+
* );
|
|
214
|
+
*
|
|
215
|
+
* parentTypes; // => { viewer: 'Query', name: 'User' }
|
|
216
|
+
* ```
|
|
217
|
+
*/
|
|
77
218
|
|
|
78
219
|
getParentType() {
|
|
79
220
|
if (this._parentTypeStack.length > 0) {
|
|
80
221
|
return this._parentTypeStack[this._parentTypeStack.length - 1];
|
|
81
222
|
}
|
|
82
223
|
}
|
|
224
|
+
/**
|
|
225
|
+
* Returns the current input type at this point in traversal.
|
|
226
|
+
* @returns The current input type, if known.
|
|
227
|
+
* @example
|
|
228
|
+
* ```ts
|
|
229
|
+
* import { parse, visit } from 'graphql/language';
|
|
230
|
+
* import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
|
|
231
|
+
*
|
|
232
|
+
* const schema = buildSchema(`
|
|
233
|
+
* type Query {
|
|
234
|
+
* reviews(stars: Int!, sort: Sort = NEWEST): [String]
|
|
235
|
+
* }
|
|
236
|
+
*
|
|
237
|
+
* enum Sort {
|
|
238
|
+
* NEWEST
|
|
239
|
+
* OLDEST
|
|
240
|
+
* }
|
|
241
|
+
* `);
|
|
242
|
+
* const typeInfo = new TypeInfo(schema);
|
|
243
|
+
* const inputTypes = {};
|
|
244
|
+
*
|
|
245
|
+
* visit(
|
|
246
|
+
* parse('{ reviews(stars: 5, sort: OLDEST) }'),
|
|
247
|
+
* visitWithTypeInfo(typeInfo, {
|
|
248
|
+
* Argument: (node) => {
|
|
249
|
+
* inputTypes[node.name.value] = String(typeInfo.getInputType());
|
|
250
|
+
* },
|
|
251
|
+
* }),
|
|
252
|
+
* );
|
|
253
|
+
*
|
|
254
|
+
* inputTypes; // => { stars: 'Int!', sort: 'Sort' }
|
|
255
|
+
* ```
|
|
256
|
+
*/
|
|
83
257
|
|
|
84
258
|
getInputType() {
|
|
85
259
|
if (this._inputTypeStack.length > 0) {
|
|
86
260
|
return this._inputTypeStack[this._inputTypeStack.length - 1];
|
|
87
261
|
}
|
|
88
262
|
}
|
|
263
|
+
/**
|
|
264
|
+
* Returns the parent input type for the current input position.
|
|
265
|
+
* @returns The parent input type, if known.
|
|
266
|
+
* @example
|
|
267
|
+
* ```ts
|
|
268
|
+
* import { parse, visit } from 'graphql/language';
|
|
269
|
+
* import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
|
|
270
|
+
*
|
|
271
|
+
* const schema = buildSchema(`
|
|
272
|
+
* input ReviewFilter {
|
|
273
|
+
* stars: Int!
|
|
274
|
+
* }
|
|
275
|
+
*
|
|
276
|
+
* type Query {
|
|
277
|
+
* reviews(filter: ReviewFilter): [String]
|
|
278
|
+
* }
|
|
279
|
+
* `);
|
|
280
|
+
* const typeInfo = new TypeInfo(schema);
|
|
281
|
+
* const parentInputTypes = {};
|
|
282
|
+
*
|
|
283
|
+
* visit(
|
|
284
|
+
* parse('{ reviews(filter: { stars: 5 }) }'),
|
|
285
|
+
* visitWithTypeInfo(typeInfo, {
|
|
286
|
+
* ObjectField: (node) => {
|
|
287
|
+
* parentInputTypes[node.name.value] = String(typeInfo.getParentInputType());
|
|
288
|
+
* },
|
|
289
|
+
* }),
|
|
290
|
+
* );
|
|
291
|
+
*
|
|
292
|
+
* parentInputTypes; // => { stars: 'ReviewFilter' }
|
|
293
|
+
* ```
|
|
294
|
+
*/
|
|
89
295
|
|
|
90
296
|
getParentInputType() {
|
|
91
297
|
if (this._inputTypeStack.length > 1) {
|
|
92
298
|
return this._inputTypeStack[this._inputTypeStack.length - 2];
|
|
93
299
|
}
|
|
94
300
|
}
|
|
301
|
+
/**
|
|
302
|
+
* Returns the current field definition.
|
|
303
|
+
* @returns The current field definition, if known.
|
|
304
|
+
* @example
|
|
305
|
+
* ```ts
|
|
306
|
+
* import { parse, visit } from 'graphql/language';
|
|
307
|
+
* import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
|
|
308
|
+
*
|
|
309
|
+
* const schema = buildSchema(`
|
|
310
|
+
* type Query {
|
|
311
|
+
* greeting: String
|
|
312
|
+
* }
|
|
313
|
+
* `);
|
|
314
|
+
* const typeInfo = new TypeInfo(schema);
|
|
315
|
+
* let fieldName;
|
|
316
|
+
*
|
|
317
|
+
* visit(
|
|
318
|
+
* parse('{ greeting }'),
|
|
319
|
+
* visitWithTypeInfo(typeInfo, {
|
|
320
|
+
* Field: () => {
|
|
321
|
+
* fieldName = typeInfo.getFieldDef()?.name;
|
|
322
|
+
* },
|
|
323
|
+
* }),
|
|
324
|
+
* );
|
|
325
|
+
*
|
|
326
|
+
* fieldName; // => 'greeting'
|
|
327
|
+
* ```
|
|
328
|
+
*/
|
|
95
329
|
|
|
96
330
|
getFieldDef() {
|
|
97
331
|
if (this._fieldDefStack.length > 0) {
|
|
98
332
|
return this._fieldDefStack[this._fieldDefStack.length - 1];
|
|
99
333
|
}
|
|
100
334
|
}
|
|
335
|
+
/**
|
|
336
|
+
* Returns the default value for the current input position.
|
|
337
|
+
* @returns The current default value, if one is available.
|
|
338
|
+
* @example
|
|
339
|
+
* ```ts
|
|
340
|
+
* import { parse, visit } from 'graphql/language';
|
|
341
|
+
* import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
|
|
342
|
+
*
|
|
343
|
+
* const schema = buildSchema(`
|
|
344
|
+
* type Query {
|
|
345
|
+
* reviews(limit: Int = 10): [String]
|
|
346
|
+
* }
|
|
347
|
+
* `);
|
|
348
|
+
* const typeInfo = new TypeInfo(schema);
|
|
349
|
+
* let defaultLimit;
|
|
350
|
+
*
|
|
351
|
+
* visit(
|
|
352
|
+
* parse('{ reviews(limit: 5) }'),
|
|
353
|
+
* visitWithTypeInfo(typeInfo, {
|
|
354
|
+
* Argument: () => {
|
|
355
|
+
* defaultLimit = typeInfo.getDefaultValue();
|
|
356
|
+
* },
|
|
357
|
+
* }),
|
|
358
|
+
* );
|
|
359
|
+
*
|
|
360
|
+
* defaultLimit; // => 10
|
|
361
|
+
* ```
|
|
362
|
+
*/
|
|
101
363
|
|
|
102
364
|
getDefaultValue() {
|
|
103
365
|
if (this._defaultValueStack.length > 0) {
|
|
104
366
|
return this._defaultValueStack[this._defaultValueStack.length - 1];
|
|
105
367
|
}
|
|
106
368
|
}
|
|
369
|
+
/**
|
|
370
|
+
* Returns the current directive definition.
|
|
371
|
+
* @returns The current directive definition, if known.
|
|
372
|
+
* @example
|
|
373
|
+
* ```ts
|
|
374
|
+
* import { parse, visit } from 'graphql/language';
|
|
375
|
+
* import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
|
|
376
|
+
*
|
|
377
|
+
* const schema = buildSchema(`
|
|
378
|
+
* type Query {
|
|
379
|
+
* greeting: String
|
|
380
|
+
* }
|
|
381
|
+
* `);
|
|
382
|
+
* const typeInfo = new TypeInfo(schema);
|
|
383
|
+
* let directiveName;
|
|
384
|
+
*
|
|
385
|
+
* visit(
|
|
386
|
+
* parse('{ greeting @include(if: true) }'),
|
|
387
|
+
* visitWithTypeInfo(typeInfo, {
|
|
388
|
+
* Directive: () => {
|
|
389
|
+
* directiveName = typeInfo.getDirective()?.name;
|
|
390
|
+
* },
|
|
391
|
+
* }),
|
|
392
|
+
* );
|
|
393
|
+
*
|
|
394
|
+
* directiveName; // => 'include'
|
|
395
|
+
* ```
|
|
396
|
+
*/
|
|
107
397
|
|
|
108
398
|
getDirective() {
|
|
109
399
|
return this._directive;
|
|
110
400
|
}
|
|
401
|
+
/**
|
|
402
|
+
* Returns the current argument definition.
|
|
403
|
+
* @returns The current argument definition, if known.
|
|
404
|
+
* @example
|
|
405
|
+
* ```ts
|
|
406
|
+
* import { parse, visit } from 'graphql/language';
|
|
407
|
+
* import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
|
|
408
|
+
*
|
|
409
|
+
* const schema = buildSchema(`
|
|
410
|
+
* type Query {
|
|
411
|
+
* reviews(limit: Int = 10): [String]
|
|
412
|
+
* }
|
|
413
|
+
* `);
|
|
414
|
+
* const typeInfo = new TypeInfo(schema);
|
|
415
|
+
* let argumentName;
|
|
416
|
+
*
|
|
417
|
+
* visit(
|
|
418
|
+
* parse('{ reviews(limit: 5) }'),
|
|
419
|
+
* visitWithTypeInfo(typeInfo, {
|
|
420
|
+
* Argument: () => {
|
|
421
|
+
* argumentName = typeInfo.getArgument()?.name;
|
|
422
|
+
* },
|
|
423
|
+
* }),
|
|
424
|
+
* );
|
|
425
|
+
*
|
|
426
|
+
* argumentName; // => 'limit'
|
|
427
|
+
* ```
|
|
428
|
+
*/
|
|
111
429
|
|
|
112
430
|
getArgument() {
|
|
113
431
|
return this._argument;
|
|
114
432
|
}
|
|
433
|
+
/**
|
|
434
|
+
* Returns the current enum value definition.
|
|
435
|
+
* @returns The current enum value definition, if known.
|
|
436
|
+
* @example
|
|
437
|
+
* ```ts
|
|
438
|
+
* import { parse, visit } from 'graphql/language';
|
|
439
|
+
* import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
|
|
440
|
+
*
|
|
441
|
+
* const schema = buildSchema(`
|
|
442
|
+
* enum Sort {
|
|
443
|
+
* NEWEST
|
|
444
|
+
* OLDEST
|
|
445
|
+
* }
|
|
446
|
+
*
|
|
447
|
+
* type Query {
|
|
448
|
+
* reviews(sort: Sort = NEWEST): [String]
|
|
449
|
+
* }
|
|
450
|
+
* `);
|
|
451
|
+
* const typeInfo = new TypeInfo(schema);
|
|
452
|
+
* let enumValueName;
|
|
453
|
+
*
|
|
454
|
+
* visit(
|
|
455
|
+
* parse('{ reviews(sort: OLDEST) }'),
|
|
456
|
+
* visitWithTypeInfo(typeInfo, {
|
|
457
|
+
* EnumValue: () => {
|
|
458
|
+
* enumValueName = typeInfo.getEnumValue()?.name;
|
|
459
|
+
* },
|
|
460
|
+
* }),
|
|
461
|
+
* );
|
|
462
|
+
*
|
|
463
|
+
* enumValueName; // => 'OLDEST'
|
|
464
|
+
* ```
|
|
465
|
+
*/
|
|
115
466
|
|
|
116
467
|
getEnumValue() {
|
|
117
468
|
return this._enumValue;
|
|
118
469
|
}
|
|
470
|
+
/**
|
|
471
|
+
* Updates this TypeInfo instance for an entered AST node.
|
|
472
|
+
* @param node - AST node being entered.
|
|
473
|
+
* @returns Nothing.
|
|
474
|
+
* @example
|
|
475
|
+
* ```ts
|
|
476
|
+
* import { Kind, parse } from 'graphql/language';
|
|
477
|
+
* import { buildSchema, TypeInfo } from 'graphql/utilities';
|
|
478
|
+
*
|
|
479
|
+
* const schema = buildSchema(`
|
|
480
|
+
* type Query {
|
|
481
|
+
* greeting: String
|
|
482
|
+
* }
|
|
483
|
+
* `);
|
|
484
|
+
* const document = parse('{ greeting }');
|
|
485
|
+
* const operation = document.definitions[0];
|
|
486
|
+
* const selectionSet = operation.selectionSet;
|
|
487
|
+
* const field = selectionSet.selections[0];
|
|
488
|
+
* const typeInfo = new TypeInfo(schema);
|
|
489
|
+
*
|
|
490
|
+
* typeInfo.enter(operation);
|
|
491
|
+
* typeInfo.enter(selectionSet);
|
|
492
|
+
* typeInfo.enter(field);
|
|
493
|
+
*
|
|
494
|
+
* field.kind; // => Kind.FIELD
|
|
495
|
+
* typeInfo.getParentType()?.name; // => 'Query'
|
|
496
|
+
* String(typeInfo.getType()); // => 'String'
|
|
497
|
+
* ```
|
|
498
|
+
*/
|
|
119
499
|
|
|
120
500
|
enter(node) {
|
|
121
501
|
const schema = this._schema; // Note: many of the types below are explicitly typed as "unknown" to drop
|
|
@@ -268,6 +648,35 @@ export class TypeInfo {
|
|
|
268
648
|
default: // Ignore other nodes
|
|
269
649
|
}
|
|
270
650
|
}
|
|
651
|
+
/**
|
|
652
|
+
* Updates this TypeInfo instance for a left AST node.
|
|
653
|
+
* @param node - AST node being entered.
|
|
654
|
+
* @returns Nothing.
|
|
655
|
+
* @example
|
|
656
|
+
* ```ts
|
|
657
|
+
* import { parse } from 'graphql/language';
|
|
658
|
+
* import { buildSchema, TypeInfo } from 'graphql/utilities';
|
|
659
|
+
*
|
|
660
|
+
* const schema = buildSchema(`
|
|
661
|
+
* type Query {
|
|
662
|
+
* greeting: String
|
|
663
|
+
* }
|
|
664
|
+
* `);
|
|
665
|
+
* const document = parse('{ greeting }');
|
|
666
|
+
* const operation = document.definitions[0];
|
|
667
|
+
* const selectionSet = operation.selectionSet;
|
|
668
|
+
* const field = selectionSet.selections[0];
|
|
669
|
+
* const typeInfo = new TypeInfo(schema);
|
|
670
|
+
*
|
|
671
|
+
* typeInfo.enter(operation);
|
|
672
|
+
* typeInfo.enter(selectionSet);
|
|
673
|
+
* typeInfo.enter(field);
|
|
674
|
+
* String(typeInfo.getType()); // => 'String'
|
|
675
|
+
*
|
|
676
|
+
* typeInfo.leave(field);
|
|
677
|
+
* typeInfo.getType(); // => undefined
|
|
678
|
+
* ```
|
|
679
|
+
*/
|
|
271
680
|
|
|
272
681
|
leave(node) {
|
|
273
682
|
switch (node.kind) {
|
|
@@ -329,6 +738,8 @@ export class TypeInfo {
|
|
|
329
738
|
* Not exactly the same as the executor's definition of getFieldDef, in this
|
|
330
739
|
* statically evaluated environment we do not always have an Object type,
|
|
331
740
|
* and need to handle Interface and Union types.
|
|
741
|
+
*
|
|
742
|
+
* @internal
|
|
332
743
|
*/
|
|
333
744
|
function getFieldDef(schema, parentType, fieldNode) {
|
|
334
745
|
const name = fieldNode.name.value;
|
|
@@ -355,6 +766,37 @@ function getFieldDef(schema, parentType, fieldNode) {
|
|
|
355
766
|
/**
|
|
356
767
|
* Creates a new visitor instance which maintains a provided TypeInfo instance
|
|
357
768
|
* along with visiting visitor.
|
|
769
|
+
* @param typeInfo - TypeInfo instance to update during traversal.
|
|
770
|
+
* @param visitor - Visitor callbacks to wrap with TypeInfo updates.
|
|
771
|
+
* @returns A visitor that keeps TypeInfo in sync while delegating callbacks.
|
|
772
|
+
* @example
|
|
773
|
+
* ```ts
|
|
774
|
+
* import { parse, visit } from 'graphql/language';
|
|
775
|
+
* import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';
|
|
776
|
+
*
|
|
777
|
+
* const schema = buildSchema(`
|
|
778
|
+
* type Query {
|
|
779
|
+
* greeting: String
|
|
780
|
+
* }
|
|
781
|
+
* `);
|
|
782
|
+
* const typeInfo = new TypeInfo(schema);
|
|
783
|
+
* const fields = [];
|
|
784
|
+
*
|
|
785
|
+
* visit(
|
|
786
|
+
* parse('{ greeting }'),
|
|
787
|
+
* visitWithTypeInfo(typeInfo, {
|
|
788
|
+
* Field: (node) => {
|
|
789
|
+
* fields.push({
|
|
790
|
+
* name: node.name.value,
|
|
791
|
+
* parentType: String(typeInfo.getParentType()),
|
|
792
|
+
* type: String(typeInfo.getType()),
|
|
793
|
+
* });
|
|
794
|
+
* },
|
|
795
|
+
* }),
|
|
796
|
+
* );
|
|
797
|
+
*
|
|
798
|
+
* fields; // => [{ name: 'greeting', parentType: 'Query', type: 'String' }]
|
|
799
|
+
* ```
|
|
358
800
|
*/
|
|
359
801
|
|
|
360
802
|
export function visitWithTypeInfo(typeInfo, visitor) {
|
|
@@ -1,11 +1,36 @@
|
|
|
1
|
+
/** @category Validation */
|
|
1
2
|
import { GraphQLError } from '../error/GraphQLError';
|
|
2
3
|
/**
|
|
3
|
-
* Upholds the spec rules about naming.
|
|
4
|
+
* Upholds the spec rules about naming. This deprecated helper is retained for
|
|
5
|
+
* backwards compatibility; call `assertName` instead because assertValidName
|
|
6
|
+
* will be removed in v17.
|
|
7
|
+
* @param name - The GraphQL name to validate.
|
|
8
|
+
* @returns The validated GraphQL name.
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { assertValidName } from 'graphql/utilities';
|
|
12
|
+
*
|
|
13
|
+
* assertValidName('User'); // => 'User'
|
|
14
|
+
* assertValidName('__typename'); // throws an error
|
|
15
|
+
* ```
|
|
4
16
|
* @deprecated Please use `assertName` instead. Will be removed in v17
|
|
5
17
|
*/
|
|
6
18
|
export declare function assertValidName(name: string): string;
|
|
7
19
|
/**
|
|
8
|
-
* Returns an Error if a name is invalid.
|
|
20
|
+
* Returns an Error if a name is invalid. This deprecated helper is retained for
|
|
21
|
+
* backwards compatibility; call `assertName` and catch the thrown GraphQLError
|
|
22
|
+
* instead because isValidNameError will be removed in v17.
|
|
23
|
+
* @param name - The GraphQL name to validate.
|
|
24
|
+
* @returns A GraphQLError if the name is invalid; otherwise undefined.
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* import { isValidNameError } from 'graphql/utilities';
|
|
28
|
+
*
|
|
29
|
+
* isValidNameError('User'); // => undefined
|
|
30
|
+
*
|
|
31
|
+
* const error = isValidNameError('__typename');
|
|
32
|
+
* error.message; // => 'Name "__typename" must not begin with "__", which is reserved by GraphQL introspection.'
|
|
33
|
+
* ```
|
|
9
34
|
* @deprecated Please use `assertName` instead. Will be removed in v17
|
|
10
35
|
*/
|
|
11
36
|
export declare function isValidNameError(
|
|
@@ -12,10 +12,23 @@ var _GraphQLError = require('../error/GraphQLError.js');
|
|
|
12
12
|
|
|
13
13
|
var _assertName = require('../type/assertName.js');
|
|
14
14
|
|
|
15
|
+
/** @category Validation */
|
|
16
|
+
|
|
15
17
|
/* c8 ignore start */
|
|
16
18
|
|
|
17
19
|
/**
|
|
18
|
-
* Upholds the spec rules about naming.
|
|
20
|
+
* Upholds the spec rules about naming. This deprecated helper is retained for
|
|
21
|
+
* backwards compatibility; call `assertName` instead because assertValidName
|
|
22
|
+
* will be removed in v17.
|
|
23
|
+
* @param name - The GraphQL name to validate.
|
|
24
|
+
* @returns The validated GraphQL name.
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* import { assertValidName } from 'graphql/utilities';
|
|
28
|
+
*
|
|
29
|
+
* assertValidName('User'); // => 'User'
|
|
30
|
+
* assertValidName('__typename'); // throws an error
|
|
31
|
+
* ```
|
|
19
32
|
* @deprecated Please use `assertName` instead. Will be removed in v17
|
|
20
33
|
*/
|
|
21
34
|
function assertValidName(name) {
|
|
@@ -28,7 +41,20 @@ function assertValidName(name) {
|
|
|
28
41
|
return name;
|
|
29
42
|
}
|
|
30
43
|
/**
|
|
31
|
-
* Returns an Error if a name is invalid.
|
|
44
|
+
* Returns an Error if a name is invalid. This deprecated helper is retained for
|
|
45
|
+
* backwards compatibility; call `assertName` and catch the thrown GraphQLError
|
|
46
|
+
* instead because isValidNameError will be removed in v17.
|
|
47
|
+
* @param name - The GraphQL name to validate.
|
|
48
|
+
* @returns A GraphQLError if the name is invalid; otherwise undefined.
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* import { isValidNameError } from 'graphql/utilities';
|
|
52
|
+
*
|
|
53
|
+
* isValidNameError('User'); // => undefined
|
|
54
|
+
*
|
|
55
|
+
* const error = isValidNameError('__typename');
|
|
56
|
+
* error.message; // => 'Name "__typename" must not begin with "__", which is reserved by GraphQL introspection.'
|
|
57
|
+
* ```
|
|
32
58
|
* @deprecated Please use `assertName` instead. Will be removed in v17
|
|
33
59
|
*/
|
|
34
60
|
|
|
@@ -1,10 +1,22 @@
|
|
|
1
|
+
/** @category Validation */
|
|
1
2
|
import { devAssert } from '../jsutils/devAssert.mjs';
|
|
2
3
|
import { GraphQLError } from '../error/GraphQLError.mjs';
|
|
3
4
|
import { assertName } from '../type/assertName.mjs';
|
|
4
5
|
/* c8 ignore start */
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
|
-
* Upholds the spec rules about naming.
|
|
8
|
+
* Upholds the spec rules about naming. This deprecated helper is retained for
|
|
9
|
+
* backwards compatibility; call `assertName` instead because assertValidName
|
|
10
|
+
* will be removed in v17.
|
|
11
|
+
* @param name - The GraphQL name to validate.
|
|
12
|
+
* @returns The validated GraphQL name.
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { assertValidName } from 'graphql/utilities';
|
|
16
|
+
*
|
|
17
|
+
* assertValidName('User'); // => 'User'
|
|
18
|
+
* assertValidName('__typename'); // throws an error
|
|
19
|
+
* ```
|
|
8
20
|
* @deprecated Please use `assertName` instead. Will be removed in v17
|
|
9
21
|
*/
|
|
10
22
|
|
|
@@ -18,7 +30,20 @@ export function assertValidName(name) {
|
|
|
18
30
|
return name;
|
|
19
31
|
}
|
|
20
32
|
/**
|
|
21
|
-
* Returns an Error if a name is invalid.
|
|
33
|
+
* Returns an Error if a name is invalid. This deprecated helper is retained for
|
|
34
|
+
* backwards compatibility; call `assertName` and catch the thrown GraphQLError
|
|
35
|
+
* instead because isValidNameError will be removed in v17.
|
|
36
|
+
* @param name - The GraphQL name to validate.
|
|
37
|
+
* @returns A GraphQLError if the name is invalid; otherwise undefined.
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* import { isValidNameError } from 'graphql/utilities';
|
|
41
|
+
*
|
|
42
|
+
* isValidNameError('User'); // => undefined
|
|
43
|
+
*
|
|
44
|
+
* const error = isValidNameError('__typename');
|
|
45
|
+
* error.message; // => 'Name "__typename" must not begin with "__", which is reserved by GraphQL introspection.'
|
|
46
|
+
* ```
|
|
22
47
|
* @deprecated Please use `assertName` instead. Will be removed in v17
|
|
23
48
|
*/
|
|
24
49
|
|