graphql
- Version 17.0.2
- Published
- 6.52 MB
- No dependencies
- MIT license
Install
npm i graphqlyarn add graphqlpnpm add graphqlOverview
The root graphql package re-exports the public GraphQL.js API from its submodules and provides the high-level request pipeline helpers defined in this module.
You can import public exports from GraphQL.js modules through the root graphql package or through their module-specific entry point. For example, these two references resolve to the same parse function:
import { parse } from 'graphql';import { parse } from 'graphql/language';Use the root package when you want a single import surface, or use submodules such as graphql/language, graphql/type, graphql/execution, and graphql/utilities when you want module-focused imports. This module also defines root-only APIs, such as request pipeline helpers and version metadata, that do not belong to a narrower submodule.
Index
Variables
- BREAK
- BreakingChangeType
- DangerousChangeType
- DEFAULT_DEPRECATION_REASON
- defaultFieldResolver
- defaultHarness
- defaultTypeResolver
- DirectiveLocation
- GRAPHQL_MAX_INT
- GRAPHQL_MIN_INT
- GraphQLBoolean
- GraphQLDeferDirective
- GraphQLDeprecatedDirective
- GraphQLFloat
- GraphQLID
- GraphQLIncludeDirective
- GraphQLInt
- GraphQLOneOfDirective
- GraphQLSkipDirective
- GraphQLSpecifiedByDirective
- GraphQLStreamDirective
- GraphQLString
- introspectionTypes
- OperationTypeNode
- recommendedRules
- SafeChangeType
- SchemaMetaFieldDef
- specifiedDirectives
- specifiedRules
- specifiedScalarTypes
- TokenKind
- TypeKind
- TypeMetaFieldDef
- TypeNameMetaFieldDef
- version
- versionInfo
Functions
- assertAbstractType()
- assertArgument()
- assertCompositeType()
- assertDirective()
- assertEnumType()
- assertEnumValue()
- assertEnumValueName()
- assertField()
- assertInputField()
- assertInputObjectType()
- assertInputType()
- assertInterfaceType()
- assertLeafType()
- assertListType()
- assertName()
- assertNamedType()
- assertNonNullType()
- assertNullableType()
- assertObjectType()
- assertOutputType()
- assertScalarType()
- assertSchema()
- assertType()
- assertUnionType()
- assertValidSchema()
- assertWrappingType()
- astFromValue()
- buildASTSchema()
- buildClientSchema()
- buildSchema()
- coerceInputLiteral()
- coerceInputValue()
- concatAST()
- createSourceEventStream()
- DeferStreamDirectiveLabelRule()
- DeferStreamDirectiveOnRootFieldRule()
- DeferStreamDirectiveOnValidOperationsRule()
- doTypesOverlap()
- enableDevMode()
- ExecutableDefinitionsRule()
- execute()
- executeRootSelectionSet()
- executeSubscriptionEvent()
- executeSync()
- experimentalExecuteIncrementally()
- experimentalExecuteRootSelectionSet()
- extendSchema()
- FieldsOnCorrectTypeRule()
- findBreakingChanges()
- findDangerousChanges()
- findSchemaChanges()
- FragmentsOnCompositeTypesRule()
- getArgumentValues()
- getDirectiveValues()
- getEnterLeaveForKind()
- getIntrospectionQuery()
- getLocation()
- getNamedType()
- getNullableType()
- getOperationAST()
- getVariableValues()
- graphql()
- graphqlSync()
- introspectionFromSchema()
- isAbstractType()
- isArgument()
- isCompositeType()
- isConstValueNode()
- isDefinitionNode()
- isDevModeEnabled()
- isDirective()
- isEnumType()
- isEnumValue()
- isEqualType()
- isExecutableDefinitionNode()
- isField()
- isInputField()
- isInputObjectType()
- isInputType()
- isInterfaceType()
- isIntrospectionType()
- isLeafType()
- isListType()
- isNamedType()
- isNonNullType()
- isNullableType()
- isObjectType()
- isOutputType()
- isRequiredArgument()
- isRequiredInputField()
- isScalarType()
- isSchema()
- isSchemaCoordinateNode()
- isSelectionNode()
- isSpecifiedDirective()
- isSpecifiedScalarType()
- isSubscriptionOperationDefinitionNode()
- isType()
- isTypeDefinitionNode()
- isTypeExtensionNode()
- isTypeNode()
- isTypeSubTypeOf()
- isTypeSystemDefinitionNode()
- isTypeSystemExtensionNode()
- isUnionType()
- isValueNode()
- isWrappingType()
- KnownArgumentNamesRule()
- KnownDirectivesRule()
- KnownFragmentNamesRule()
- KnownOperationTypesRule()
- KnownTypeNamesRule()
- legacyExecuteIncrementally()
- legacyExecuteRootSelectionSet()
- lexicographicSortSchema()
- locatedError()
- LoneAnonymousOperationRule()
- LoneSchemaDefinitionRule()
- mapSourceToResponseEvent()
- MaxIntrospectionDepthRule()
- NoDeprecatedCustomRule()
- NoFragmentCyclesRule()
- NoSchemaIntrospectionCustomRule()
- NoUndefinedVariablesRule()
- NoUnusedFragmentsRule()
- NoUnusedVariablesRule()
- OverlappingFieldsCanBeMergedRule()
- parse()
- parseConstValue()
- parseSchemaCoordinate()
- parseType()
- parseValue()
- PossibleFragmentSpreadsRule()
- PossibleTypeExtensionsRule()
- print()
- printDirective()
- printIntrospectionSchema()
- printLocation()
- printSchema()
- printSourceLocation()
- printType()
- ProvidedRequiredArgumentsRule()
- replaceVariables()
- resolveASTSchemaCoordinate()
- resolveObjMapThunk()
- resolveReadonlyArrayThunk()
- resolveSchemaCoordinate()
- responsePathAsArray()
- ScalarLeafsRule()
- separateOperations()
- SingleFieldSubscriptionsRule()
- StreamDirectiveOnListFieldRule()
- stripIgnoredCharacters()
- subscribe()
- syntaxError()
- typeFromAST()
- UniqueArgumentDefinitionNamesRule()
- UniqueArgumentNamesRule()
- UniqueDirectiveNamesRule()
- UniqueDirectivesPerLocationRule()
- UniqueEnumValueNamesRule()
- UniqueFieldDefinitionNamesRule()
- UniqueFragmentNamesRule()
- UniqueInputFieldNamesRule()
- UniqueOperationNamesRule()
- UniqueOperationTypesRule()
- UniqueTypeNamesRule()
- UniqueVariableNamesRule()
- validate()
- validateExecutionArgs()
- validateInputLiteral()
- validateInputValue()
- validateSchema()
- validateSubscriptionArgs()
- valueFromAST()
- valueFromASTUntyped()
- ValuesOfCorrectTypeRule()
- valueToLiteral()
- VariablesAreInputTypesRule()
- VariablesInAllowedPositionRule()
- visit()
- visitInParallel()
- visitWithTypeInfo()
Classes
Interfaces
Type Aliases
- ASTKindToNode
- ASTNode
- ASTVisitFn
- ASTVisitor
- ASTVisitorKeyMap
- BreakingChangeType
- ConstValueNode
- DangerousChangeType
- DefinitionNode
- DirectiveLocation
- ExecutableDefinitionNode
- FormattedIncrementalResult
- FormattedLegacyIncrementalResult
- GraphQLAbstractType
- GraphQLCompositeType
- GraphQLDefaultInput
- GraphQLEnumValueConfigMap
- GraphQLExecuteFn
- GraphQLFieldConfigArgumentMap
- GraphQLFieldConfigMap
- GraphQLFieldMap
- GraphQLFieldResolver
- GraphQLInputFieldConfigMap
- GraphQLInputFieldMap
- GraphQLInputType
- GraphQLIsTypeOfFn
- GraphQLLeafType
- GraphQLNamedInputType
- GraphQLNamedOutputType
- GraphQLNamedType
- GraphQLNullableInputType
- GraphQLNullableOutputType
- GraphQLNullableType
- GraphQLOutputType
- GraphQLParseFn
- GraphQLScalarInputLiteralCoercer
- GraphQLScalarInputValueCoercer
- GraphQLScalarLiteralParser
- GraphQLScalarOutputValueCoercer
- GraphQLScalarSerializer
- GraphQLScalarValueParser
- GraphQLSubscribeFn
- GraphQLType
- GraphQLTypeResolver
- GraphQLValidateFn
- GraphQLWrappingType
- IncrementalResult
- IntrospectionInputType
- IntrospectionInputTypeRef
- IntrospectionOutputType
- IntrospectionOutputTypeRef
- IntrospectionType
- IntrospectionTypeRef
- Kind
- LegacyIncrementalResult
- OperationTypeNode
- ResolvedSchemaElement
- RootSelectionSetExecutor
- SafeChangeType
- SchemaChange
- SchemaCoordinateNode
- SelectionNode
- ThunkObjMap
- ThunkReadonlyArray
- TokenKind
- TypeDefinitionNode
- TypeExtensionNode
- TypeKind
- TypeNode
- TypeSystemDefinitionNode
- TypeSystemExtensionNode
- ValidationRule
- ValueNode
Namespaces
Kind
- ARGUMENT
- ARGUMENT
- ARGUMENT_COORDINATE
- ARGUMENT_COORDINATE
- BOOLEAN
- BOOLEAN
- DIRECTIVE
- DIRECTIVE
- DIRECTIVE_ARGUMENT_COORDINATE
- DIRECTIVE_ARGUMENT_COORDINATE
- DIRECTIVE_COORDINATE
- DIRECTIVE_COORDINATE
- DIRECTIVE_DEFINITION
- DIRECTIVE_DEFINITION
- DIRECTIVE_EXTENSION
- DIRECTIVE_EXTENSION
- DOCUMENT
- DOCUMENT
- ENUM
- ENUM
- ENUM_TYPE_DEFINITION
- ENUM_TYPE_EXTENSION
- ENUM_TYPE_EXTENSION
- ENUM_VALUE_DEFINITION
- ENUM_VALUE_DEFINITION
- FIELD
- FIELD
- FIELD_DEFINITION
- FIELD_DEFINITION
- FLOAT
- FLOAT
- FRAGMENT_ARGUMENT
- FRAGMENT_ARGUMENT
- FRAGMENT_DEFINITION
- FRAGMENT_DEFINITION
- FRAGMENT_SPREAD
- FRAGMENT_SPREAD
- INLINE_FRAGMENT
- INLINE_FRAGMENT
- INPUT_OBJECT_TYPE_DEFINITION
- INPUT_OBJECT_TYPE_DEFINITION
- INPUT_OBJECT_TYPE_EXTENSION
- INPUT_OBJECT_TYPE_EXTENSION
- INPUT_VALUE_DEFINITION
- INPUT_VALUE_DEFINITION
- INT
- INT
- INTERFACE_TYPE_DEFINITION
- INTERFACE_TYPE_DEFINITION
- INTERFACE_TYPE_EXTENSION
- INTERFACE_TYPE_EXTENSION
- LIST
- LIST
- LIST_TYPE
- LIST_TYPE
- MEMBER_COORDINATE
- MEMBER_COORDINATE
- NAME
- NAME
- NAMED_TYPE
- NAMED_TYPE
- NON_NULL_TYPE
- NON_NULL_TYPE
- NULL
- NULL
- OBJECT
- OBJECT
- OBJECT_FIELD
- OBJECT_FIELD
- OBJECT_TYPE_DEFINITION
- OBJECT_TYPE_DEFINITION
- OBJECT_TYPE_EXTENSION
- OBJECT_TYPE_EXTENSION
- OPERATION_DEFINITION
- OPERATION_DEFINITION
- OPERATION_TYPE_DEFINITION
- OPERATION_TYPE_DEFINITION
- SCALAR_TYPE_DEFINITION
- SCALAR_TYPE_DEFINITION
- SCALAR_TYPE_EXTENSION
- SCALAR_TYPE_EXTENSION
- SCHEMA_DEFINITION
- SCHEMA_DEFINITION
- SCHEMA_EXTENSION
- SCHEMA_EXTENSION
- SELECTION_SET
- SELECTION_SET
- STRING
- STRING
- TYPE_COORDINATE
- TYPE_COORDINATE
- UNION_TYPE_DEFINITION
- UNION_TYPE_DEFINITION
- UNION_TYPE_EXTENSION
- UNION_TYPE_EXTENSION
- VARIABLE
- VARIABLE
- VARIABLE_DEFINITION
- VARIABLE_DEFINITION
Variables
variable BREAK
const BREAK: {};A value that can be returned from a visitor function to stop traversal.
variable BreakingChangeType
const BreakingChangeType: { readonly TYPE_REMOVED: 'TYPE_REMOVED'; readonly TYPE_CHANGED_KIND: 'TYPE_CHANGED_KIND'; readonly TYPE_REMOVED_FROM_UNION: 'TYPE_REMOVED_FROM_UNION'; readonly VALUE_REMOVED_FROM_ENUM: 'VALUE_REMOVED_FROM_ENUM'; readonly REQUIRED_INPUT_FIELD_ADDED: 'REQUIRED_INPUT_FIELD_ADDED'; readonly IMPLEMENTED_INTERFACE_REMOVED: 'IMPLEMENTED_INTERFACE_REMOVED'; readonly FIELD_REMOVED: 'FIELD_REMOVED'; readonly FIELD_CHANGED_KIND: 'FIELD_CHANGED_KIND'; readonly REQUIRED_ARG_ADDED: 'REQUIRED_ARG_ADDED'; readonly ARG_REMOVED: 'ARG_REMOVED'; readonly ARG_CHANGED_KIND: 'ARG_CHANGED_KIND'; readonly DIRECTIVE_REMOVED: 'DIRECTIVE_REMOVED'; readonly DIRECTIVE_ARG_REMOVED: 'DIRECTIVE_ARG_REMOVED'; readonly REQUIRED_DIRECTIVE_ARG_ADDED: 'REQUIRED_DIRECTIVE_ARG_ADDED'; readonly DIRECTIVE_REPEATABLE_REMOVED: 'DIRECTIVE_REPEATABLE_REMOVED'; readonly DIRECTIVE_LOCATION_REMOVED: 'DIRECTIVE_LOCATION_REMOVED';};Categories of schema changes that may break existing operations.
variable DangerousChangeType
const DangerousChangeType: { readonly VALUE_ADDED_TO_ENUM: 'VALUE_ADDED_TO_ENUM'; readonly TYPE_ADDED_TO_UNION: 'TYPE_ADDED_TO_UNION'; readonly OPTIONAL_INPUT_FIELD_ADDED: 'OPTIONAL_INPUT_FIELD_ADDED'; readonly OPTIONAL_ARG_ADDED: 'OPTIONAL_ARG_ADDED'; readonly IMPLEMENTED_INTERFACE_ADDED: 'IMPLEMENTED_INTERFACE_ADDED'; readonly ARG_DEFAULT_VALUE_CHANGE: 'ARG_DEFAULT_VALUE_CHANGE'; readonly INPUT_FIELD_DEFAULT_VALUE_CHANGE: 'INPUT_FIELD_DEFAULT_VALUE_CHANGE';};Categories of schema changes that may be dangerous for existing operations.
variable DEFAULT_DEPRECATION_REASON
const DEFAULT_DEPRECATION_REASON: string;Constant string used for default reason for a deprecation.
variable defaultFieldResolver
const defaultFieldResolver: GraphQLFieldResolver<unknown, unknown, any, unknown>;If a resolve function is not given, then a default resolve behavior is used which takes the property of the source object of the same name as the field and returns it as the result, or if it's a function, returns the result of calling that function while passing along args and context value.
variable defaultHarness
const defaultHarness: GraphQLHarness;Default harness backed by GraphQL.js parse, validate, execute, and subscribe implementations.
variable defaultTypeResolver
const defaultTypeResolver: GraphQLTypeResolver<unknown, unknown>;If a resolveType function is not given, then a default resolve behavior is used which attempts two strategies:
First, See if the provided value has a
__typenamefield defined, if so, use that value as name of the resolved type.Otherwise, test each possible type for the abstract type by calling isTypeOf for the object being coerced, returning the first type that matches.
variable DirectiveLocation
const DirectiveLocation: { readonly QUERY: 'QUERY'; readonly MUTATION: 'MUTATION'; readonly SUBSCRIPTION: 'SUBSCRIPTION'; readonly FIELD: 'FIELD'; readonly FRAGMENT_DEFINITION: 'FRAGMENT_DEFINITION'; readonly FRAGMENT_SPREAD: 'FRAGMENT_SPREAD'; readonly INLINE_FRAGMENT: 'INLINE_FRAGMENT'; readonly VARIABLE_DEFINITION: 'VARIABLE_DEFINITION'; readonly FRAGMENT_VARIABLE_DEFINITION: 'FRAGMENT_VARIABLE_DEFINITION'; readonly SCHEMA: 'SCHEMA'; readonly SCALAR: 'SCALAR'; readonly OBJECT: 'OBJECT'; readonly FIELD_DEFINITION: 'FIELD_DEFINITION'; readonly ARGUMENT_DEFINITION: 'ARGUMENT_DEFINITION'; readonly INTERFACE: 'INTERFACE'; readonly UNION: 'UNION'; readonly ENUM: 'ENUM'; readonly ENUM_VALUE: 'ENUM_VALUE'; readonly INPUT_OBJECT: 'INPUT_OBJECT'; readonly INPUT_FIELD_DEFINITION: 'INPUT_FIELD_DEFINITION'; readonly DIRECTIVE_DEFINITION: 'DIRECTIVE_DEFINITION';};The set of allowed directive location values.
variable GRAPHQL_MAX_INT
const GRAPHQL_MAX_INT: number;Maximum possible Int value as per GraphQL Spec (32-bit signed integer). n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe up-to 2^53 - 1
variable GRAPHQL_MIN_INT
const GRAPHQL_MIN_INT: number;Minimum possible Int value as per GraphQL Spec (32-bit signed integer). n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe starting at -(2^53 - 1)
variable GraphQLBoolean
const GraphQLBoolean: GraphQLScalarType<boolean, boolean>;The built-in
Booleanscalar type.
variable GraphQLDeferDirective
const GraphQLDeferDirective: GraphQLDirective;Experimental directive used to conditionally defer fragments.
This directive is exported for schemas that explicitly opt in to incremental delivery. It is not included in
specifiedDirectives.
variable GraphQLDeprecatedDirective
const GraphQLDeprecatedDirective: GraphQLDirective;Used to declare element of a GraphQL schema as deprecated.
The
reasonargument is non-null and defaults toDEFAULT_DEPRECATION_REASON.
variable GraphQLFloat
const GraphQLFloat: GraphQLScalarType<number, number>;The built-in
Floatscalar type.
variable GraphQLID
const GraphQLID: GraphQLScalarType<string, string>;The built-in
IDscalar type.
variable GraphQLIncludeDirective
const GraphQLIncludeDirective: GraphQLDirective;Used to conditionally include fields or fragments.
variable GraphQLInt
const GraphQLInt: GraphQLScalarType<number, number>;The built-in
Intscalar type.
variable GraphQLOneOfDirective
const GraphQLOneOfDirective: GraphQLDirective;Used to indicate an Input Object is a OneOf Input Object.
variable GraphQLSkipDirective
const GraphQLSkipDirective: GraphQLDirective;Used to conditionally skip (exclude) fields or fragments.
variable GraphQLSpecifiedByDirective
const GraphQLSpecifiedByDirective: GraphQLDirective;Used to provide a URL for specifying the behavior of custom scalar definitions.
variable GraphQLStreamDirective
const GraphQLStreamDirective: GraphQLDirective;Experimental directive used to conditionally stream list fields.
This directive is exported for schemas that explicitly opt in to incremental delivery. It is not included in
specifiedDirectives.
variable GraphQLString
const GraphQLString: GraphQLScalarType<string, string>;The built-in
Stringscalar type.
variable introspectionTypes
const introspectionTypes: readonly GraphQLNamedType[];All introspection types defined by the GraphQL specification.
variable OperationTypeNode
const OperationTypeNode: { readonly QUERY: 'query'; readonly MUTATION: 'mutation'; readonly SUBSCRIPTION: 'subscription';};The operation types supported by GraphQL executable definitions. Kinds
variable recommendedRules
const recommendedRules: readonly ValidationRule[];Technically these aren't part of the spec but they are strongly encouraged validation rules.
variable SafeChangeType
const SafeChangeType: { readonly DESCRIPTION_CHANGED: 'DESCRIPTION_CHANGED'; readonly TYPE_ADDED: 'TYPE_ADDED'; readonly OPTIONAL_INPUT_FIELD_ADDED: 'OPTIONAL_INPUT_FIELD_ADDED'; readonly OPTIONAL_ARG_ADDED: 'OPTIONAL_ARG_ADDED'; readonly DIRECTIVE_ADDED: 'DIRECTIVE_ADDED'; readonly FIELD_ADDED: 'FIELD_ADDED'; readonly DIRECTIVE_REPEATABLE_ADDED: 'DIRECTIVE_REPEATABLE_ADDED'; readonly DIRECTIVE_LOCATION_ADDED: 'DIRECTIVE_LOCATION_ADDED'; readonly OPTIONAL_DIRECTIVE_ARG_ADDED: 'OPTIONAL_DIRECTIVE_ARG_ADDED'; readonly FIELD_CHANGED_KIND_SAFE: 'FIELD_CHANGED_KIND_SAFE'; readonly ARG_CHANGED_KIND_SAFE: 'ARG_CHANGED_KIND_SAFE'; readonly ARG_DEFAULT_VALUE_ADDED: 'ARG_DEFAULT_VALUE_ADDED'; readonly INPUT_FIELD_DEFAULT_VALUE_ADDED: 'INPUT_FIELD_DEFAULT_VALUE_ADDED';};Categories of schema changes that are considered safe for existing operations.
variable SchemaMetaFieldDef
const SchemaMetaFieldDef: GraphQLField<unknown, unknown, any>;Note that these are GraphQLField and not GraphQLFieldConfig, so the format for args is different.
variable specifiedDirectives
const specifiedDirectives: readonly GraphQLDirective[];Full list of stable directives specified by GraphQL.js.
Experimental
@deferand@streamare exported separately and are not included in this list.
variable specifiedRules
const specifiedRules: readonly ValidationRule[];This set includes all validation rules defined by the GraphQL spec.
The order of the rules in this list has been adjusted to lead to the most clear output when encountering multiple validation errors.
variable specifiedScalarTypes
const specifiedScalarTypes: readonly GraphQLScalarType<unknown, unknown>[];All built-in scalar types defined by the GraphQL specification.
variable TokenKind
const TokenKind: { readonly SOF: '<SOF>'; readonly EOF: '<EOF>'; readonly BANG: '!'; readonly DOLLAR: '$'; readonly AMP: '&'; readonly PAREN_L: '('; readonly PAREN_R: ')'; readonly DOT: '.'; readonly SPREAD: '...'; readonly COLON: ':'; readonly EQUALS: '='; readonly AT: '@'; readonly BRACKET_L: '['; readonly BRACKET_R: ']'; readonly BRACE_L: '{'; readonly PIPE: '|'; readonly BRACE_R: '}'; readonly NAME: 'Name'; readonly INT: 'Int'; readonly FLOAT: 'Float'; readonly STRING: 'String'; readonly BLOCK_STRING: 'BlockString'; readonly COMMENT: 'Comment';};An exported enum describing the different kinds of tokens that the lexer emits.
variable TypeKind
const TypeKind: { readonly SCALAR: 'SCALAR'; readonly OBJECT: 'OBJECT'; readonly INTERFACE: 'INTERFACE'; readonly UNION: 'UNION'; readonly ENUM: 'ENUM'; readonly INPUT_OBJECT: 'INPUT_OBJECT'; readonly LIST: 'LIST'; readonly NON_NULL: 'NON_NULL';};The introspection enum describing the different kinds of GraphQL types. Introspection
variable TypeMetaFieldDef
const TypeMetaFieldDef: GraphQLField<unknown, unknown, any>;The
__typemeta field definition used by introspection.
variable TypeNameMetaFieldDef
const TypeNameMetaFieldDef: GraphQLField<unknown, unknown, any>;The
__typenamemeta field definition used by execution and introspection.
variable version
const version: string;A string containing the version of the GraphQL.js library
variable versionInfo
const versionInfo: Readonly<{ major: number; minor: number; patch: number; preReleaseTag: string | null;}>;An object containing the components of the GraphQL.js version string
Functions
function assertAbstractType
assertAbstractType: (type: unknown) => GraphQLAbstractType;Returns the value as a GraphQL abstract type, or throws if it is not one.
Parameter type
The GraphQL type to inspect.
Returns
The value typed as a GraphQL abstract type.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertAbstractType } from 'graphql/type';const schema = buildSchema(`interface Node {id: ID!}type User implements Node {id: ID!}type Query {node: Node}`);const nodeType = assertAbstractType(schema.getType('Node'));nodeType.toString(); // => 'Node'assertAbstractType(schema.getType('User')); // throws an error
function assertArgument
assertArgument: (arg: unknown) => GraphQLArgument;Returns the value as a GraphQLArgument, or throws if it is not one.
Parameter arg
Value to inspect.
Returns
The value typed as a GraphQLArgument.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertArgument } from 'graphql/type';const schema = buildSchema('type Query { greeting(name: String): String }');const arg = assertArgument(schema.getQueryType().getFields().greeting.args[0]);arg.name; // => 'name'assertArgument(schema.getQueryType()); // throws an error
function assertCompositeType
assertCompositeType: (type: unknown) => GraphQLCompositeType;Returns the value as a GraphQL composite type, or throws if it is not one.
Parameter type
The GraphQL type to inspect.
Returns
The value typed as a GraphQL composite type.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertCompositeType } from 'graphql/type';const schema = buildSchema(`interface Node {id: ID!}type User implements Node {id: ID!}type Query {node: Node}`);const userType = assertCompositeType(schema.getType('User'));userType.toString(); // => 'User'assertCompositeType(schema.getType('String')); // throws an error
function assertDirective
assertDirective: (directive: unknown) => GraphQLDirective;Returns the value as a GraphQLDirective, or throws if it is not a directive.
Parameter directive
Value to inspect.
Returns
The value typed as a GraphQLDirective.
Example 1
import { DirectiveLocation } from 'graphql/language';import { assertDirective, GraphQLDirective, GraphQLString } from 'graphql/type';const upper = new GraphQLDirective({name: 'upper',locations: [DirectiveLocation.FIELD_DEFINITION],});assertDirective(upper); // => upperassertDirective(GraphQLString); // throws an error
function assertEnumType
assertEnumType: (type: unknown) => GraphQLEnumType;Returns the value as a GraphQLEnumType, or throws if it is not one.
Parameter type
The GraphQL type to inspect.
Returns
The value typed as a GraphQLEnumType.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertEnumType } from 'graphql/type';const schema = buildSchema(`enum Episode {NEW_HOPEEMPIRE}type Query {favoriteEpisode: Episode}`);const episodeType = assertEnumType(schema.getType('Episode'));episodeType.getValues().map((value) => value.name); // => ['NEW_HOPE', 'EMPIRE']assertEnumType(schema.getType('Query')); // throws an error
function assertEnumValue
assertEnumValue: (value: unknown) => GraphQLEnumValue;Returns the value as a GraphQLEnumValue, or throws if it is not one.
Parameter value
Value to inspect.
Returns
The value typed as a GraphQLEnumValue.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertEnumType, assertEnumValue } from 'graphql/type';const schema = buildSchema('enum Episode { NEW_HOPE } type Query { episode: Episode }',);const enumValue = assertEnumValue(assertEnumType(schema.getType('Episode')).getValues()[0],);enumValue.name; // => 'NEW_HOPE'assertEnumValue(schema.getType('Episode')); // throws an error
function assertEnumValueName
assertEnumValueName: (name: string) => string;Upholds the spec rules about naming enum values.
Parameter name
The GraphQL name to validate.
Returns
The validated GraphQL name.
Example 1
import { assertEnumValueName } from 'graphql/type';assertEnumValueName('ACTIVE'); // => 'ACTIVE'assertEnumValueName('true'); // throws an error
function assertField
assertField: (field: unknown) => GraphQLField;Returns the value as a GraphQLField, or throws if it is not one.
Parameter field
Value to inspect.
Returns
The value typed as a GraphQLField.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertField } from 'graphql/type';const schema = buildSchema('type Query { greeting: String }');const field = assertField(schema.getQueryType().getFields().greeting);field.name; // => 'greeting'assertField(schema.getQueryType()); // throws an error
function assertInputField
assertInputField: (field: unknown) => GraphQLInputField;Returns the value as a GraphQLInputField, or throws if it is not one.
Parameter field
Value to inspect.
Returns
The value typed as a GraphQLInputField.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertInputField, assertInputObjectType } from 'graphql/type';const schema = buildSchema('input ReviewInput { stars: Int } type Query { ok: Boolean }',);const inputField = assertInputField(assertInputObjectType(schema.getType('ReviewInput')).getFields().stars,);inputField.name; // => 'stars'assertInputField(schema.getQueryType()); // throws an error
function assertInputObjectType
assertInputObjectType: (type: unknown) => GraphQLInputObjectType;Returns the value as a GraphQLInputObjectType, or throws if it is not one.
Parameter type
The GraphQL type to inspect.
Returns
The value typed as a GraphQLInputObjectType.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertInputObjectType } from 'graphql/type';const schema = buildSchema(`input ReviewInput {stars: Int!}type Review {stars: Int!}type Query {review(input: ReviewInput): Review}`);const inputType = assertInputObjectType(schema.getType('ReviewInput'));Object.keys(inputType.getFields()); // => ['stars']assertInputObjectType(schema.getType('Review')); // throws an error
function assertInputType
assertInputType: (type: unknown) => GraphQLInputType;Returns the value as a GraphQL input type, or throws if it is not one.
Parameter type
The GraphQL type to inspect.
Returns
The value typed as a GraphQL input type.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertInputType } from 'graphql/type';const schema = buildSchema(`input ReviewInput {stars: Int!}type Review {stars: Int!}type Query {review(input: ReviewInput): Review}`);const inputType = assertInputType(schema.getType('ReviewInput'));inputType.toString(); // => 'ReviewInput'assertInputType(schema.getType('Review')); // throws an error
function assertInterfaceType
assertInterfaceType: (type: unknown) => GraphQLInterfaceType;Returns the value as a GraphQLInterfaceType, or throws if it is not one.
Parameter type
The GraphQL type to inspect.
Returns
The value typed as a GraphQLInterfaceType.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertInterfaceType } from 'graphql/type';const schema = buildSchema(`interface Node {id: ID!}type User implements Node {id: ID!}type Query {node: Node}`);const nodeType = assertInterfaceType(schema.getType('Node'));nodeType.name; // => 'Node'assertInterfaceType(schema.getType('User')); // throws an error
function assertLeafType
assertLeafType: (type: unknown) => GraphQLLeafType;Returns the value as a GraphQL leaf type, or throws if it is not one.
Parameter type
The GraphQL type to inspect.
Returns
The value typed as a GraphQL leaf type.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertLeafType } from 'graphql/type';const schema = buildSchema(`enum Episode {NEW_HOPE}type Review {stars: Int!}type Query {episode: Episodereview: Review}`);const episodeType = assertLeafType(schema.getType('Episode'));episodeType.toString(); // => 'Episode'assertLeafType(schema.getType('Review')); // throws an error
function assertListType
assertListType: (type: unknown) => GraphQLList<GraphQLType>;Returns the value as a GraphQLList, or throws if it is not one.
Parameter type
The GraphQL type to inspect.
Returns
The value typed as a GraphQLList.
Example 1
import { GraphQLList, GraphQLString, assertListType } from 'graphql/type';const listType = assertListType(new GraphQLList(GraphQLString));listType.ofType; // => GraphQLStringassertListType(GraphQLString); // throws an error
function assertName
assertName: (name: string) => string;Upholds the spec rules about naming.
Parameter name
The GraphQL name to validate.
Returns
The validated GraphQL name.
Example 1
import { assertName } from 'graphql/type';assertName('User'); // => 'User'assertName('123User'); // throws an error
function assertNamedType
assertNamedType: (type: unknown) => GraphQLNamedType;Returns the value as a GraphQL named type, or throws if it is not one.
Parameter type
The GraphQL type to inspect.
Returns
The value typed as a GraphQL named type.
Example 1
import { GraphQLList, GraphQLString, assertNamedType } from 'graphql/type';const namedType = assertNamedType(GraphQLString);namedType.name; // => 'String'assertNamedType(new GraphQLList(GraphQLString)); // throws an error
function assertNonNullType
assertNonNullType: (type: unknown) => GraphQLNonNull<GraphQLNullableType>;Returns the value as a GraphQLNonNull, or throws if it is not one.
Parameter type
The GraphQL type to inspect.
Returns
The value typed as a GraphQLNonNull.
Example 1
import { GraphQLNonNull, GraphQLString, assertNonNullType } from 'graphql/type';const nonNullType = assertNonNullType(new GraphQLNonNull(GraphQLString));nonNullType.ofType; // => GraphQLStringassertNonNullType(GraphQLString); // throws an error
function assertNullableType
assertNullableType: (type: unknown) => GraphQLNullableType;Returns the value as a nullable GraphQL type, or throws if it is not one.
Parameter type
The GraphQL type to inspect.
Returns
The value typed as a nullable GraphQL type.
Example 1
import {GraphQLNonNull,GraphQLString,assertNullableType,} from 'graphql/type';const nullableType = assertNullableType(GraphQLString);nullableType; // => GraphQLStringassertNullableType(new GraphQLNonNull(GraphQLString)); // throws an error
function assertObjectType
assertObjectType: (type: unknown) => GraphQLObjectType;Returns the value as a GraphQLObjectType, or throws if it is not one.
Parameter type
The GraphQL type to inspect.
Returns
The value typed as a GraphQLObjectType.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertObjectType } from 'graphql/type';const schema = buildSchema(`input ReviewInput {stars: Int!}type User {name: String}type Query {user: User}`);const userType = assertObjectType(schema.getType('User'));Object.keys(userType.getFields()); // => ['name']assertObjectType(schema.getType('ReviewInput')); // throws an error
function assertOutputType
assertOutputType: (type: unknown) => GraphQLOutputType;Returns the value as a GraphQL output type, or throws if it is not one.
Parameter type
The GraphQL type to inspect.
Returns
The value typed as a GraphQL output type.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertOutputType } from 'graphql/type';const schema = buildSchema(`input ReviewInput {stars: Int!}type Review {stars: Int!}type Query {review(input: ReviewInput): Review}`);const outputType = assertOutputType(schema.getType('Review'));outputType.toString(); // => 'Review'assertOutputType(schema.getType('ReviewInput')); // throws an error
function assertScalarType
assertScalarType: (type: unknown) => GraphQLScalarType;Returns the value as a GraphQLScalarType, or throws if it is not one.
Parameter type
The GraphQL type to inspect.
Returns
The value typed as a GraphQLScalarType.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertScalarType } from 'graphql/type';const schema = buildSchema(`scalar DateTimetype Query {createdAt: DateTime}`);const dateTimeType = assertScalarType(schema.getType('DateTime'));dateTimeType.name; // => 'DateTime'assertScalarType(schema.getType('Query')); // throws an error
function assertSchema
assertSchema: (schema: unknown) => GraphQLSchema;Returns the value as a GraphQLSchema, or throws if it is not a schema.
Parameter schema
GraphQL schema to use.
Returns
The value typed as a GraphQLSchema.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertSchema, GraphQLString } from 'graphql/type';const schema = buildSchema(`type Query {greeting: String}`);assertSchema(schema); // => schemaassertSchema(GraphQLString); // throws an error
function assertType
assertType: (type: unknown) => GraphQLType;Returns the value as a GraphQL type, or throws if it is not one.
Parameter type
The GraphQL type to inspect.
Returns
The value typed as a GraphQL type.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertType } from 'graphql/type';const schema = buildSchema(`type Query {name: String}`);const queryType = assertType(schema.getType('Query'));queryType.toString(); // => 'Query'assertType('Query'); // throws an error
function assertUnionType
assertUnionType: (type: unknown) => GraphQLUnionType;Returns the value as a GraphQLUnionType, or throws if it is not one.
Parameter type
The GraphQL type to inspect.
Returns
The value typed as a GraphQLUnionType.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertUnionType } from 'graphql/type';const schema = buildSchema(`type Photo {url: String!}type Video {url: String!}union Media = Photo | Videotype Query {media: [Media]}`);const mediaType = assertUnionType(schema.getType('Media'));mediaType.getTypes().map((type) => type.name); // => ['Photo', 'Video']assertUnionType(schema.getType('Photo')); // throws an error
function assertValidSchema
assertValidSchema: (schema: GraphQLSchema) => void;Utility function which asserts a schema is valid by throwing an error if it is invalid.
Parameter schema
GraphQL schema to use.
Example 1
import { assertValidSchema } from 'graphql/type';import { buildSchema } from 'graphql/utilities';const schema = buildSchema(`type Query {name: String}`);assertValidSchema(schema); // does not throw
function assertWrappingType
assertWrappingType: (type: unknown) => GraphQLWrappingType;Returns the value as a GraphQL wrapping type, or throws if it is not one.
Parameter type
The GraphQL type to inspect.
Returns
The value typed as a GraphQL wrapping type.
Example 1
import { GraphQLList, GraphQLString, assertWrappingType } from 'graphql/type';const wrappingType = assertWrappingType(new GraphQLList(GraphQLString));wrappingType.toString(); // => '[String]'assertWrappingType(GraphQLString); // throws an error
function astFromValue
astFromValue: (value: unknown, type: GraphQLInputType) => Maybe<ConstValueNode>;Produces a GraphQL Value AST given a JavaScript object. Function will match JavaScript/JSON values to GraphQL AST schema format by using suggested GraphQLInputType.
A GraphQL type must be provided, which will be used to interpret different JavaScript values.
This deprecated function will be removed in v18. Use
valueToLiteral()instead, and take care to operate on external values.| JSON Value | GraphQL Value | | ------------- | -------------------- | | Object | Input Object | | Array | List | | Boolean | Boolean | | String | String / Enum Value | | Number | Int / Float | | BigInt | Int | | Unknown | Enum Value | | null | NullValue |
Parameter value
Runtime value to convert.
Parameter type
The GraphQL type to inspect.
Returns
A GraphQL value AST for the provided JavaScript value, or null when no literal can represent it.
Example 1
import { print } from 'graphql/language';import {GraphQLInputObjectType,GraphQLInt,GraphQLList,GraphQLNonNull,GraphQLString,} from 'graphql/type';import { astFromValue } from 'graphql/utilities';const ReviewInput = new GraphQLInputObjectType({name: 'ReviewInput',fields: {stars: { type: new GraphQLNonNull(GraphQLInt) },tags: { type: new GraphQLList(GraphQLString) },},});const valueNode = astFromValue({ stars: 5, tags: ['featured', 'verified'] },ReviewInput,);print(valueNode); // => '{ stars: 5, tags: ["featured", "verified"] }'astFromValue(undefined, GraphQLString); // => nullastFromValue(null, new GraphQLNonNull(GraphQLString)); // => nullDeprecated
use
valueToLiteral()instead with care to operate on external values -astFromValue()will be removed in v18
function buildASTSchema
buildASTSchema: ( documentAST: DocumentNode, options?: BuildSchemaOptions) => GraphQLSchema;Builds a GraphQLSchema from a parsed schema definition language document.
If no schema definition is provided, then it will look for types named Query, Mutation and Subscription.
The resulting schema has no resolver functions, so execution will use the default field resolver.
Parameter documentAST
The parsed GraphQL document AST.
Parameter options
Optional configuration for this operation.
Returns
The schema built from the provided SDL document.
Example 1
// Build a schema from a valid parsed SDL document.import { parse } from 'graphql/language';import { buildASTSchema } from 'graphql/utilities';const document = parse('type Query { hello: String }');const schema = buildASTSchema(document);schema.getQueryType().name; // => 'Query'Example 2
// This variant uses validation options when the SDL references unknown types.import { parse } from 'graphql/language';import { buildASTSchema } from 'graphql/utilities';const document = parse('type Query { broken: MissingType }');buildASTSchema(document); // throws an errorbuildASTSchema(document, {assumeValid: true,assumeValidSDL: true,}); // does not throw
function buildClientSchema
buildClientSchema: ( introspection: IntrospectionQuery, options?: GraphQLSchemaValidationOptions) => GraphQLSchema;Build a GraphQLSchema for use by client tools.
Given the result of a client running the introspection query, creates and returns a GraphQLSchema instance which can be then used with all graphql-js tools, but cannot be used to execute a query, as introspection does not represent the "resolver", "parse" or "serialize" functions or any other server-internal mechanisms.
This function expects a complete introspection result. Don't forget to check the "errors" field of a server response before calling this function.
Parameter introspection
Introspection result data to build from.
Parameter options
Optional configuration for this operation.
Returns
The client schema represented by the introspection result.
Example 1
import {buildClientSchema,introspectionFromSchema,buildSchema,} from 'graphql/utilities';const schema = buildSchema('type Query { hello: String }');const clientSchema = buildClientSchema(introspectionFromSchema(schema), {assumeValid: true,});clientSchema.getQueryType().name; // => 'Query'
function buildSchema
buildSchema: ( source: string | Source, options?: BuildSchemaOptions & ParseOptions) => GraphQLSchema;Builds a GraphQLSchema directly from a schema definition language source.
Parameter source
The GraphQL source text or source object.
Parameter options
Optional configuration for this operation.
Returns
The schema built from the provided SDL document.
Example 1
// Build a schema from SDL source using the default options.import { buildSchema } from 'graphql/utilities';const schema = buildSchema('type Query { hello: String }');schema.getQueryType().name; // => 'Query'Example 2
// This variant enables parser options and omits source locations.import { buildSchema } from 'graphql/utilities';const schema = buildSchema('directive @tag on FIELD_DEFINITION\n' +'directive @compose @tag on FIELD_DEFINITION',{experimentalFragmentArguments: true,noLocation: true,},);const directive = schema.getDirective('compose');directive.name; // => 'compose'directive.astNode.loc; // => undefined
function coerceInputLiteral
coerceInputLiteral: ( valueNode: ValueNode, type: GraphQLInputType, variableValues?: Maybe<VariableValues>, fragmentVariableValues?: Maybe<FragmentVariableValues>) => unknown;Produces a coerced "internal" JavaScript value given a GraphQL Value AST.
Returns
undefinedwhen the value could not be validly coerced according to the provided type.Parameter valueNode
GraphQL value AST node to coerce.
Parameter type
GraphQL input type to coerce the literal against.
Parameter variableValues
Operation variable values returned by getVariableValues.
Parameter fragmentVariableValues
Fragment variable values for the current fragment scope.
Returns
Coerced value, or undefined if coercion fails.
Example 1
// Coerce literal input values without variables.import { parseValue } from 'graphql/language';import {GraphQLInputObjectType,GraphQLInt,GraphQLNonNull,GraphQLString,} from 'graphql/type';import { coerceInputLiteral } from 'graphql/utilities';const ReviewInput = new GraphQLInputObjectType({name: 'ReviewInput',fields: {stars: { type: new GraphQLNonNull(GraphQLInt) },comment: { type: GraphQLString },},});coerceInputLiteral(parseValue('{ stars: 5, comment: "Loved it" }'),ReviewInput,); // => { stars: 5, comment: 'Loved it' }coerceInputLiteral(parseValue('{ comment: "Missing" }'), ReviewInput); // => undefinedExample 2
// This variant resolves variable references using VariableValues from getVariableValues().import assert from 'node:assert';import { parse, parseValue } from 'graphql/language';import { GraphQLInt } from 'graphql/type';import { getVariableValues } from 'graphql/execution';import { buildSchema, coerceInputLiteral } from 'graphql/utilities';const schema = buildSchema(`type Query {review(stars: Int): String}`);const document = parse('query ($stars: Int = 5) { review(stars: $stars) }');const operation = document.definitions[0];const result = getVariableValues(schema, operation.variableDefinitions, {stars: '4',});assert('variableValues' in result);coerceInputLiteral(parseValue('$stars'), GraphQLInt, result.variableValues); // => 4
function coerceInputValue
coerceInputValue: (inputValue: unknown, type: GraphQLInputType) => unknown;Coerces a JavaScript value given a GraphQL Input Type.
Returns
undefinedwhen the value could not be validly coerced according to the provided type. UsevalidateInputValuewhen coercion diagnostics are needed.Parameter inputValue
JavaScript value to coerce.
Parameter type
GraphQL input type to coerce the value against.
Returns
Coerced value, or undefined if coercion fails.
Example 1
// Coerce runtime input values, returning undefined when coercion fails.import {GraphQLInputObjectType,GraphQLInt,GraphQLList,GraphQLNonNull,GraphQLString,} from 'graphql/type';import { coerceInputValue } from 'graphql/utilities';const ReviewInput = new GraphQLInputObjectType({name: 'ReviewInput',fields: {stars: { type: new GraphQLNonNull(GraphQLInt) },tags: { type: new GraphQLList(GraphQLString) },},});coerceInputValue({ stars: '5', tags: ['featured'] }, ReviewInput); // => { stars: 5, tags: ['featured'] }coerceInputValue({ stars: 'bad' }, ReviewInput); // => undefined
function concatAST
concatAST: (documents: ReadonlyArray<DocumentNode>) => DocumentNode;Provided a collection of ASTs, presumably each from different files, concatenate the ASTs together into batched AST, useful for validating many GraphQL source files which together represent one conceptual application.
Parameter documents
Document ASTs to concatenate.
Returns
A document AST containing all definitions from the provided documents.
Example 1
import { parse } from 'graphql/language';import { concatAST } from 'graphql/utilities';const document = concatAST([parse('type Query { a: String }'),parse('type User { id: ID }'),]);document.definitions.length; // => 2
function createSourceEventStream
createSourceEventStream: ( validatedExecutionArgs: ValidatedSubscriptionArgs) => PromiseOrValue<AsyncIterable<unknown> | ExecutionResult>;Implements the "CreateSourceEventStream" algorithm described in the GraphQL specification, resolving the subscription source event stream for a previously validated subscription request.
Returns either an AsyncIterable (if successful), an ExecutionResult (error), or a Promise for one of those results. The call will throw immediately if it is not passed validated execution arguments.
If the validated arguments do not result in a compliant subscription, a GraphQL Response (ExecutionResult) with descriptive errors and no data will be returned.
If the source stream could not be created due to faulty subscription resolver logic or a system error, the function will return or resolve to a single ExecutionResult containing
errorsand nodata.If the operation succeeded, the function returns or resolves to the AsyncIterable for the event stream returned by the resolver.
A Source Event Stream represents a sequence of events, each of which triggers a GraphQL execution for that event.
This may be useful when hosting the stateful subscription service in a different process or machine than the stateless GraphQL execution engine, or otherwise separating these two steps. For more on this, see the "Supporting Subscriptions at Scale" information in the GraphQL specification.
Parameter validatedExecutionArgs
Validated subscription execution arguments.
Returns
A source event stream, or an execution result containing errors.
Example 1
import assert from 'node:assert';import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import {createSourceEventStream,validateSubscriptionArgs,} from 'graphql/execution';async function* greetings() {yield { greeting: 'Hello' };}const schema = buildSchema(`type Query {noop: String}type Subscription {greeting: String}`);const validatedArgs = validateSubscriptionArgs({schema,document: parse('subscription { greeting }'),rootValue: { greeting: () => greetings() },});assert('schema' in validatedArgs);const stream = await createSourceEventStream(validatedArgs);Symbol.asyncIterator in stream; // => true
function DeferStreamDirectiveLabelRule
DeferStreamDirectiveLabelRule: (context: ValidationContext) => ASTVisitor;Defer and stream directive labels are unique
A GraphQL document is only valid if defer and stream directives' label argument is static and unique.
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import { validate, DeferStreamDirectiveLabelRule } from 'graphql/validation';const schema = buildSchema(`type Query {friends: [String]}`);const invalidDocument = parse(`{friends @stream(label: "friends")other: friends @stream(label: "friends")}`);const validDocument = parse(`{friends @stream(label: "friends")other: friends @stream(label: "otherFriends")}`);validate(schema, invalidDocument, [DeferStreamDirectiveLabelRule]).length; // => 1validate(schema, validDocument, [DeferStreamDirectiveLabelRule]); // => []
function DeferStreamDirectiveOnRootFieldRule
DeferStreamDirectiveOnRootFieldRule: (context: ValidationContext) => ASTVisitor;Defer and stream directives are used on valid root field
A GraphQL document is only valid if defer directives are not used on root mutation or subscription types.
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import {validate,DeferStreamDirectiveOnRootFieldRule,} from 'graphql/validation';const schema = buildSchema(`type Query {message: String}type Mutation {updateMessage: String}`);const invalidDocument = parse(`mutation { ... @defer { updateMessage } }`);const validDocument = parse(`{ ... @defer { message } }`);validate(schema, invalidDocument, [DeferStreamDirectiveOnRootFieldRule]).length; // => 1validate(schema, validDocument, [DeferStreamDirectiveOnRootFieldRule]); // => []
function DeferStreamDirectiveOnValidOperationsRule
DeferStreamDirectiveOnValidOperationsRule: ( context: ValidationContext) => ASTVisitor;Defer And Stream Directives Are Used On Valid Operations
A GraphQL document is only valid if defer and stream directives are not used on root mutation or subscription types.
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import {validate,DeferStreamDirectiveOnValidOperationsRule,} from 'graphql/validation';const schema = buildSchema(`type Query {message: Message}type Subscription {message: Message}type Message {body: String}`);const invalidDocument = parse(`subscription {message {...MessageBody @defer}}fragment MessageBody on Message {body}`);const validDocument = parse(`subscription {message {...MessageBody @defer(if: false)}}fragment MessageBody on Message {body}`);validate(schema, invalidDocument, [DeferStreamDirectiveOnValidOperationsRule]).length; // => 1validate(schema, validDocument, [DeferStreamDirectiveOnValidOperationsRule]); // => []
function doTypesOverlap
doTypesOverlap: ( schema: GraphQLSchema, typeA: GraphQLCompositeType, typeB: GraphQLCompositeType) => boolean;Provided two composite types, determine if they "overlap". Two composite types overlap when the Sets of possible concrete types for each intersect.
This is often used to determine if a fragment of a given type could possibly be visited in a context of another type.
This function is commutative.
Parameter schema
GraphQL schema to use.
Parameter typeA
The first GraphQL type to compare.
Parameter typeB
The second GraphQL type to compare.
Returns
True when the two composite types can apply to at least one common object type.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertObjectType, assertUnionType } from 'graphql/type';import { doTypesOverlap } from 'graphql/utilities';const schema = buildSchema(`type Photo {url: String!}type Video {url: String!}union Media = Photo | Videounion StillImage = Phototype Query {media: [Media]}`);const Media = assertUnionType(schema.getType('Media'));const StillImage = assertUnionType(schema.getType('StillImage'));const Video = assertObjectType(schema.getType('Video'));doTypesOverlap(schema, Media, StillImage); // => truedoTypesOverlap(schema, StillImage, Video); // => false
function enableDevMode
enableDevMode: () => void;Enables GraphQL.js development mode checks for this module instance.
Production entry points leave development mode disabled by default. Call this before constructing schemas or executing requests when additional development diagnostics should run.
Example 1
import { enableDevMode, isDevModeEnabled } from 'graphql/devMode';isDevModeEnabled(); // => falseenableDevMode();isDevModeEnabled(); // => true
function ExecutableDefinitionsRule
ExecutableDefinitionsRule: (context: ASTValidationContext) => ASTVisitor;Executable definitions
A GraphQL document is only valid for execution if all definitions are either operation or fragment definitions.
See https://spec.graphql.org/draft/#sec-Executable-Definitions
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { ExecutableDefinitionsRule } from 'graphql/validation';const schema = buildSchema(`type Query {name: String}`);const invalidDocument = parse(`type Extra { field: String }`);const invalidErrors = validate(schema, invalidDocument, [ExecutableDefinitionsRule,]);invalidErrors.length; // => 1const validDocument = parse(`{ name }`);const validErrors = validate(schema, validDocument, [ExecutableDefinitionsRule,]);validErrors; // => []
function execute
execute: (args: ExecutionArgs) => PromiseOrValue<ExecutionResult>;Implements the "Executing requests" section of the GraphQL specification.
Returns either a synchronous ExecutionResult (if all encountered resolvers are synchronous), or a Promise of an ExecutionResult that will eventually be resolved and never rejected.
If the schema is invalid, an error will be thrown immediately. GraphQL request errors, including missing operations and variable coercion errors, are returned in an errors-only ExecutionResult.
Field errors are collected into the response instead of rejecting the returned promise. Only the field that produced the error and its descendants are omitted; sibling fields continue to execute. Errors from fields of non-null type may propagate to the nearest nullable parent, which can be the entire response data.
This function does not support incremental delivery (
@deferand@stream). UseexperimentalExecuteIncrementallyto execute operations with incremental delivery enabled.Parameter args
The arguments used to perform the operation.
Returns
A completed execution result, or a promise resolving to one when execution is asynchronous.
Example 1
import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import { execute } from 'graphql/execution';const schema = buildSchema(`type Query {greeting(name: String!): String}`);const result = await execute({schema,document: parse('query ($name: String!) { greeting(name: $name) }'),rootValue: {greeting: ({ name }) => `Hello, ${name}!`,},variableValues: { name: 'Ada' },});result; // => { data: { greeting: 'Hello, Ada!' } }
function executeRootSelectionSet
executeRootSelectionSet: ( validatedExecutionArgs: ValidatedExecutionArgs) => PromiseOrValue<ExecutionResult>;Implements the "Executing operations" section of the spec.
Returns either a synchronous ExecutionResult, or a Promise for an ExecutionResult, described by the "Response" section of the GraphQL specification.
If errors are encountered while executing a GraphQL field, only that field and its descendants will be omitted, and sibling fields will still be executed. These field errors are collected into the returned result instead of being thrown or rejecting the returned promise.
Errors from sub-fields of a NonNull type may propagate to the top level, at which point we still collect the error and null the parent field, which in this case is the entire response.
Parameter validatedExecutionArgs
Validated execution arguments.
Returns
Execution result for the operation root selection set.
Example 1
import assert from 'node:assert';import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import {executeRootSelectionSet,validateExecutionArgs,} from 'graphql/execution';const schema = buildSchema('type Query { greeting: String }');const validatedArgs = validateExecutionArgs({schema,document: parse('{ greeting }'),rootValue: { greeting: 'Hello' },});assert('schema' in validatedArgs);const result = await executeRootSelectionSet(validatedArgs);result; // => { data: { greeting: 'Hello' } }
function executeSubscriptionEvent
executeSubscriptionEvent: ( validatedExecutionArgs: ValidatedSubscriptionArgs) => PromiseOrValue<ExecutionResult>;Executes a subscription operation once for a single source event.
Field errors are collected into the returned result instead of being thrown or rejecting the returned promise.
Parameter validatedExecutionArgs
Validated subscription execution arguments.
Returns
Execution result for the subscription event.
Example 1
import assert from 'node:assert';import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import {executeSubscriptionEvent,validateSubscriptionArgs,} from 'graphql/execution';const schema = buildSchema(`type Query {noop: String}type Subscription {greeting: String}`);const validatedArgs = validateSubscriptionArgs({schema,document: parse('subscription { greeting }'),rootValue: { greeting: 'Hello' },});assert('schema' in validatedArgs);const result = await executeSubscriptionEvent(validatedArgs);result; // => { data: { greeting: 'Hello' } }
function executeSync
executeSync: (args: ExecutionArgs) => ExecutionResult;Also implements the "Executing requests" section of the GraphQL specification. However, it guarantees to complete synchronously (or throw an error) assuming that all field resolvers are also synchronous.
Parameter args
The arguments used to perform the operation.
Returns
Completed execution output for a synchronous operation.
Example 1
import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import { executeSync } from 'graphql/execution';const schema = buildSchema('type Query { greeting: String }');const result = executeSync({schema,document: parse('{ greeting }'),rootValue: { greeting: 'Hello' },});result; // => { data: { greeting: 'Hello' } }
function experimentalExecuteIncrementally
experimentalExecuteIncrementally: ( args: ExecutionArgs) => PromiseOrValue<ExecutionResult | ExperimentalIncrementalExecutionResults>;Implements the "Executing requests" section of the GraphQL specification, including
@deferand@streamas proposed in https://github.com/graphql/graphql-spec/pull/742This function returns either a single ExecutionResult, or an ExperimentalIncrementalExecutionResults object containing an
initialResultand a stream ofsubsequentResults.If the schema is invalid, an error will be thrown immediately. GraphQL request errors, including missing operations and variable coercion errors, are returned in an errors-only ExecutionResult.
Parameter args
Execution arguments for the GraphQL operation.
Returns
A single execution result or incremental execution results.
Example 1
import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import { experimentalExecuteIncrementally } from 'graphql/execution';const schema = buildSchema(`type Query {greeting: String}`);const result = await experimentalExecuteIncrementally({schema,document: parse('{ greeting }'),rootValue: { greeting: 'Hello' },});result; // => { data: { greeting: 'Hello' } }Incremental Execution
function experimentalExecuteRootSelectionSet
experimentalExecuteRootSelectionSet: ( validatedExecutionArgs: ValidatedExecutionArgs) => PromiseOrValue<ExecutionResult | ExperimentalIncrementalExecutionResults>;Executes the operation root selection set with incremental delivery enabled.
Parameter validatedExecutionArgs
Validated execution arguments.
Returns
A single execution result or incremental execution results.
Example 1
import assert from 'node:assert';import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import {experimentalExecuteRootSelectionSet,validateExecutionArgs,} from 'graphql/execution';const schema = buildSchema('type Query { greeting: String }');const validatedArgs = validateExecutionArgs({schema,document: parse('{ greeting }'),rootValue: { greeting: 'Hello' },});assert('schema' in validatedArgs);const result = await experimentalExecuteRootSelectionSet(validatedArgs);result; // => { data: { greeting: 'Hello' } }Incremental Execution
function extendSchema
extendSchema: ( schema: GraphQLSchema, documentAST: DocumentNode, options?: Options) => GraphQLSchema;Produces a new schema given an existing schema and a document which may contain GraphQL type extensions and definitions. The original schema will remain unaltered.
Because a schema represents a graph of references, a schema cannot be extended without effectively making an entire copy. We do not know until it's too late if subgraphs remain unchanged.
This algorithm copies the provided schema, applying extensions while producing the copy. The original schema remains unaltered.
Parameter schema
GraphQL schema to use.
Parameter documentAST
The parsed GraphQL document AST.
Parameter options
Optional configuration for this operation.
Returns
A new schema with the extensions and definitions applied.
Example 1
// Extend a schema with new fields and types.import { parse } from 'graphql/language';import { buildSchema, extendSchema } from 'graphql/utilities';const schema = buildSchema(`type Query {greeting: String}`);const extensionAST = parse(`extend type Query {farewell: String}type Review {body: String}`);const extendedSchema = extendSchema(schema, extensionAST);schema.getType('Review'); // => undefinedextendedSchema.getType('Review')?.name; // => 'Review'Object.keys(extendedSchema.getQueryType().getFields()); // => ['greeting', 'farewell']Example 2
// This variant bypasses validation for an otherwise invalid extension.import { parse } from 'graphql/language';import { buildSchema, extendSchema } from 'graphql/utilities';const schema = buildSchema(`type Query {greeting: String}`);const invalidExtension = parse(`extend type Missing {field: String}`);extendSchema(schema, invalidExtension); // throws an errorextendSchema(schema, invalidExtension, {assumeValid: true,assumeValidSDL: true,}); // does not throw
function FieldsOnCorrectTypeRule
FieldsOnCorrectTypeRule: (context: ValidationContext) => ASTVisitor;Fields on correct type
A GraphQL document is only valid if all fields selected are defined by the parent type, or are an allowed meta field such as __typename.
See https://spec.graphql.org/draft/#sec-Field-Selections
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { FieldsOnCorrectTypeRule } from 'graphql/validation';const schema = buildSchema(`type Query {name: String}`);const invalidDocument = parse(`{ missing }`);const invalidErrors = validate(schema, invalidDocument, [FieldsOnCorrectTypeRule,]);invalidErrors.length; // => 1const validDocument = parse(`{ name }`);const validErrors = validate(schema, validDocument, [FieldsOnCorrectTypeRule]);validErrors; // => []
function findBreakingChanges
findBreakingChanges: ( oldSchema: GraphQLSchema, newSchema: GraphQLSchema) => Array<BreakingChange>;Given two schemas, returns an Array containing descriptions of all the types of breaking changes covered by the other functions down below. This deprecated wrapper will be removed in v18; use
findSchemaChanges()instead and filter for breaking changes.Parameter oldSchema
Schema before the change.
Parameter newSchema
Schema after the change.
Returns
Breaking changes between the two schemas.
Example 1
import { buildSchema, findBreakingChanges } from 'graphql/utilities';const oldSchema = buildSchema(`type Query {greeting: String}`);const newSchema = buildSchema(`type Query {hello: String}`);const changes = findBreakingChanges(oldSchema, newSchema);changes.map((change) => change.type); // => ['FIELD_REMOVED']Deprecated
Please use
findSchemaChangesinstead. Will be removed in v18.
function findDangerousChanges
findDangerousChanges: ( oldSchema: GraphQLSchema, newSchema: GraphQLSchema) => Array<DangerousChange>;Given two schemas, returns an Array containing descriptions of all the types of potentially dangerous changes covered by the other functions down below. This deprecated wrapper will be removed in v18; use
findSchemaChanges()instead and filter for dangerous changes.Parameter oldSchema
Schema before the change.
Parameter newSchema
Schema after the change.
Returns
Dangerous changes between the two schemas.
Example 1
import { buildSchema, findDangerousChanges } from 'graphql/utilities';const oldSchema = buildSchema(`enum Episode {NEW_HOPE}type Query {episode: Episode}`);const newSchema = buildSchema(`enum Episode {NEW_HOPEEMPIRE}type Query {episode: Episode}`);const changes = findDangerousChanges(oldSchema, newSchema);changes.map((change) => change.type); // => ['VALUE_ADDED_TO_ENUM']Deprecated
Please use
findSchemaChangesinstead. Will be removed in v18.
function findSchemaChanges
findSchemaChanges: ( oldSchema: GraphQLSchema, newSchema: GraphQLSchema) => Array<SchemaChange>;Finds all schema changes between two schemas.
Parameter oldSchema
Schema before the change.
Parameter newSchema
Schema after the change.
Returns
Safe, dangerous, and breaking changes between the two schemas.
Example 1
import { buildSchema, findSchemaChanges } from 'graphql/utilities';const oldSchema = buildSchema(`type Query {greeting: String}`);const newSchema = buildSchema(`type Query {greeting(name: String): Stringfarewell: String}`);const changes = findSchemaChanges(oldSchema, newSchema);changes.map((change) => change.type); // => ['OPTIONAL_ARG_ADDED', 'FIELD_ADDED']
function FragmentsOnCompositeTypesRule
FragmentsOnCompositeTypesRule: (context: ValidationContext) => ASTVisitor;Fragments on composite type
Fragments use a type condition to determine if they apply, since fragments can only be spread into a composite type (object, interface, or union), the type condition must also be a composite type.
See https://spec.graphql.org/draft/#sec-Fragments-On-Composite-Types
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { FragmentsOnCompositeTypesRule } from 'graphql/validation';const schema = buildSchema(`type Query {name: String}`);const invalidDocument = parse(`fragment Bad on String { length }`);const invalidErrors = validate(schema, invalidDocument, [FragmentsOnCompositeTypesRule,]);invalidErrors.length; // => 1const validDocument = parse(`fragment Good on Query { name }`);const validErrors = validate(schema, validDocument, [FragmentsOnCompositeTypesRule,]);validErrors; // => []
function getArgumentValues
getArgumentValues: ( def: GraphQLField<unknown, unknown> | GraphQLDirective, node: FieldNode | DirectiveNode, variableValues?: Maybe<VariableValues>, fragmentVariableValues?: Maybe<FragmentVariableValues>, hideSuggestions?: Maybe<boolean>) => ObjMap<unknown>;Prepares an object map of argument values given a list of argument definitions and list of argument AST nodes.
Note: Returned value uses a null prototype to avoid collisions with JavaScript's own property names.
Parameter def
Field or directive definition that declares the arguments.
Parameter node
Field or directive AST node supplying argument literals.
Parameter variableValues
Operation variable values returned by getVariableValues.
Parameter fragmentVariableValues
Fragment variable values for the current fragment scope.
Parameter hideSuggestions
Whether suggestion text should be omitted from errors.
Returns
A map of coerced argument values.
Example 1
// Read literal argument values and defaults.import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import { getArgumentValues } from 'graphql/execution';const schema = buildSchema(`type Query {reviews(stars: Int!, limit: Int = 10): [String]}`);const fieldDef = schema.getQueryType().getFields().reviews;const document = parse('{ reviews(stars: 5) }');const fieldNode = document.definitions[0].selectionSet.selections[0];getArgumentValues(fieldDef, fieldNode); // => { stars: 5, limit: 10 }Example 2
// This variant resolves argument values from operation variables.import assert from 'node:assert';import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import { getArgumentValues, getVariableValues } from 'graphql/execution';const schema = buildSchema(`type Query {reviews(stars: Int!): [String]}`);const fieldDef = schema.getQueryType().getFields().reviews;const document = parse('query ($stars: Int!) { reviews(stars: $stars) }');const operation = document.definitions[0];const fieldNode = document.definitions[0].selectionSet.selections[0];const variables = getVariableValues(schema, operation.variableDefinitions, {stars: '5',});assert('variableValues' in variables);getArgumentValues(fieldDef, fieldNode, variables.variableValues); // => { stars: 5 }getArgumentValues(fieldDef, fieldNode); // throws an error
function getDirectiveValues
getDirectiveValues: ( directiveDef: GraphQLDirective, node: { readonly directives?: ReadonlyArray<DirectiveNode> | undefined }, variableValues?: Maybe<VariableValues>, fragmentVariableValues?: Maybe<FragmentVariableValues>, hideSuggestions?: Maybe<boolean>) => undefined | ObjMap<unknown>;Prepares an object map of argument values given a directive definition and a AST node which may contain directives. Optionally also accepts a map of variable values.
If the directive does not exist on the node, returns undefined.
Note: Returned value uses a null prototype to avoid collisions with JavaScript's own property names.
Parameter directiveDef
Directive definition to read argument definitions from.
Parameter node
AST node that may contain directives.
Parameter
node.directives - The directives on the AST node.
Parameter variableValues
Operation variable values returned by getVariableValues.
Parameter fragmentVariableValues
Fragment variable values for the current fragment scope.
Parameter hideSuggestions
Whether suggestion text should be omitted from errors.
Returns
A map of coerced directive argument values, or undefined when absent.
Example 1
// Read literal directive arguments from a node.import { parse } from 'graphql/language';import { GraphQLSkipDirective } from 'graphql/type';import { getDirectiveValues } from 'graphql/execution';const document = parse('{ name @skip(if: true) }');const fieldNode = document.definitions[0].selectionSet.selections[0];getDirectiveValues(GraphQLSkipDirective, fieldNode); // => { if: true }Example 2
// This variant resolves directive arguments from variables and handles absent directives.import assert from 'node:assert';import { parse } from 'graphql/language';import { GraphQLIncludeDirective } from 'graphql/type';import { buildSchema } from 'graphql/utilities';import { getDirectiveValues, getVariableValues } from 'graphql/execution';const schema = buildSchema('type Query { name: String }');const document = parse('query ($includeName: Boolean!) { name @include(if: $includeName) }',);const operation = document.definitions[0];const fieldNode = document.definitions[0].selectionSet.selections[0];const variables = getVariableValues(schema, operation.variableDefinitions, {includeName: false,});assert('variableValues' in variables);getDirectiveValues(GraphQLIncludeDirective,fieldNode,variables.variableValues,); // => { if: false }getDirectiveValues(GraphQLIncludeDirective, { directives: [] }); // => undefined
function getEnterLeaveForKind
getEnterLeaveForKind: ( visitor: ASTVisitor, kind: Kind) => EnterLeaveVisitor<ASTNode>;Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.
Parameter visitor
The visitor object to inspect.
Parameter kind
The AST node kind to resolve handlers for.
Returns
The enter and leave handlers that apply for the given node kind.
Example 1
import { Kind, getEnterLeaveForKind } from 'graphql/language';const handlers = getEnterLeaveForKind({ Field: () => {} }, Kind.FIELD);typeof handlers.enter; // => 'function'handlers.leave; // => undefined
function getIntrospectionQuery
getIntrospectionQuery: (options?: IntrospectionOptions) => string;Produce the GraphQL query recommended for a full schema introspection. Accepts optional IntrospectionOptions.
Parameter options
Optional configuration for this operation.
Returns
The resolved introspection query.
Example 1
// Generate the default introspection query.import { getIntrospectionQuery } from 'graphql/utilities';const query = getIntrospectionQuery();query; // matches /__schema/query; // matches /description/query; // does not match /specifiedByURL/Example 2
// This variant customizes optional introspection fields and nesting depth.import { getIntrospectionQuery } from 'graphql/utilities';const query = getIntrospectionQuery({descriptions: false,specifiedByUrl: true,directiveIsRepeatable: true,schemaDescription: true,inputValueDeprecation: true,experimentalDirectiveDeprecation: true,oneOf: true,typeDepth: 3,});query; // does not match /description/query; // matches /specifiedByURL/query; // matches /isRepeatable/query; // matches /includeDeprecated: true/query; // matches /isOneOf/(query.match(/ofType/g)?.length ?? 0) > 0; // => true
function getLocation
getLocation: (source: Source, position: number) => SourceLocation;Takes a Source and a UTF-8 character offset, and returns the corresponding line and column as a SourceLocation.
Parameter source
The source document that contains the position.
Parameter position
The UTF-8 character offset in the source body.
Returns
The 1-indexed line and column for the given source position.
Example 1
import { Source, getLocation } from 'graphql/language';const source = new Source('type Query { hello: String }');const location = getLocation(source, 13);location; // => { line: 1, column: 14 }
function getNamedType
getNamedType: { (type: undefined | null): void; (type: GraphQLInputType): GraphQLNamedInputType; (type: GraphQLOutputType): GraphQLNamedOutputType; (type: GraphQLType): GraphQLNamedType; (type: GraphQLType): GraphQLNamedType;};Returns the named type.
Parameter type
The GraphQL type to inspect.
Returns
The named type after unwrapping all list and non-null wrappers.
Example 1
import { getNamedType } from 'graphql/type';getNamedType(null); // => undefinedgetNamedType(undefined); // => undefinedReturns the named input type after unwrapping all list and non-null wrappers.
Parameter type
The GraphQL input type to inspect.
Returns
The named input type after unwrapping all wrappers.
Example 1
import { buildSchema } from 'graphql/utilities';import { getNamedType } from 'graphql/type';const schema = buildSchema(`input ReviewInput {stars: Int!}type Query {review(input: [ReviewInput!]!): Boolean}`);const inputArg = schema.getQueryType()?.getFields().review.args[0];getNamedType(inputArg?.type).toString(); // => 'ReviewInput'Returns the named output type after unwrapping all list and non-null wrappers.
Parameter type
The GraphQL output type to inspect.
Returns
The named output type after unwrapping all wrappers.
Example 1
import { buildSchema } from 'graphql/utilities';import { getNamedType } from 'graphql/type';const schema = buildSchema(`type User {name: String}type Query {users: [User!]!}`);const usersField = schema.getQueryType()?.getFields().users;getNamedType(usersField?.type).toString(); // => 'User'Returns the named type after unwrapping all list and non-null wrappers.
Parameter type
The GraphQL type to inspect.
Returns
The named type after unwrapping all wrappers.
Example 1
import {GraphQLList,GraphQLNonNull,GraphQLString,getNamedType,} from 'graphql/type';const nestedType = new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(GraphQLString)),);getNamedType(nestedType); // => GraphQLStringReturns the named type after unwrapping all list and non-null wrappers.
Parameter type
The GraphQL type to inspect.
Returns
The named type after unwrapping all wrappers, or undefined for nullish input.
Example 1
import { GraphQLList, GraphQLString, getNamedType } from 'graphql/type';getNamedType(new GraphQLList(GraphQLString)); // => GraphQLStringgetNamedType(undefined); // => undefined
function getNullableType
getNullableType: { (type: undefined | null): void; <T extends GraphQLNullableType>(type: T | GraphQLNonNull<T>): T; (type: GraphQLType): GraphQLNullableType;};Returns the nullable type.
Parameter type
The GraphQL type to inspect.
Returns
The nullable type after removing one non-null wrapper, if present.
Example 1
import { getNullableType } from 'graphql/type';getNullableType(null); // => undefinedgetNullableType(undefined); // => undefinedReturns the nullable type after removing one non-null wrapper.
Parameter type
A nullable type or non-null wrapper.
Returns
The nullable type after removing one non-null wrapper, if present.
Example 1
import {GraphQLList,GraphQLNonNull,GraphQLString,getNullableType,} from 'graphql/type';const requiredString = new GraphQLNonNull(GraphQLString);const stringList = new GraphQLList(GraphQLString);getNullableType(requiredString); // => GraphQLStringgetNullableType(stringList); // => stringListReturns the nullable type after removing one non-null wrapper.
Parameter type
The GraphQL type to inspect.
Returns
The nullable type after removing one non-null wrapper, if present.
Example 1
import {GraphQLList,GraphQLNonNull,GraphQLString,getNullableType,} from 'graphql/type';const requiredStringList = new GraphQLNonNull(new GraphQLList(GraphQLString));getNullableType(requiredStringList).toString(); // => '[String]'getNullableType(GraphQLString); // => GraphQLString
function getOperationAST
getOperationAST: ( documentAST: DocumentNode, operationName?: Maybe<string>) => Maybe<OperationDefinitionNode>;Returns an operation AST given a document AST and optionally an operation name. If a name is not provided, an operation is only returned if only one is provided in the document.
Parameter documentAST
The parsed GraphQL document AST.
Parameter operationName
The optional operation name to select.
Returns
The resolved operation ast.
Example 1
import { parse } from 'graphql/language';import { getOperationAST } from 'graphql/utilities';const document = parse('query GetName { name }');const operation = getOperationAST(document, 'GetName');operation.name.value; // => 'GetName'getOperationAST(document, 'Missing'); // => undefined
function getVariableValues
getVariableValues: ( schema: GraphQLSchema, varDefNodes: ReadonlyArray<VariableDefinitionNode>, inputs: { readonly [variable: string]: unknown }, options?: { maxErrors?: number; hideSuggestions?: boolean }) => VariableValuesOrErrors;Prepares an object map of variableValues of the correct type based on the provided variable definitions and arbitrary input. If the input cannot be parsed to match the variable definitions, GraphQLError values are returned.
Note: Returned maps use null prototypes to avoid collisions with Object prototype properties.
Parameter schema
GraphQL schema to use.
Parameter varDefNodes
The variable definition AST nodes to coerce.
Parameter inputs
The runtime variable values keyed by variable name.
Parameter options
Optional configuration for this operation.
Parameter
[options.maxErrors] - Maximum number of coercion errors to report.
Parameter
[options.hideSuggestions] - Whether suggestion text should be omitted from errors.
Returns
Coerced variable values with source metadata, or request errors.
Example 1
// Coerce provided variables and apply operation defaults.import assert from 'node:assert';import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import { getVariableValues } from 'graphql/execution';const schema = buildSchema(`type Query {reviews(stars: Int!, limit: Int = 10): [String]}`);const document = parse(`query ($stars: Int!, $limit: Int = 10) {reviews(stars: $stars, limit: $limit)}`);const operation = document.definitions[0];const result = getVariableValues(schema, operation.variableDefinitions, {stars: '5',});assert('variableValues' in result);result.variableValues.coerced; // => { stars: 5, limit: 10 }Example 2
// This variant uses maxErrors to cap reported coercion errors.import assert from 'node:assert';import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import { getVariableValues } from 'graphql/execution';const schema = buildSchema(`input ReviewInput {stars: Int!}type Query {review(input: ReviewInput!): String}`);const document = parse(`query ($first: ReviewInput!, $second: ReviewInput!) {first: review(input: $first)second: review(input: $second)}`);const operation = document.definitions[0];const result = getVariableValues(schema,operation.variableDefinitions,{ first: { stars: 'bad' }, second: { stars: 'also bad' } },{ maxErrors: 1 },);assert('errors' in result);result.errors.length; // => 2result.errors[1].message; // matches /error limit reached/
function graphql
graphql: (args: GraphQLArgs) => Promise<ExecutionResult>;Parses, validates, and executes a GraphQL document against a schema.
This is the primary entry point for fulfilling GraphQL operations. Use this when you want a single-call request lifecycle that returns a promise in all cases.
More sophisticated GraphQL servers, such as those which persist queries, may wish to separate the validation and execution phases to a static-time tooling step and a server runtime step.
Parameter args
Request execution arguments, including schema and source.
Returns
A promise that resolves to an execution result or validation errors.
Example 1
// Execute a complete asynchronous request with variables.import { graphql, buildSchema } from 'graphql';const schema = buildSchema(`type Query {greeting(name: String!): String}`);const result = await graphql({schema,source: 'query SayHello($name: String!) { greeting(name: $name) }',rootValue: {greeting: ({ name }) => `Hello, ${name}!`,},variableValues: { name: 'Ada' },operationName: 'SayHello',});result; // => { data: { greeting: 'Hello, Ada!' } }Example 2
// This variant supplies context plus custom field and type resolvers.import { graphql, buildSchema } from 'graphql';const schema = buildSchema(`interface Named {name: String!}type User implements Named {name: String!}type Query {viewer: Named}`);const result = await graphql({schema,source: '{ viewer { __typename name } }',rootValue: { viewer: { kind: 'user', name: 'Ada' } },contextValue: { locale: 'en' },fieldResolver: (source, _args, context, info) => {context.locale; // => 'en'return source[info.fieldName];},typeResolver: (value) => {return value.kind === 'user' ? 'User' : undefined;},});result; // => { data: { viewer: { __typename: 'User', name: 'Ada' } } }Example 3
// This variant customizes the request pipeline with a harness.import { buildSchema, defaultHarness, graphql } from 'graphql';const schema = buildSchema(`type Query {greeting: String}`);const stages = [];const abortController = new AbortController();const harness = {parse: (...args) => {stages.push('parse');return defaultHarness.parse(...args);},validate: (...args) => {stages.push('validate');return defaultHarness.validate(...args);},execute: (...args) => {stages.push('execute');return defaultHarness.execute(...args);},subscribe: (...args) => {stages.push('subscribe');return defaultHarness.subscribe(...args);},};const result = await graphql({schema,source: '{ greeting }',rootValue: { greeting: 'Hello' },rules: [],maxErrors: 25,hideSuggestions: true,noLocation: true,abortSignal: abortController.signal,harness,});result; // => { data: { greeting: 'Hello' } }stages; // => ['parse', 'validate', 'execute']Request Pipeline
function graphqlSync
graphqlSync: (args: GraphQLArgs) => ExecutionResult;Parses, validates, and executes a GraphQL document synchronously.
This function guarantees that execution completes synchronously, or throws an error, assuming that all field resolvers are also synchronous. It throws when any resolver returns a promise.
Parameter args
Request execution arguments, including schema and source.
Returns
Completed execution output, or request errors if parsing or validation fails.
Example 1
// Execute a complete synchronous request with variables.import { graphqlSync, buildSchema } from 'graphql';const schema = buildSchema(`type Query {greeting(name: String!): String}`);const result = graphqlSync({schema,source: 'query SayHello($name: String!) { greeting(name: $name) }',rootValue: {greeting: ({ name }) => `Hello, ${name}!`,},variableValues: { name: 'Ada' },operationName: 'SayHello',});result; // => { data: { greeting: 'Hello, Ada!' } }Example 2
// This variant uses a synchronous custom field resolver and context.import { graphqlSync, buildSchema } from 'graphql';const schema = buildSchema(`type Query {greeting: String}`);const result = graphqlSync({schema,source: '{ greeting }',fieldResolver: (_source, _args, contextValue) => {return contextValue.defaultGreeting;},contextValue: { defaultGreeting: 'Hello' },});result; // => { data: { greeting: 'Hello' } }Request Pipeline
function introspectionFromSchema
introspectionFromSchema: ( schema: GraphQLSchema, options?: IntrospectionOptions) => IntrospectionQuery;Build an IntrospectionQuery from a GraphQLSchema
IntrospectionQuery is useful for utilities that care about type and field relationships, but do not need to traverse through those relationships.
This is the inverse of buildClientSchema. The primary use case is outside of the server context, for instance when doing schema comparisons.
Parameter schema
GraphQL schema to use.
Parameter options
Optional configuration for this operation.
Returns
Introspection result data for the schema.
Example 1
// Include schema metadata using the default introspection options.import { buildSchema, introspectionFromSchema } from 'graphql/utilities';const schema = buildSchema(`scalar Url @specifiedBy(url: "https://url.spec.whatwg.org/")type Query {homepage: Url}`);const introspection = introspectionFromSchema(schema);const urlType = introspection.__schema.types.find((type) => type.name === 'Url',);urlType.specifiedByURL; // => 'https://url.spec.whatwg.org/'Example 2
// This variant disables optional introspection metadata.import { buildSchema, introspectionFromSchema } from 'graphql/utilities';const schema = buildSchema(`scalar Url @specifiedBy(url: "https://url.spec.whatwg.org/")type Query {homepage: Url}`);const introspection = introspectionFromSchema(schema, {descriptions: false,specifiedByUrl: false,directiveIsRepeatable: false,schemaDescription: false,inputValueDeprecation: false,experimentalDirectiveDeprecation: false,oneOf: false,});const urlType = introspection.__schema.types.find((type) => type.name === 'Url',);const deprecatedDirective = introspection.__schema.directives.find((directive) => directive.name === 'deprecated',);urlType.specifiedByURL; // => undefinedurlType.description; // => undefinedintrospection.__schema.description; // => undefineddeprecatedDirective.isRepeatable; // => undefined
function isAbstractType
isAbstractType: (type: unknown) => type is GraphQLAbstractType;Returns true when the value is a GraphQL interface or union type.
Parameter type
The GraphQL type to inspect.
Returns
True when the value is a GraphQL interface or union type.
Example 1
import { buildSchema } from 'graphql/utilities';import { isAbstractType } from 'graphql/type';const schema = buildSchema(`interface Node {id: ID!}type User implements Node {id: ID!}union SearchResult = Usertype Query {node: Nodesearch: [SearchResult]}`);isAbstractType(schema.getType('Node')); // => trueisAbstractType(schema.getType('SearchResult')); // => trueisAbstractType(schema.getType('User')); // => false
function isArgument
isArgument: (arg: unknown) => arg is GraphQLArgument;Returns true when the value is a resolved GraphQL argument definition.
Parameter arg
Value to inspect.
Returns
True when the value is a GraphQLArgument.
Example 1
import { buildSchema } from 'graphql/utilities';import { isArgument } from 'graphql/type';const schema = buildSchema('type Query { greeting(name: String): String }');const arg = schema.getQueryType().getFields().greeting.args[0];isArgument(arg); // => trueisArgument(schema.getQueryType()); // => false
function isCompositeType
isCompositeType: (type: unknown) => type is GraphQLCompositeType;Returns true when the value is a GraphQL object, interface, or union type.
Parameter type
The GraphQL type to inspect.
Returns
True when the value is a GraphQL object, interface, or union type.
Example 1
import { buildSchema } from 'graphql/utilities';import { isCompositeType } from 'graphql/type';const schema = buildSchema(`interface Node {id: ID!}type User implements Node {id: ID!}union SearchResult = Usertype Query {node: Nodesearch: [SearchResult]}`);isCompositeType(schema.getType('User')); // => trueisCompositeType(schema.getType('Node')); // => trueisCompositeType(schema.getType('SearchResult')); // => trueisCompositeType(schema.getType('String')); // => false
function isConstValueNode
isConstValueNode: (node: ASTNode) => node is ConstValueNode;Returns true when the AST node is a constant value node.
Parameter node
The AST node to test.
Returns
True when the AST node is a constant value node.
Example 1
import {parseConstValue,parseValue,isConstValueNode,} from 'graphql/language';const value = parseConstValue('[42]');const variable = parseValue('$id');isConstValueNode(value); // => trueisConstValueNode(variable); // => false
function isDefinitionNode
isDefinitionNode: (node: ASTNode) => node is DefinitionNode;Returns true when the AST node is a definition node.
Parameter node
The AST node to test.
Returns
True when the AST node is a definition node.
Example 1
import { parse, isDefinitionNode } from 'graphql/language';const document = parse('{ hello }');isDefinitionNode(document.definitions[0]); // => trueisDefinitionNode(document); // => false
function isDevModeEnabled
isDevModeEnabled: () => boolean;Returns whether GraphQL.js development mode has been enabled for this module instance.
Returns
True when development mode is enabled.
Example 1
import { enableDevMode, isDevModeEnabled } from 'graphql/devMode';enableDevMode();isDevModeEnabled(); // => true
function isDirective
isDirective: (directive: unknown) => directive is GraphQLDirective;Test if the given value is a GraphQL directive.
Parameter directive
Value to inspect.
Returns
True when the value is a GraphQLDirective.
Example 1
import { DirectiveLocation } from 'graphql/language';import { GraphQLDirective, GraphQLString, isDirective } from 'graphql/type';const upper = new GraphQLDirective({name: 'upper',locations: [DirectiveLocation.FIELD_DEFINITION],});isDirective(upper); // => trueisDirective(GraphQLString); // => false
function isEnumType
isEnumType: (type: unknown) => type is GraphQLEnumType;Returns true when the value is a GraphQLEnumType.
Parameter type
The GraphQL type to inspect.
Returns
True when the value is a GraphQLEnumType.
Example 1
import { buildSchema } from 'graphql/utilities';import { isEnumType } from 'graphql/type';const schema = buildSchema(`enum Episode {NEW_HOPEEMPIRE}type Query {favoriteEpisode: Episode}`);isEnumType(schema.getType('Episode')); // => trueisEnumType(schema.getType('Query')); // => false
function isEnumValue
isEnumValue: (value: unknown) => value is GraphQLEnumValue;Returns true when the value is a resolved GraphQL enum value definition.
Parameter value
Value to inspect.
Returns
True when the value is a GraphQLEnumValue.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertEnumType, isEnumValue } from 'graphql/type';const schema = buildSchema('enum Episode { NEW_HOPE } type Query { episode: Episode }',);const enumValue = assertEnumType(schema.getType('Episode')).getValues()[0];isEnumValue(enumValue); // => trueisEnumValue(schema.getType('Episode')); // => false
function isEqualType
isEqualType: (typeA: GraphQLType, typeB: GraphQLType) => boolean;Provided two types, return true if the types are equal (invariant).
Parameter typeA
The first GraphQL type to compare.
Parameter typeB
The second GraphQL type to compare.
Returns
True when both types are equal.
Example 1
import { GraphQLList, GraphQLNonNull, GraphQLString } from 'graphql/type';import { isEqualType } from 'graphql/utilities';isEqualType(GraphQLString, GraphQLString); // => trueisEqualType(new GraphQLList(GraphQLString), new GraphQLList(GraphQLString)); // => trueisEqualType(new GraphQLNonNull(GraphQLString), GraphQLString); // => false
function isExecutableDefinitionNode
isExecutableDefinitionNode: (node: ASTNode) => node is ExecutableDefinitionNode;Returns true when the AST node is an executable definition node.
Parameter node
The AST node to test.
Returns
True when the AST node is an executable definition node.
Example 1
import { parse, isExecutableDefinitionNode } from 'graphql/language';const query = parse('{ hello }');const schema = parse('type Query { hello: String }');isExecutableDefinitionNode(query.definitions[0]); // => trueisExecutableDefinitionNode(schema.definitions[0]); // => false
function isField
isField: (field: unknown) => field is GraphQLField<any, any, any>;Returns true when the value is a resolved GraphQL field definition.
Parameter field
Value to inspect.
Returns
True when the value is a GraphQLField.
Example 1
import { buildSchema } from 'graphql/utilities';import { isField } from 'graphql/type';const schema = buildSchema('type Query { greeting: String }');const field = schema.getQueryType().getFields().greeting;isField(field); // => trueisField(schema.getQueryType()); // => false
function isInputField
isInputField: (field: unknown) => field is GraphQLInputField;Returns true when the value is a resolved GraphQL input field definition.
Parameter field
Value to inspect.
Returns
True when the value is a GraphQLInputField.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertInputObjectType, isInputField } from 'graphql/type';const schema = buildSchema('input ReviewInput { stars: Int } type Query { ok: Boolean }',);const inputField = assertInputObjectType(schema.getType('ReviewInput'),).getFields().stars;isInputField(inputField); // => trueisInputField(schema.getQueryType()); // => false
function isInputObjectType
isInputObjectType: (type: unknown) => type is GraphQLInputObjectType;Returns true when the value is a GraphQLInputObjectType.
Parameter type
The GraphQL type to inspect.
Returns
True when the value is a GraphQLInputObjectType.
Example 1
import { buildSchema } from 'graphql/utilities';import { isInputObjectType } from 'graphql/type';const schema = buildSchema(`input ReviewInput {stars: Int!}type Review {stars: Int!}type Query {review(input: ReviewInput): Review}`);isInputObjectType(schema.getType('ReviewInput')); // => trueisInputObjectType(schema.getType('Review')); // => false
function isInputType
isInputType: (type: unknown) => type is GraphQLInputType;Returns true when the value can be used as a GraphQL input type.
Parameter type
The GraphQL type to inspect.
Returns
True when the value can be used as a GraphQL input type.
Example 1
import { buildSchema } from 'graphql/utilities';import { isInputType } from 'graphql/type';const schema = buildSchema(`input ReviewInput {stars: Int!}type Review {stars: Int!}type Query {review(input: ReviewInput): Review}`);isInputType(schema.getType('ReviewInput')); // => trueisInputType(schema.getType('Review')); // => false
function isInterfaceType
isInterfaceType: (type: unknown) => type is GraphQLInterfaceType<any, any>;Returns true when the value is a GraphQLInterfaceType.
Parameter type
The GraphQL type to inspect.
Returns
True when the value is a GraphQLInterfaceType.
Example 1
import { buildSchema } from 'graphql/utilities';import { isInterfaceType } from 'graphql/type';const schema = buildSchema(`interface Node {id: ID!}type User implements Node {id: ID!}type Query {node: Node}`);isInterfaceType(schema.getType('Node')); // => trueisInterfaceType(schema.getType('User')); // => false
function isIntrospectionType
isIntrospectionType: (type: GraphQLNamedType) => boolean;Returns true when the type is one of the built-in introspection types.
Parameter type
The GraphQL type to inspect.
Returns
True when the type is one of the built-in introspection types.
Example 1
import { GraphQLString, isIntrospectionType, __Type } from 'graphql/type';isIntrospectionType(__Type); // => trueisIntrospectionType(GraphQLString); // => false
function isLeafType
isLeafType: (type: unknown) => type is GraphQLLeafType;Returns true when the value is a GraphQL scalar or enum type.
Parameter type
The GraphQL type to inspect.
Returns
True when the value is a GraphQL scalar or enum type.
Example 1
import { buildSchema } from 'graphql/utilities';import { isLeafType } from 'graphql/type';const schema = buildSchema(`enum Episode {NEW_HOPE}type Review {stars: Int!}type Query {episode: Episodereview: Review}`);isLeafType(schema.getType('Episode')); // => trueisLeafType(schema.getType('String')); // => trueisLeafType(schema.getType('Review')); // => false
function isListType
isListType: { (type: GraphQLInputType): type is GraphQLList<GraphQLInputType>; (type: GraphQLOutputType): type is GraphQLList<GraphQLOutputType>; (type: unknown): type is GraphQLList<GraphQLType>;};Returns true when the value is a GraphQLList.
Parameter type
The GraphQL type to inspect.
Returns
True when the value is a GraphQLList.
Example 1
import { buildSchema } from 'graphql/utilities';import { GraphQLList, GraphQLString, isListType } from 'graphql/type';const schema = buildSchema(`type Query {tags: [String!]!}`);const tagsField = schema.getQueryType()?.getFields().tags;isListType(new GraphQLList(GraphQLString)); // => trueisListType(GraphQLString); // => falseisListType(tagsField?.type); // => falseReturns true when the output type is a GraphQLList.
Parameter type
The GraphQL output type to inspect.
Returns
True when the output type is a list type.
Example 1
import { buildSchema } from 'graphql/utilities';import { getNullableType, isListType } from 'graphql/type';const schema = buildSchema(`type Query {tags: [String!]!}`);const tagsField = schema.getQueryType()?.getFields().tags;const nullableTagsType = getNullableType(tagsField?.type);isListType(nullableTagsType); // => trueReturns true when the value is a GraphQLList.
Parameter type
The value to inspect.
Returns
True when the value is a list type.
Example 1
import { isListType } from 'graphql/type';isListType('[String]'); // => falseisListType(null); // => false
function isNamedType
isNamedType: (type: unknown) => type is GraphQLNamedType;Returns true when the value is a GraphQL named type.
Parameter type
The GraphQL type to inspect.
Returns
True when the value is a GraphQL named type.
Example 1
import { GraphQLList, GraphQLString, isNamedType } from 'graphql/type';isNamedType(GraphQLString); // => trueisNamedType(new GraphQLList(GraphQLString)); // => falseisNamedType(null); // => false
function isNonNullType
isNonNullType: { (type: GraphQLInputType): type is GraphQLNonNull<GraphQLNullableInputType>; (type: GraphQLOutputType): type is GraphQLNonNull<GraphQLNullableOutputType>; (type: unknown): type is GraphQLNonNull<GraphQLNullableType>;};Returns true when the value is a GraphQLNonNull.
Parameter type
The GraphQL type to inspect.
Returns
True when the value is a GraphQLNonNull.
Example 1
import { buildSchema } from 'graphql/utilities';import { GraphQLNonNull, GraphQLString, isNonNullType } from 'graphql/type';const schema = buildSchema(`type Query {name: String!nickname: String}`);const fields = schema.getQueryType()?.getFields();isNonNullType(new GraphQLNonNull(GraphQLString)); // => trueisNonNullType(fields?.name.type); // => trueisNonNullType(fields?.nickname.type); // => falseReturns true when the output type is a GraphQLNonNull.
Parameter type
The GraphQL output type to inspect.
Returns
True when the output type is a non-null type.
Example 1
import { buildSchema } from 'graphql/utilities';import { isNonNullType } from 'graphql/type';const schema = buildSchema(`type Query {name: String!nickname: String}`);const fields = schema.getQueryType()?.getFields();isNonNullType(fields?.name.type); // => trueisNonNullType(fields?.nickname.type); // => falseReturns true when the value is a GraphQLNonNull.
Parameter type
The value to inspect.
Returns
True when the value is a non-null type.
Example 1
import { isNonNullType } from 'graphql/type';isNonNullType('String!'); // => falseisNonNullType(null); // => false
function isNullableType
isNullableType: (type: unknown) => type is GraphQLNullableType;Returns true when the value is a GraphQL type that can accept null.
Parameter type
The GraphQL type to inspect.
Returns
True when the value is a GraphQL type that can accept null.
Example 1
import { GraphQLNonNull, GraphQLString, isNullableType } from 'graphql/type';isNullableType(GraphQLString); // => trueisNullableType(new GraphQLNonNull(GraphQLString)); // => falseisNullableType(null); // => false
function isObjectType
isObjectType: (type: unknown) => type is GraphQLObjectType<any, any, any>;Returns true when the value is a GraphQLObjectType.
Parameter type
The GraphQL type to inspect.
Returns
True when the value is a GraphQLObjectType.
Example 1
import { buildSchema } from 'graphql/utilities';import { isObjectType } from 'graphql/type';const schema = buildSchema(`input ReviewInput {stars: Int!}type User {name: String}type Query {user: User}`);isObjectType(schema.getType('User')); // => trueisObjectType(schema.getType('ReviewInput')); // => false
function isOutputType
isOutputType: (type: unknown) => type is GraphQLOutputType;Returns true when the value can be used as a GraphQL output type.
Parameter type
The GraphQL type to inspect.
Returns
True when the value can be used as a GraphQL output type.
Example 1
import { buildSchema } from 'graphql/utilities';import { isOutputType } from 'graphql/type';const schema = buildSchema(`input ReviewInput {stars: Int!}type Review {stars: Int!}type Query {review(input: ReviewInput): Review}`);isOutputType(schema.getType('Review')); // => trueisOutputType(schema.getType('ReviewInput')); // => false
function isRequiredArgument
isRequiredArgument: (arg: GraphQLArgument | GraphQLVariableSignature) => boolean;Returns true when the argument is non-null and has no default value.
Parameter arg
The argument definition to inspect.
Returns
True when the argument is non-null and has no default value.
Example 1
import {GraphQLArgument,GraphQLField,GraphQLInt,GraphQLNonNull,GraphQLObjectType,GraphQLString,isRequiredArgument,} from 'graphql/type';const Query = new GraphQLObjectType({ name: 'Query', fields: {} });const field = new GraphQLField(Query, 'reviews', { type: GraphQLString });const requiredArgument = new GraphQLArgument(field, 'id', {type: new GraphQLNonNull(GraphQLInt),});const optionalArgument = new GraphQLArgument(field, 'name', {type: GraphQLString,});const argumentWithDefault = new GraphQLArgument(field, 'limit', {type: new GraphQLNonNull(GraphQLInt),default: { value: 10 },});isRequiredArgument(requiredArgument); // => trueisRequiredArgument(optionalArgument); // => falseisRequiredArgument(argumentWithDefault); // => false
function isRequiredInputField
isRequiredInputField: (field: GraphQLInputField) => boolean;Returns true when the input field is non-null and has no default value.
Parameter field
The input field definition to inspect.
Returns
True when the input field is non-null and has no default value.
Example 1
import {GraphQLInputField,GraphQLInputObjectType,GraphQLInt,GraphQLNonNull,GraphQLString,isRequiredInputField,} from 'graphql/type';const ReviewInput = new GraphQLInputObjectType({name: 'ReviewInput',fields: {},});const requiredField = new GraphQLInputField(ReviewInput, 'id', {type: new GraphQLNonNull(GraphQLInt),});const optionalField = new GraphQLInputField(ReviewInput, 'name', {type: GraphQLString,});const fieldWithDefault = new GraphQLInputField(ReviewInput, 'limit', {type: new GraphQLNonNull(GraphQLInt),default: { value: 10 },});isRequiredInputField(requiredField); // => trueisRequiredInputField(optionalField); // => falseisRequiredInputField(fieldWithDefault); // => false
function isScalarType
isScalarType: (type: unknown) => type is GraphQLScalarType<unknown, unknown>;There are predicates for each kind of GraphQL type.
Parameter type
The GraphQL type to inspect.
Returns
True when the value is a GraphQLScalarType.
Example 1
import { buildSchema } from 'graphql/utilities';import { isScalarType } from 'graphql/type';const schema = buildSchema(`scalar DateTimetype Query {createdAt: DateTime}`);isScalarType(schema.getType('DateTime')); // => trueisScalarType(schema.getType('Query')); // => false
function isSchema
isSchema: (schema: unknown) => schema is GraphQLSchema;Test if the given value is a GraphQL schema.
Parameter schema
Value to inspect.
Returns
True when the value is a GraphQLSchema.
Example 1
import { buildSchema } from 'graphql/utilities';import { GraphQLString, isSchema } from 'graphql/type';const schema = buildSchema(`type Query {greeting: String}`);isSchema(schema); // => trueisSchema(GraphQLString); // => false
function isSchemaCoordinateNode
isSchemaCoordinateNode: (node: ASTNode) => node is SchemaCoordinateNode;Returns true when the AST node is a schema coordinate node.
Parameter node
The AST node to test.
Returns
True when the AST node is a schema coordinate node.
Example 1
import {parse,parseSchemaCoordinate,isSchemaCoordinateNode,} from 'graphql/language';const coordinate = parseSchemaCoordinate('Query.hero');const document = parse('{ hero }');isSchemaCoordinateNode(coordinate); // => trueisSchemaCoordinateNode(document); // => false
function isSelectionNode
isSelectionNode: (node: ASTNode) => node is SelectionNode;Returns true when the AST node is a selection node.
Parameter node
The AST node to test.
Returns
True when the AST node is a selection node.
Example 1
import { Kind, isSelectionNode } from 'graphql/language';const field = { kind: Kind.FIELD, name: { kind: Kind.NAME, value: 'hello' } };const document = { kind: Kind.DOCUMENT, definitions: [] };isSelectionNode(field); // => trueisSelectionNode(document); // => false
function isSpecifiedDirective
isSpecifiedDirective: (directive: GraphQLDirective) => boolean;Returns true when the directive is one of the directives specified by GraphQL.
Parameter directive
Directive to inspect.
Returns
True when the directive is specified by GraphQL.
Example 1
import {GraphQLDirective,GraphQLIncludeDirective,isSpecifiedDirective,} from 'graphql/type';import { DirectiveLocation } from 'graphql/language';const customDirective = new GraphQLDirective({name: 'auth',locations: [DirectiveLocation.FIELD_DEFINITION],});isSpecifiedDirective(GraphQLIncludeDirective); // => trueisSpecifiedDirective(customDirective); // => false
function isSpecifiedScalarType
isSpecifiedScalarType: (type: GraphQLNamedType) => boolean;Returns true when the scalar type is one of the scalars specified by GraphQL.
Parameter type
The GraphQL type to inspect.
Returns
True when the scalar type is one of the scalars specified by GraphQL.
Example 1
import {GraphQLScalarType,GraphQLString,isSpecifiedScalarType,} from 'graphql/type';const DateTime = new GraphQLScalarType({name: 'DateTime',});isSpecifiedScalarType(GraphQLString); // => trueisSpecifiedScalarType(DateTime); // => false
function isSubscriptionOperationDefinitionNode
isSubscriptionOperationDefinitionNode: ( node: OperationDefinitionNode) => node is SubscriptionOperationDefinitionNode;A type predicate for SubscriptionOperationDefinitionNode. Useful anywhere that must distinguish subscription operations from queries and mutations, such as the subscription execution pipeline which routes events through a different code path.
Parameter node
Operation definition node to test.
Returns
True when the operation definition is a subscription.
Example 1
import { parse, isSubscriptionOperationDefinitionNode } from 'graphql/language';const subscription = parse('subscription { greeting }').definitions[0];const query = parse('{ greeting }').definitions[0];isSubscriptionOperationDefinitionNode(subscription); // => trueisSubscriptionOperationDefinitionNode(query); // => false
function isType
isType: (type: unknown) => type is GraphQLType;Returns true when the value is any GraphQL type.
Parameter type
The GraphQL type to inspect.
Returns
True when the value is any GraphQL type.
Example 1
import { buildSchema } from 'graphql/utilities';import { GraphQLList, GraphQLString, isType } from 'graphql/type';const schema = buildSchema(`type Query {name: String}`);isType(GraphQLString); // => trueisType(new GraphQLList(GraphQLString)); // => trueisType(schema.getType('Query')); // => trueisType('String'); // => false
function isTypeDefinitionNode
isTypeDefinitionNode: (node: ASTNode) => node is TypeDefinitionNode;Returns true when the AST node is a type definition node.
Parameter node
The AST node to test.
Returns
True when the AST node is a type definition node.
Example 1
import { parse, isTypeDefinitionNode } from 'graphql/language';const typeDefinition = parse('type Query { hello: String }');const directiveDefinition = parse('directive @cache on FIELD');isTypeDefinitionNode(typeDefinition.definitions[0]); // => trueisTypeDefinitionNode(directiveDefinition.definitions[0]); // => false
function isTypeExtensionNode
isTypeExtensionNode: (node: ASTNode) => node is TypeExtensionNode;Returns true when the AST node is a type extension node.
Parameter node
The AST node to test.
Returns
True when the AST node is a type extension node.
Example 1
import { parse, isTypeExtensionNode } from 'graphql/language';const extension = parse('extend type Query { hello: String }');const schemaExtension = parse('extend schema { query: Query }');isTypeExtensionNode(extension.definitions[0]); // => trueisTypeExtensionNode(schemaExtension.definitions[0]); // => false
function isTypeNode
isTypeNode: (node: ASTNode) => node is TypeNode;Returns true when the AST node is a type node.
Parameter node
The AST node to test.
Returns
True when the AST node is a type node.
Example 1
import { parseType, parseValue, isTypeNode } from 'graphql/language';const type = parseType('[String!]');const value = parseValue('[42]');isTypeNode(type); // => trueisTypeNode(value); // => false
function isTypeSubTypeOf
isTypeSubTypeOf: ( schema: GraphQLSchema, maybeSubType: GraphQLType, superType: GraphQLType) => boolean;Provided a type and a super type, return true if the first type is either equal or a subset of the second super type (covariant).
Parameter schema
GraphQL schema to use.
Parameter maybeSubType
The possible subtype to compare.
Parameter superType
The possible supertype to compare.
Returns
True when
maybeSubTypeis equal to or a subtype ofsuperType.Example 1
import { buildSchema } from 'graphql/utilities';import {GraphQLNonNull,assertInterfaceType,assertObjectType,} from 'graphql/type';import { isTypeSubTypeOf } from 'graphql/utilities';const schema = buildSchema(`interface Node {id: ID!}type User implements Node {id: ID!}type Query {node: Node}`);const Node = assertInterfaceType(schema.getType('Node'));const User = assertObjectType(schema.getType('User'));isTypeSubTypeOf(schema, User, Node); // => trueisTypeSubTypeOf(schema, new GraphQLNonNull(User), Node); // => trueisTypeSubTypeOf(schema, Node, User); // => false
function isTypeSystemDefinitionNode
isTypeSystemDefinitionNode: (node: ASTNode) => node is TypeSystemDefinitionNode;Returns true when the AST node is a type system definition node.
Parameter node
The AST node to test.
Returns
True when the AST node is a type system definition node.
Example 1
import { parse, isTypeSystemDefinitionNode } from 'graphql/language';const schema = parse('type Query { hello: String }');const query = parse('{ hello }');isTypeSystemDefinitionNode(schema.definitions[0]); // => trueisTypeSystemDefinitionNode(query.definitions[0]); // => false
function isTypeSystemExtensionNode
isTypeSystemExtensionNode: (node: ASTNode) => node is TypeSystemExtensionNode;Returns true when the AST node is a type system extension node.
Parameter node
The AST node to test.
Returns
True when the AST node is a type system extension node.
Example 1
import { parse, isTypeSystemExtensionNode } from 'graphql/language';const extension = parse('extend type Query { hello: String }');const definition = parse('type Query { hello: String }');isTypeSystemExtensionNode(extension.definitions[0]); // => trueisTypeSystemExtensionNode(definition.definitions[0]); // => false
function isUnionType
isUnionType: (type: unknown) => type is GraphQLUnionType<any, any>;Returns true when the value is a GraphQLUnionType.
Parameter type
The GraphQL type to inspect.
Returns
True when the value is a GraphQLUnionType.
Example 1
import { buildSchema } from 'graphql/utilities';import { isUnionType } from 'graphql/type';const schema = buildSchema(`type Photo {url: String!}type Video {url: String!}union Media = Photo | Videotype Query {media: [Media]}`);isUnionType(schema.getType('Media')); // => trueisUnionType(schema.getType('Photo')); // => false
function isValueNode
isValueNode: (node: ASTNode) => node is ValueNode;Returns true when the AST node is a value node.
Parameter node
The AST node to test.
Returns
True when the AST node is a value node.
Example 1
import { parseType, parseValue, isValueNode } from 'graphql/language';const value = parseValue('[42]');const type = parseType('[String!]');isValueNode(value); // => trueisValueNode(type); // => false
function isWrappingType
isWrappingType: (type: unknown) => type is GraphQLWrappingType;Returns true when the value is a GraphQL list or non-null wrapper type.
Parameter type
The GraphQL type to inspect.
Returns
True when the value is a GraphQL list or non-null wrapper type.
Example 1
import {GraphQLList,GraphQLNonNull,GraphQLString,isWrappingType,} from 'graphql/type';isWrappingType(new GraphQLList(GraphQLString)); // => trueisWrappingType(new GraphQLNonNull(GraphQLString)); // => trueisWrappingType(GraphQLString); // => false
function KnownArgumentNamesRule
KnownArgumentNamesRule: (context: ValidationContext) => ASTVisitor;Known argument names
A GraphQL field is only valid if all supplied arguments are defined by that field.
See https://spec.graphql.org/draft/#sec-Argument-Names See https://spec.graphql.org/draft/#sec-Directives-Are-In-Valid-Locations
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { KnownArgumentNamesRule } from 'graphql/validation';const schema = buildSchema(`type Query {field(arg: String): String}`);const invalidDocument = parse(`{ field(unknown: "1") }`);const invalidErrors = validate(schema, invalidDocument, [KnownArgumentNamesRule,]);invalidErrors.length; // => 1const validDocument = parse(`{ field(arg: "1") }`);const validErrors = validate(schema, validDocument, [KnownArgumentNamesRule]);validErrors; // => []
function KnownDirectivesRule
KnownDirectivesRule: ( context: ValidationContext | SDLValidationContext) => ASTVisitor;Known directives
A GraphQL document is only valid if all
@directivesare known by the schema and legally positioned.See https://spec.graphql.org/draft/#sec-Directives-Are-Defined
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { KnownDirectivesRule } from 'graphql/validation';const schema = buildSchema(`type Query {name: String}`);const invalidDocument = parse(`{ name @unknown }`);const invalidErrors = validate(schema, invalidDocument, [KnownDirectivesRule]);invalidErrors.length; // => 1const validDocument = parse(`{ name @include(if: true) }`);const validErrors = validate(schema, validDocument, [KnownDirectivesRule]);validErrors; // => []
function KnownFragmentNamesRule
KnownFragmentNamesRule: (context: ValidationContext) => ASTVisitor;Known fragment names
A GraphQL document is only valid if all
...Fragmentfragment spreads refer to fragments defined in the same document.See https://spec.graphql.org/draft/#sec-Fragment-spread-target-defined
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { KnownFragmentNamesRule } from 'graphql/validation';const schema = buildSchema(`type Query {name: String}`);const invalidDocument = parse(`{ ...Missing }`);const invalidErrors = validate(schema, invalidDocument, [KnownFragmentNamesRule,]);invalidErrors.length; // => 1const validDocument = parse(`fragment NameFields on Query { name } query { ...NameFields }`);const validErrors = validate(schema, validDocument, [KnownFragmentNamesRule]);validErrors; // => []
function KnownOperationTypesRule
KnownOperationTypesRule: (context: ValidationContext) => ASTVisitor;Known Operation Types
A GraphQL document is only valid if when it contains an operation, the root type for the operation exists within the schema.
See https://spec.graphql.org/draft/#sec-Operation-Type-Existence
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import { validate, KnownOperationTypesRule } from 'graphql/validation';const schema = buildSchema(`type Query {greeting: String}`);const invalidDocument = parse('mutation { greeting }');const validDocument = parse('{ greeting }');validate(schema, invalidDocument, [KnownOperationTypesRule])[0].message; // => 'The mutation operation is not supported by the schema.'validate(schema, validDocument, [KnownOperationTypesRule]); // => []
function KnownTypeNamesRule
KnownTypeNamesRule: ( context: ValidationContext | SDLValidationContext) => ASTVisitor;Known type names
A GraphQL document is only valid if referenced types (specifically variable definitions and fragment conditions) are defined by the type schema.
See https://spec.graphql.org/draft/#sec-Fragment-Spread-Type-Existence
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { KnownTypeNamesRule } from 'graphql/validation';const schema = buildSchema(`type Query {name: String}`);const invalidDocument = parse(`fragment Bad on Missing { name }`);const invalidErrors = validate(schema, invalidDocument, [KnownTypeNamesRule]);invalidErrors.length; // => 1const validDocument = parse(`fragment Good on Query { name }`);const validErrors = validate(schema, validDocument, [KnownTypeNamesRule]);validErrors; // => []
function legacyExecuteIncrementally
legacyExecuteIncrementally: ( args: ExecutionArgs) => PromiseOrValue<ExecutionResult | LegacyExperimentalIncrementalExecutionResults>;Executes a GraphQL operation with support for
@deferand@streamusing the legacy incremental delivery payload format.Prefer
experimentalExecuteIncrementallyfor the current incremental delivery format. In the legacy format, each subsequent incremental payload identifies its location withpathand optionallabelfields. The current format instead tracks pending work byidand reports completion throughcompletedentries.Parameter args
Execution arguments for the GraphQL operation.
Returns
A single execution result or legacy incremental execution results.
Example 1
import assert from 'node:assert';import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import { legacyExecuteIncrementally } from 'graphql/execution';const schema = buildSchema(`type Query {hero: Hero}type Hero {id: ID!name: String!}`);const result = await legacyExecuteIncrementally({schema,document: parse('{ hero { id ... @defer(label: "HeroName") { name } } }'),rootValue: { hero: { id: '1', name: 'Luke' } },});assert('initialResult' in result);result.initialResult; // => { data: { hero: { id: '1' } }, hasNext: true }const deferred = await result.subsequentResults.next();deferred.value; // => { incremental: [ { data: { name: 'Luke' }, path: ['hero'], label: 'HeroName' } ], hasNext: false }Example 2
Compare the legacy payload format with the current incremental delivery format returned by
experimentalExecuteIncrementally.import assert from 'node:assert';import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import {experimentalExecuteIncrementally,legacyExecuteIncrementally,} from 'graphql/execution';const schema = buildSchema(`type Query {hero: Hero}type Hero {id: ID!name: String!}`);const document = parse('{ hero { id ... @defer { name } } }');const rootValue = { hero: { id: '1', name: 'Luke' } };const experimental = await experimentalExecuteIncrementally({schema,document,rootValue,});const legacy = await legacyExecuteIncrementally({schema,document,rootValue,});assert('initialResult' in experimental);assert('initialResult' in legacy);experimental.initialResult; // => { data: { hero: { id: '1' } }, pending: [ { id: '0', path: ['hero'] } ], hasNext: true }legacy.initialResult; // => { data: { hero: { id: '1' } }, hasNext: true }const experimentalDeferred = await experimental.subsequentResults.next();experimentalDeferred.value; // => { incremental: [{ data: { name: 'Luke' }, id: '0' }], completed: [{ id: '0' }], hasNext: false }const legacyDeferred = await legacy.subsequentResults.next();legacyDeferred.value; // => { incremental: [ { data: { name: 'Luke' }, path: ['hero'] } ], hasNext: false }Example 3
Compare streamed list payloads in the legacy and current incremental delivery formats.
import assert from 'node:assert';import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import {experimentalExecuteIncrementally,legacyExecuteIncrementally,} from 'graphql/execution';const schema = buildSchema('type Query { colors: [String] }');const document = parse('{ colors @stream(initialCount: 1) }');const rootValue = { colors: ['red', 'green', 'blue'] };const experimental = await experimentalExecuteIncrementally({schema,document,rootValue,});const legacy = await legacyExecuteIncrementally({schema,document,rootValue,});assert('initialResult' in experimental);assert('initialResult' in legacy);experimental.initialResult; // => { data: { colors: ['red'] }, pending: [ { id: '0', path: ['colors'] } ], hasNext: true }legacy.initialResult; // => { data: { colors: ['red'] }, hasNext: true }const experimentalStream = await experimental.subsequentResults.next();experimentalStream.value; // => { incremental: [ { items: ['green', 'blue'], id: '0' } ], completed: [{ id: '0' }], hasNext: false }const legacyStream = await legacy.subsequentResults.next();legacyStream.value; // => { incremental: [ { items: ['green', 'blue'], path: ['colors', 1] } ], hasNext: false }
function legacyExecuteRootSelectionSet
legacyExecuteRootSelectionSet: ( validatedExecutionArgs: ValidatedExecutionArgs) => PromiseOrValue<ExecutionResult | LegacyExperimentalIncrementalExecutionResults>;Executes a validated operation root selection set with support for
@deferand@streamusing the legacy incremental delivery payload format.Parameter validatedExecutionArgs
Validated execution arguments.
Returns
A single execution result or legacy incremental execution results.
Example 1
import assert from 'node:assert';import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import {legacyExecuteRootSelectionSet,validateExecutionArgs,} from 'graphql/execution';const schema = buildSchema('type Query { greeting: String }');const validatedArgs = validateExecutionArgs({schema,document: parse('{ greeting }'),rootValue: { greeting: 'Hello' },});assert('schema' in validatedArgs);const result = await legacyExecuteRootSelectionSet(validatedArgs);result; // => { data: { greeting: 'Hello' } }
function lexicographicSortSchema
lexicographicSortSchema: (schema: GraphQLSchema) => GraphQLSchema;Sort GraphQLSchema.
This function returns a sorted copy of the given GraphQLSchema.
Parameter schema
GraphQL schema to use.
Returns
A copy of the schema with types, fields, arguments, and values sorted lexicographically.
Example 1
import {buildSchema,lexicographicSortSchema,printSchema,} from 'graphql/utilities';const schema = buildSchema(`type Query {zebra: Stringapple: String}enum Episode {JEDINEW_HOPEEMPIRE}`);const sortedSchema = lexicographicSortSchema(schema);printSchema(sortedSchema);// =>// enum Episode {// EMPIRE// JEDI// NEW_HOPE// }//// type Query {// apple: String// zebra: String// }
function locatedError
locatedError: ( rawOriginalError: unknown, nodes: ASTNode | ReadonlyArray<ASTNode> | undefined | null, path?: Maybe<ReadonlyArray<string | number>>) => GraphQLError;Given an arbitrary value, presumably thrown while attempting to execute a GraphQL operation, produce a new GraphQLError aware of the location in the document responsible for the original Error.
Parameter rawOriginalError
The original error value to wrap.
Parameter nodes
The AST nodes associated with the error.
Parameter path
The response path associated with the error.
Returns
The GraphQL error.
Example 1
import { parse } from 'graphql/language';import { locatedError } from 'graphql/error';const document = parse('{ viewer { name } }');const fieldNode = document.definitions[0].selectionSet.selections[0];const error = locatedError(new Error('Resolver failed'), fieldNode, ['viewer']);error.message; // => 'Resolver failed'error.locations; // => [{ line: 1, column: 3 }]error.path; // => ['viewer']
function LoneAnonymousOperationRule
LoneAnonymousOperationRule: (context: ASTValidationContext) => ASTVisitor;Lone anonymous operation
A GraphQL document is only valid if when it contains an anonymous operation (the query short-hand) that it contains only that one operation definition.
See https://spec.graphql.org/draft/#sec-Lone-Anonymous-Operation
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { LoneAnonymousOperationRule } from 'graphql/validation';const schema = buildSchema(`type Query {name: String}`);const invalidDocument = parse(`query { name } query Other { name }`);const invalidErrors = validate(schema, invalidDocument, [LoneAnonymousOperationRule,]);invalidErrors.length; // => 1const validDocument = parse(`{ name }`);const validErrors = validate(schema, validDocument, [LoneAnonymousOperationRule,]);validErrors; // => []
function LoneSchemaDefinitionRule
LoneSchemaDefinitionRule: (context: SDLValidationContext) => ASTVisitor;Lone Schema definition
A GraphQL document is only valid if it contains only one schema definition.
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema } from 'graphql';import { LoneSchemaDefinitionRule } from 'graphql/validation';const invalidSDL = `schema { query: Query } schema { query: Query } type Query { name: String }`;LoneSchemaDefinitionRule.name; // => 'LoneSchemaDefinitionRule'buildSchema(invalidSDL); // throws an errorconst validSDL = `schema { query: Query } type Query { name: String }`;buildSchema(validSDL); // does not throw
function mapSourceToResponseEvent
mapSourceToResponseEvent: ( validatedExecutionArgs: ValidatedSubscriptionArgs, sourceEventStream: AsyncIterable<unknown>, rootSelectionSetExecutor?: RootSelectionSetExecutor) => AsyncGenerator<ExecutionResult, void, void>;Implements the "MapSourceToResponseEvent" algorithm described in the GraphQL specification, mapping each event from a subscription source event stream to an ExecutionResult in the response stream.
Parameter validatedExecutionArgs
Validated subscription execution arguments.
Parameter sourceEventStream
Source event stream returned by the subscription resolver.
Parameter rootSelectionSetExecutor
Function used to execute each source event.
Returns
A response stream of execution results.
Example 1
import assert from 'node:assert';import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import {mapSourceToResponseEvent,validateSubscriptionArgs,} from 'graphql/execution';async function* events() {yield { greeting: 'Hello' };}const schema = buildSchema(`type Query {noop: String}type Subscription {greeting: String}`);const validatedArgs = validateSubscriptionArgs({schema,document: parse('subscription { greeting }'),});assert('schema' in validatedArgs);const responseStream = mapSourceToResponseEvent(validatedArgs, events());const firstPayload = await responseStream.next();firstPayload.value; // => { data: { greeting: 'Hello' } }
function MaxIntrospectionDepthRule
MaxIntrospectionDepthRule: (context: ASTValidationContext) => ASTVisitor;Implements the max introspection depth validation rule.
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { MaxIntrospectionDepthRule } from 'graphql/validation';const schema = buildSchema(`type Query {name: String}`);const invalidDocument = parse(`{ __schema { types { fields { type { fields { type { fields { name } } } } } } } }`);const invalidErrors = validate(schema, invalidDocument, [MaxIntrospectionDepthRule,]);invalidErrors.length; // => 1const validDocument = parse(`{ __schema { queryType { name } } }`);const validErrors = validate(schema, validDocument, [MaxIntrospectionDepthRule,]);validErrors; // => []
function NoDeprecatedCustomRule
NoDeprecatedCustomRule: (context: ValidationContext) => ASTVisitor;No deprecated
A GraphQL document is only valid if all selected fields and all used enum values have not been deprecated.
Note: This rule is optional and is not part of the Validation section of the GraphQL Specification. The main purpose of this rule is detection of deprecated usages and not necessarily to forbid their use when querying a service.
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import {GraphQLObjectType,GraphQLSchema,GraphQLString,parse,validate,} from 'graphql';import { NoDeprecatedCustomRule } from 'graphql/validation';const schema = new GraphQLSchema({query: new GraphQLObjectType({name: 'Query',fields: {name: { type: GraphQLString },oldName: {type: GraphQLString,deprecationReason: 'Use name instead.',},},}),});const invalidDocument = parse(`{ oldName }`);const invalidErrors = validate(schema, invalidDocument, [NoDeprecatedCustomRule,]);invalidErrors.length; // => 1const validDocument = parse(`{ name }`);const validErrors = validate(schema, validDocument, [NoDeprecatedCustomRule]);validErrors; // => []
function NoFragmentCyclesRule
NoFragmentCyclesRule: (context: ASTValidationContext) => ASTVisitor;No fragment cycles
The graph of fragment spreads must not form any cycles including spreading itself. Otherwise an operation could infinitely spread or infinitely execute on cycles in the underlying data.
See https://spec.graphql.org/draft/#sec-Fragment-spreads-must-not-form-cycles
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { NoFragmentCyclesRule } from 'graphql/validation';const schema = buildSchema(`type Query {name: String}`);const invalidDocument = parse(`fragment A on Query { ...B } fragment B on Query { ...A } query { ...A }`);const invalidErrors = validate(schema, invalidDocument, [NoFragmentCyclesRule]);invalidErrors.length; // => 1const validDocument = parse(`fragment A on Query { name } query { ...A }`);const validErrors = validate(schema, validDocument, [NoFragmentCyclesRule]);validErrors; // => []
function NoSchemaIntrospectionCustomRule
NoSchemaIntrospectionCustomRule: (context: ValidationContext) => ASTVisitor;Prohibit introspection queries
A GraphQL document is only valid if all fields selected are not fields that return an introspection type.
Note: This rule is optional and is not part of the Validation section of the GraphQL Specification. This rule effectively disables introspection, which does not reflect best practices and should only be done if absolutely necessary.
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { NoSchemaIntrospectionCustomRule } from 'graphql/validation';const schema = buildSchema(`type Query {name: String}`);const invalidDocument = parse(`{ __schema { queryType { name } } }`);const invalidErrors = validate(schema, invalidDocument, [NoSchemaIntrospectionCustomRule,]);invalidErrors.length; // => 1const validDocument = parse(`{ name }`);const validErrors = validate(schema, validDocument, [NoSchemaIntrospectionCustomRule,]);validErrors; // => []
function NoUndefinedVariablesRule
NoUndefinedVariablesRule: (context: ValidationContext) => ASTVisitor;No undefined variables
A GraphQL operation is only valid if all variables encountered, both directly and via fragment spreads, are defined by that operation.
See https://spec.graphql.org/draft/#sec-All-Variable-Uses-Defined
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { NoUndefinedVariablesRule } from 'graphql/validation';const schema = buildSchema(`type Query {field(arg: ID): String}`);const invalidDocument = parse(`query ($id: ID) { field(arg: $missing) }`);const invalidErrors = validate(schema, invalidDocument, [NoUndefinedVariablesRule,]);invalidErrors.length; // => 1const validDocument = parse(`query ($id: ID) { field(arg: $id) }`);const validErrors = validate(schema, validDocument, [NoUndefinedVariablesRule]);validErrors; // => []
function NoUnusedFragmentsRule
NoUnusedFragmentsRule: (context: ASTValidationContext) => ASTVisitor;No unused fragments
A GraphQL document is only valid if all fragment definitions are spread within operations, or spread within other fragments spread within operations.
See https://spec.graphql.org/draft/#sec-Fragments-Must-Be-Used
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { NoUnusedFragmentsRule } from 'graphql/validation';const schema = buildSchema(`type Query {name: String}`);const invalidDocument = parse(`fragment Unused on Query { name } query { name }`);const invalidErrors = validate(schema, invalidDocument, [NoUnusedFragmentsRule,]);invalidErrors.length; // => 1const validDocument = parse(`fragment Used on Query { name } query { ...Used }`);const validErrors = validate(schema, validDocument, [NoUnusedFragmentsRule]);validErrors; // => []
function NoUnusedVariablesRule
NoUnusedVariablesRule: (context: ValidationContext) => ASTVisitor;No unused variables
A GraphQL operation is only valid if all variables defined by an operation are used, either directly or within a spread fragment.
See https://spec.graphql.org/draft/#sec-All-Variables-Used
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { NoUnusedVariablesRule } from 'graphql/validation';const schema = buildSchema(`type Query {field(arg: ID): Stringname: String}`);const invalidDocument = parse(`query ($id: ID) { name }`);const invalidErrors = validate(schema, invalidDocument, [NoUnusedVariablesRule,]);invalidErrors.length; // => 1const validDocument = parse(`query ($id: ID) { field(arg: $id) }`);const validErrors = validate(schema, validDocument, [NoUnusedVariablesRule]);validErrors; // => []
function OverlappingFieldsCanBeMergedRule
OverlappingFieldsCanBeMergedRule: (context: ValidationContext) => ASTVisitor;Overlapping fields can be merged
A selection set is only valid if all fields (including spreading any fragments) either correspond to distinct response names or can be merged without ambiguity.
See https://spec.graphql.org/draft/#sec-Field-Selection-Merging
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { OverlappingFieldsCanBeMergedRule } from 'graphql/validation';const schema = buildSchema(`type Query {dog: Dog}type Dog {name: StringbarkVolume: Int}`);const invalidDocument = parse(`{ dog { value: barkVolume value: name } }`);const invalidErrors = validate(schema, invalidDocument, [OverlappingFieldsCanBeMergedRule,]);invalidErrors.length; // => 1const validDocument = parse(`{ dog { barkVolume name } }`);const validErrors = validate(schema, validDocument, [OverlappingFieldsCanBeMergedRule,]);validErrors; // => []
function parse
parse: (source: string | Source, options?: ParseOptions) => DocumentNode;Given a GraphQL source, parses it into a Document. Throws GraphQLError if a syntax error is encountered.
Parameter source
A GraphQL source string or source object.
Parameter options
Optional parser configuration.
Returns
The parsed GraphQL document AST.
Example 1
// Parse a GraphQL document with the default parser options.import { parse } from 'graphql/language';const document = parse('{ hero { name } }');document.kind; // => 'Document'Example 2
// This variant enables parser options and provides an explicit lexer.import { Lexer, Source, parse } from 'graphql/language';const document = parse(`{t { ...A(var: true) }}fragment A($var: Boolean = false) on T {name}`,{experimentalFragmentArguments: true,maxTokens: 80,noLocation: true,},);const directiveDocument = parse('directive @foo @bar on FIELD');const source = new Source('{ hero }');const lexerDocument = parse(source, { lexer: new Lexer(source) });document.definitions[0].kind; // => 'OperationDefinition'document.definitions[1].kind; // => 'FragmentDefinition'document.loc; // => undefineddirectiveDocument.definitions[0].kind; // => 'DirectiveDefinition'lexerDocument.definitions[0].kind; // => 'OperationDefinition'
function parseConstValue
parseConstValue: ( source: string | Source, options?: ParseOptions) => ConstValueNode;Similar to parseValue(), but raises a parse error if it encounters a variable. The return type will be a constant value.
Parameter source
A GraphQL source string or source object containing a constant value.
Parameter options
Optional parser configuration.
Returns
The parsed GraphQL constant value AST.
Example 1
import { parseConstValue } from 'graphql/language';const value = parseConstValue('{ enabled: true }');value.kind; // => 'ObjectValue'parseConstValue('$variable'); // throws an error
function parseSchemaCoordinate
parseSchemaCoordinate: (source: string | Source) => SchemaCoordinateNode;Given a string containing a GraphQL Schema Coordinate (ex.
Type.field), parse the AST for that schema coordinate. Throws GraphQLError if a syntax error is encountered.Consider providing the results to the utility function: resolveASTSchemaCoordinate(). Or calling resolveSchemaCoordinate() directly with an unparsed source.
Parameter source
A GraphQL source string or source object containing a schema coordinate.
Returns
The parsed GraphQL schema coordinate AST.
Example 1
import { parseSchemaCoordinate } from 'graphql/language';const coordinate = parseSchemaCoordinate('Query.hero');coordinate.kind; // => 'MemberCoordinate'
function parseType
parseType: (source: string | Source, options?: ParseOptions) => TypeNode;Given a string containing a GraphQL Type (ex.
[Int!]), parse the AST for that type. Throws GraphQLError if a syntax error is encountered.This is useful within tools that operate upon GraphQL Types directly and in isolation of complete GraphQL documents.
Consider providing the results to the utility function: typeFromAST().
Parameter source
A GraphQL source string or source object containing a type reference.
Parameter options
Optional parser configuration.
Returns
The parsed GraphQL type AST.
Example 1
import { parseType } from 'graphql/language';const type = parseType('[String!]');type.kind; // => 'ListType'
function parseValue
parseValue: (source: string | Source, options?: ParseOptions) => ValueNode;Given a string containing a GraphQL value (ex.
[42]), parse the AST for that value. Throws GraphQLError if a syntax error is encountered.This is useful within tools that operate upon GraphQL Values directly and in isolation of complete GraphQL documents.
Consider providing the results to the utility function: valueFromAST().
Parameter source
A GraphQL source string or source object containing a value.
Parameter options
Optional parser configuration.
Returns
The parsed GraphQL value AST.
Example 1
import { parseValue } from 'graphql/language';const value = parseValue('[42]');value.kind; // => 'ListValue'
function PossibleFragmentSpreadsRule
PossibleFragmentSpreadsRule: (context: ValidationContext) => ASTVisitor;Possible fragment spread
A fragment spread is only valid if the type condition could ever possibly be true: if there is a non-empty intersection of the possible parent types, and possible types which pass the type condition.
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { PossibleFragmentSpreadsRule } from 'graphql/validation';const schema = buildSchema(`type Query {dog: Dog}type Dog {barkVolume: Int}type Cat {meowVolume: Int}`);const invalidDocument = parse(`{ dog { ... on Cat { meowVolume } } }`);const invalidErrors = validate(schema, invalidDocument, [PossibleFragmentSpreadsRule,]);invalidErrors.length; // => 1const validDocument = parse(`{ dog { ... on Dog { barkVolume } } }`);const validErrors = validate(schema, validDocument, [PossibleFragmentSpreadsRule,]);validErrors; // => []
function PossibleTypeExtensionsRule
PossibleTypeExtensionsRule: (context: SDLValidationContext) => ASTVisitor;Possible type extension
A type extension is only valid if the type is defined and has the same kind.
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema } from 'graphql';import { PossibleTypeExtensionsRule } from 'graphql/validation';const invalidSDL = `extend type Missing { name: String } type Query { name: String }`;PossibleTypeExtensionsRule.name; // => 'PossibleTypeExtensionsRule'buildSchema(invalidSDL); // throws an errorconst validSDL = `type Query { name: String } extend type Query { other: String }`;buildSchema(validSDL); // does not throw
function print
print: (ast: ASTNode) => string;Converts an AST into a string, using one set of reasonable formatting rules.
Parameter ast
The GraphQL AST node to print.
Returns
A stable string representation of the AST.
Example 1
import { parse, print } from 'graphql';const ast = parse('{ hero { name } }');const text = print(ast);text; // => '{\n hero {\n name\n }\n}'
function printDirective
printDirective: (directive: GraphQLDirective) => string;Prints a directive definition in GraphQL SDL.
Parameter directive
Directive to print.
Returns
SDL string for the directive definition.
Example 1
import {DirectiveLocation,GraphQLDirective,GraphQLString,} from 'graphql/type';import { printDirective } from 'graphql/utilities';const authDirective = new GraphQLDirective({name: 'auth',description: 'Requires authorization.',locations: [DirectiveLocation.FIELD_DEFINITION],args: {scope: { type: GraphQLString },},});printDirective(authDirective); // => '"""Requires authorization."""\ndirective @auth(scope: String) on FIELD_DEFINITION'
function printIntrospectionSchema
printIntrospectionSchema: (schema: GraphQLSchema) => string;Prints the introspection schema.
Parameter schema
GraphQL schema to use.
Returns
The printed string representation.
Example 1
import { buildSchema, printIntrospectionSchema } from 'graphql/utilities';const schema = buildSchema(`type Query {greeting: String}`);const printed = printIntrospectionSchema(schema);printed; // matches /type __Schema/printed; // matches /enum __TypeKind/printed; // does not match /type Query/
function printLocation
printLocation: (location: Location) => string;Render a helpful description of the location in the GraphQL Source document.
Parameter location
The AST location to print.
Returns
A formatted source excerpt with line and column information.
Example 1
import { parse, printLocation } from 'graphql/language';const document = parse('type Query { hello: String }');const location = document.definitions[0].loc;if (location) {const printed = printLocation(location);printed; // => 'GraphQL request:1:1\n1 | type Query { hello: String }\n | ^'}
function printSchema
printSchema: (schema: GraphQLSchema) => string;Prints the schema.
Parameter schema
GraphQL schema to use.
Returns
The printed string representation.
Example 1
import { buildSchema, printSchema } from 'graphql/utilities';const schema = buildSchema(`directive @upper on FIELD_DEFINITIONtype Query {greeting: String @upper}`);printSchema(schema); // => ['directive @upper on FIELD_DEFINITION', '', 'type Query {', ' greeting: String', '}'].join('\n')
function printSourceLocation
printSourceLocation: (source: Source, sourceLocation: SourceLocation) => string;Render a helpful description of the location in the GraphQL Source document.
Parameter source
The source document that contains the location.
Parameter sourceLocation
The 1-indexed line and column to print.
Returns
A formatted source excerpt with line and column information.
Example 1
import { Source, printSourceLocation } from 'graphql/language';const source = new Source('type Query { hello: String }');const printed = printSourceLocation(source, { line: 1, column: 14 });printed; // => 'GraphQL request:1:14\n1 | type Query { hello: String }\n | ^'
function printType
printType: (type: GraphQLNamedType) => string;Prints the type.
Parameter type
The GraphQL type to inspect.
Returns
The printed string representation.
Example 1
import { buildSchema, printType } from 'graphql/utilities';const schema = buildSchema(`type User {id: ID!name: String}type Query {viewer: User}`);printType(schema.getType('User')); // => ['type User {', ' id: ID!', ' name: String', '}'].join('\n')
function ProvidedRequiredArgumentsRule
ProvidedRequiredArgumentsRule: (context: ValidationContext) => ASTVisitor;Provided required arguments
A field or directive is only valid if all required (non-null without a default value) field arguments have been provided.
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { ProvidedRequiredArgumentsRule } from 'graphql/validation';const schema = buildSchema(`type Query {field(required: String!): String}`);const invalidDocument = parse(`{ field }`);const invalidErrors = validate(schema, invalidDocument, [ProvidedRequiredArgumentsRule,]);invalidErrors.length; // => 1const validDocument = parse(`{ field(required: "x") }`);const validErrors = validate(schema, validDocument, [ProvidedRequiredArgumentsRule,]);validErrors; // => []
function replaceVariables
replaceVariables: ( valueNode: ValueNode, variableValues?: Maybe<VariableValues>, fragmentVariableValues?: Maybe<FragmentVariableValues>) => ConstValueNode;Replaces any Variables found within an AST Value literal with literals supplied from a map of variable values, or removed if no variable replacement exists, returning a constant value.
Used primarily to ensure only complete constant values are used during input coercion of custom scalars which accept complex literals.
Parameter valueNode
Value AST node in which variables should be replaced.
Parameter variableValues
Operation variable values returned by getVariableValues.
Parameter fragmentVariableValues
Fragment variable values for the current fragment scope.
Returns
A constant value AST with variables replaced.
Example 1
import assert from 'node:assert';import { parse, parseValue, print } from 'graphql/language';import { getVariableValues } from 'graphql/execution';import { buildSchema, replaceVariables } from 'graphql/utilities';const schema = buildSchema(`type Query {review(stars: Int = 5): String}`);const document = parse('query ($stars: Int = 5) { review(stars: $stars) }');const operation = document.definitions[0];const result = getVariableValues(schema, operation.variableDefinitions, {stars: 4,});assert('variableValues' in result);const literal = replaceVariables(parseValue('{ stars: $stars, comment: $missing }'),result.variableValues,);print(literal); // => '{ stars: 4 }'
function resolveASTSchemaCoordinate
resolveASTSchemaCoordinate: ( schema: GraphQLSchema, schemaCoordinate: SchemaCoordinateNode) => ResolvedSchemaElement | undefined;Resolves schema coordinate from a parsed SchemaCoordinate node.
Parameter schema
GraphQL schema to use.
Parameter schemaCoordinate
The schema coordinate to resolve.
Returns
The schema element identified by the parsed coordinate, or undefined if none exists.
Example 1
import { parseSchemaCoordinate } from 'graphql/language';import { buildSchema, resolveASTSchemaCoordinate } from 'graphql/utilities';const schema = buildSchema(`type Query {greeting(name: String): String}`);const coordinate = parseSchemaCoordinate('Query.greeting(name:)');const resolved = resolveASTSchemaCoordinate(schema, coordinate);resolved.kind; // => 'FieldArgument'resolved.field.name; // => 'greeting'resolved.fieldArgument.name; // => 'name'
function resolveObjMapThunk
resolveObjMapThunk: <T>(thunk: ThunkObjMap<T>) => ObjMap<T>;Resolves a thunked object map.
Parameter thunk
The thunk or value to resolve.
Returns
The resolved object map.
Example 1
import { GraphQLString, resolveObjMapThunk } from 'graphql/type';const lazyFields = resolveObjMapThunk(() => ({ name: GraphQLString }));const fields = resolveObjMapThunk({ name: GraphQLString });lazyFields.name; // => GraphQLStringfields.name; // => GraphQLString
function resolveReadonlyArrayThunk
resolveReadonlyArrayThunk: <T>(thunk: ThunkReadonlyArray<T>) => ReadonlyArray<T>;Resolves a thunked readonly array.
Parameter thunk
The thunk or value to resolve.
Returns
The resolved readonly array.
Example 1
import { GraphQLString, resolveReadonlyArrayThunk } from 'graphql/type';const lazyFields = resolveReadonlyArrayThunk(() => [GraphQLString]);const fields = resolveReadonlyArrayThunk([GraphQLString]);lazyFields; // => [GraphQLString]fields; // => [GraphQLString]
function resolveSchemaCoordinate
resolveSchemaCoordinate: ( schema: GraphQLSchema, schemaCoordinate: string | Source) => ResolvedSchemaElement | undefined;A schema coordinate is resolved in the context of a GraphQL schema to uniquely identify a schema element. It returns undefined if the schema coordinate does not resolve to a schema element, meta-field, or introspection schema element. It will throw if the containing schema element (if applicable) does not exist.
https://spec.graphql.org/draft/#sec-Schema-Coordinates.Semantics
Parameter schema
GraphQL schema to use.
Parameter schemaCoordinate
The schema coordinate to resolve.
Returns
The schema element identified by the coordinate, or undefined if none exists.
Example 1
import { buildSchema, resolveSchemaCoordinate } from 'graphql/utilities';const schema = buildSchema(`directive @tag(name: String!) on FIELD_DEFINITIONinput ReviewInput {stars: Int!}enum Episode {NEW_HOPE}type Query {reviews(input: ReviewInput): [String] @tag(name: "reviews")}`);resolveSchemaCoordinate(schema, 'Query').kind; // => 'NamedType'resolveSchemaCoordinate(schema, 'Query.reviews').kind; // => 'Field'resolveSchemaCoordinate(schema, 'Query.reviews(input:)').kind; // => 'FieldArgument'resolveSchemaCoordinate(schema, 'ReviewInput.stars').kind; // => 'InputField'resolveSchemaCoordinate(schema, 'Episode.NEW_HOPE').kind; // => 'EnumValue'resolveSchemaCoordinate(schema, '@tag').kind; // => 'Directive'resolveSchemaCoordinate(schema, '@tag(name:)').kind; // => 'DirectiveArgument'resolveSchemaCoordinate(schema, 'Query.missing'); // => undefined
function responsePathAsArray
responsePathAsArray: (path: Maybe<Readonly<Path>>) => Array<string | number>;Given a Path, return an Array of the path keys.
Parameter path
The linked response path to flatten.
Returns
An array of response path keys from root to leaf.
Example 1
import { pathToArray } from 'graphql/jsutils/Path';const path = {prev: {prev: {prev: undefined,key: 'viewer',typename: 'Query',},key: 'friends',typename: 'User',},key: 0,typename: undefined,};pathToArray(path); // => ['viewer', 'friends', 0]pathToArray(undefined); // => []
function ScalarLeafsRule
ScalarLeafsRule: (context: ValidationContext) => ASTVisitor;Scalar leafs
A GraphQL document is valid only if all leaf fields (fields without sub selections) are of scalar or enum types.
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { ScalarLeafsRule } from 'graphql/validation';const schema = buildSchema(`type Query {name: String}`);const invalidDocument = parse(`{ name { length } }`);const invalidErrors = validate(schema, invalidDocument, [ScalarLeafsRule]);invalidErrors.length; // => 1const validDocument = parse(`{ name }`);const validErrors = validate(schema, validDocument, [ScalarLeafsRule]);validErrors; // => []
function separateOperations
separateOperations: (documentAST: DocumentNode) => ObjMap<DocumentNode>;separateOperations accepts a single AST document which may contain many operations and fragments and returns a collection of AST documents each of which contains a single operation as well the fragment definitions it refers to.
Parameter documentAST
The parsed GraphQL document AST.
Returns
A map of operation names to documents containing each operation and its referenced fragments.
Example 1
import { parse, print } from 'graphql/language';import { separateOperations } from 'graphql/utilities';const document = parse(`query GetUser {viewer {...UserFields}}query GetStatus {status}fragment UserFields on User {id}`);const separated = separateOperations(document);Object.keys(separated); // => ['GetUser', 'GetStatus']print(separated.GetUser); // matches /fragment UserFields/print(separated.GetStatus); // does not match /fragment UserFields/
function SingleFieldSubscriptionsRule
SingleFieldSubscriptionsRule: (context: ValidationContext) => ASTVisitor;Subscriptions must only include a non-introspection field.
A GraphQL subscription is valid only if it contains a single root field and that root field is not an introspection field.
See https://spec.graphql.org/draft/#sec-Single-root-field
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { SingleFieldSubscriptionsRule } from 'graphql/validation';const schema = buildSchema(`type Query {name: String}type Subscription {a: Stringb: String}`);const invalidDocument = parse(`subscription { a b }`);const invalidErrors = validate(schema, invalidDocument, [SingleFieldSubscriptionsRule,]);invalidErrors.length; // => 1const validDocument = parse(`subscription { a }`);const validErrors = validate(schema, validDocument, [SingleFieldSubscriptionsRule,]);validErrors; // => []
function StreamDirectiveOnListFieldRule
StreamDirectiveOnListFieldRule: (context: ValidationContext) => ASTVisitor;Stream directives are used on list fields
A GraphQL document is only valid if stream directives are used on list fields.
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import { validate, StreamDirectiveOnListFieldRule } from 'graphql/validation';const schema = buildSchema(`type Query {name: Stringfriends: [String]}`);const invalidDocument = parse('{ name @stream(initialCount: 0) }');const validDocument = parse('{ friends @stream(initialCount: 0) }');validate(schema, invalidDocument, [StreamDirectiveOnListFieldRule]).length; // => 1validate(schema, validDocument, [StreamDirectiveOnListFieldRule]); // => []
function stripIgnoredCharacters
stripIgnoredCharacters: (source: string | Source) => string;Strips characters that are not significant to the validity or execution of a GraphQL document: - UnicodeBOM - WhiteSpace - LineTerminator - Comment - Comma - BlockString indentation
Note: It is required to have a delimiter character between neighboring non-punctuator tokens and this function always uses single space as delimiter.
It is guaranteed that both input and output documents if parsed would result in the exact same AST except for nodes location.
Warning: It is guaranteed that this function will always produce stable results. However, it's not guaranteed that it will stay the same between different releases due to bugfixes or changes in the GraphQL specification.
Parameter source
The GraphQL source text or source object.
Returns
A semantically equivalent GraphQL source string without ignored characters.
Example 1
Query source
query SomeQuery($foo: String!, $bar: String) {someField(foo: $foo, bar: $bar) {ab {cd}}}Becomes:
query SomeQuery($foo:String!$bar:String){someField(foo:$foo bar:$bar){a b{c d}}}Example 2
SDL source
"""Type description"""type Foo {"""Field description"""bar: String}Becomes:
"""Type description""" type Foo{"""Field description""" bar:String}Example 3
import { stripIgnoredCharacters } from 'graphql/utilities';const source = stripIgnoredCharacters('query Example { name }');source; // => 'query Example{name}'
function subscribe
subscribe: ( args: ExecutionArgs) => PromiseOrValue<AsyncGenerator<ExecutionResult, void, void> | ExecutionResult>;Implements the "Subscribe" algorithm described in the GraphQL specification.
Returns either an AsyncGenerator (if successful), an ExecutionResult (error), or a Promise for one of those results. The call will throw immediately if the schema is invalid or the selected operation is not a subscription.
GraphQL request errors, including missing operations and variable coercion errors, return or resolve to a GraphQL Response (ExecutionResult) with descriptive errors and no data.
If the source stream could not be created due to faulty subscription resolver logic, a non-async-iterable resolver result, or a system error, the function will return or resolve to a single ExecutionResult containing
errorsand nodata.If the operation succeeded, the function returns or resolves to an AsyncGenerator, which yields a stream of ExecutionResults representing the response stream.
This function does not support incremental delivery (
@deferand@stream). If an operation which would defer or stream data is executed with this function, a field error will be raised at the location of the@deferor@streamdirective.Accepts an object with named arguments.
Parameter args
Execution arguments for the subscription operation.
Returns
A response stream for a valid subscription, or an execution result containing errors.
Example 1
// Use a same-named rootValue function to provide the source event stream.import assert from 'node:assert';import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import { subscribe } from 'graphql/execution';async function* greetings() {yield { greeting: 'Hello' };yield { greeting: 'Bonjour' };}const schema = buildSchema(`type Query {noop: String}type Subscription {greeting: String}`);const result = await subscribe({schema,document: parse('subscription { greeting }'),rootValue: { greeting: () => greetings() },});assert('next' in result);const firstPayload = await result.next();firstPayload.value; // => { data: { greeting: 'Hello' } }Example 2
// This variant supplies events through a custom subscribeFieldResolver.import assert from 'node:assert';import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import { subscribe } from 'graphql/execution';async function* defaultGreetings() {yield { greeting: 'Hello' };}async function* frenchGreetings() {yield { greeting: 'Bonjour' };}const schema = buildSchema(`type Query {noop: String}type Subscription {greeting(locale: String): String}`);const result = await subscribe({schema,document: parse('subscription Greeting($locale: String) { greeting(locale: $locale) }',),rootValue: {greeting: (args, contextValue) => {const locale = args.locale ?? contextValue.defaultLocale;return locale === 'fr' ? frenchGreetings() : defaultGreetings();},},contextValue: { defaultLocale: 'fr' },variableValues: { locale: 'fr' },operationName: 'Greeting',subscribeFieldResolver: (rootValue, args, contextValue, info) => {args.locale; // => 'fr'return rootValue[info.fieldName](args, contextValue);},});assert('next' in result);const firstPayload = await result.next();firstPayload.value; // => { data: { greeting: 'Bonjour' } }
function syntaxError
syntaxError: ( source: Source, position: number, description: string) => GraphQLError;Produces a GraphQLError representing a syntax error, containing useful descriptive information about the syntax error's position in the source.
Parameter source
The GraphQL source containing the syntax error.
Parameter position
Character offset where the syntax error was encountered.
Parameter description
Human-readable description of the syntax error.
Returns
A GraphQLError located at the syntax error position.
Example 1
import { Source } from 'graphql/language';import { syntaxError } from 'graphql/error';const error = syntaxError(new Source('query {'), 7, 'Expected Name');error.message; // => 'Syntax Error: Expected Name'error.locations; // => [{ line: 1, column: 8 }]
function typeFromAST
typeFromAST: { (schema: GraphQLSchema, typeNode: NamedTypeNode): GraphQLNamedType | undefined; (schema: GraphQLSchema, typeNode: ListTypeNode): GraphQLList<any>; (schema: GraphQLSchema, typeNode: NonNullTypeNode): GraphQLNonNull<any>; (schema: GraphQLSchema, typeNode: TypeNode): GraphQLType;};Given a Schema and an AST node describing a type, return a GraphQLType definition which applies to that type. For example, if provided the parsed AST node for
[User], a GraphQLList instance will be returned, containing the type called "User" found in the schema. If a type called "User" is not found in the schema, then undefined will be returned.Parameter schema
GraphQL schema to use.
Parameter typeNode
The GraphQL type AST node to resolve.
Returns
The GraphQL type referenced by the AST node, or undefined if it cannot be resolved.
Example 1
import { parseType } from 'graphql/language';import { buildSchema, typeFromAST } from 'graphql/utilities';const schema = buildSchema(`type Query {name: String}`);typeFromAST(schema, parseType('String'))?.toString(); // => 'String'typeFromAST(schema, parseType('Missing')); // => undefinedResolves a list type AST node against a schema.
Parameter schema
GraphQL schema to use.
Parameter typeNode
The list type AST node to resolve.
Returns
The GraphQL list type referenced by the AST node, or undefined if it cannot be resolved.
Example 1
import { parseType } from 'graphql/language';import { buildSchema, typeFromAST } from 'graphql/utilities';const schema = buildSchema(`type Query {tags: [String]}`);typeFromAST(schema, parseType('[String]'))?.toString(); // => '[String]'typeFromAST(schema, parseType('[Missing]')); // => undefinedResolves a non-null type AST node against a schema.
Parameter schema
GraphQL schema to use.
Parameter typeNode
The non-null type AST node to resolve.
Returns
The GraphQL non-null type referenced by the AST node, or undefined if it cannot be resolved.
Example 1
import { parseType } from 'graphql/language';import { buildSchema, typeFromAST } from 'graphql/utilities';const schema = buildSchema(`type Query {name: String!}`);typeFromAST(schema, parseType('String!'))?.toString(); // => 'String!'typeFromAST(schema, parseType('[String!]!'))?.toString(); // => '[String!]!'Resolves a type AST node against a schema.
Parameter schema
GraphQL schema to use.
Parameter typeNode
The GraphQL type AST node to resolve.
Returns
The GraphQL type referenced by the AST node, or undefined if it cannot be resolved.
Example 1
import { parseType } from 'graphql/language';import { buildSchema, typeFromAST } from 'graphql/utilities';const schema = buildSchema(`type User {name: String}type Query {users: [User!]!}`);typeFromAST(schema, parseType('User'))?.toString(); // => 'User'typeFromAST(schema, parseType('[User!]!'))?.toString(); // => '[User!]!'typeFromAST(schema, parseType('Missing')); // => undefined
function UniqueArgumentDefinitionNamesRule
UniqueArgumentDefinitionNamesRule: (context: SDLValidationContext) => ASTVisitor;Unique argument definition names
A GraphQL Object or Interface type is only valid if all its fields have uniquely named arguments. A GraphQL Directive is only valid if all its arguments are uniquely named.
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema } from 'graphql';import { UniqueArgumentDefinitionNamesRule } from 'graphql/validation';const invalidSDL = `type Query { field(arg: String, arg: Int): String }`;UniqueArgumentDefinitionNamesRule.name; // => 'UniqueArgumentDefinitionNamesRule'buildSchema(invalidSDL); // throws an errorconst validSDL = `type Query { field(arg: String): String }`;buildSchema(validSDL); // does not throw
function UniqueArgumentNamesRule
UniqueArgumentNamesRule: (context: ASTValidationContext) => ASTVisitor;Unique argument names
A GraphQL field or directive is only valid if all supplied arguments are uniquely named.
See https://spec.graphql.org/draft/#sec-Argument-Names
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { UniqueArgumentNamesRule } from 'graphql/validation';const schema = buildSchema(`type Query {field(arg: String): String}`);const invalidDocument = parse(`{ field(arg: "1", arg: "2") }`);const invalidErrors = validate(schema, invalidDocument, [UniqueArgumentNamesRule,]);invalidErrors.length; // => 1const validDocument = parse(`{ field(arg: "1") }`);const validErrors = validate(schema, validDocument, [UniqueArgumentNamesRule]);validErrors; // => []
function UniqueDirectiveNamesRule
UniqueDirectiveNamesRule: (context: SDLValidationContext) => ASTVisitor;Unique directive names
A GraphQL document is only valid if all defined directives have unique names.
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema } from 'graphql';import { UniqueDirectiveNamesRule } from 'graphql/validation';const invalidSDL = `directive @tag on FIELD directive @tag on QUERY type Query { name: String }`;UniqueDirectiveNamesRule.name; // => 'UniqueDirectiveNamesRule'buildSchema(invalidSDL); // throws an errorconst validSDL = `directive @tag on FIELD type Query { name: String }`;buildSchema(validSDL); // does not throw
function UniqueDirectivesPerLocationRule
UniqueDirectivesPerLocationRule: ( context: ValidationContext | SDLValidationContext) => ASTVisitor;Unique directive names per location
A GraphQL document is only valid if all non-repeatable directives at a given location are uniquely named.
See https://spec.graphql.org/draft/#sec-Directives-Are-Unique-Per-Location
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { UniqueDirectivesPerLocationRule } from 'graphql/validation';const schema = buildSchema(`type Query {name: String}`);const invalidDocument = parse(`{ name @include(if: true) @include(if: false) }`);const invalidErrors = validate(schema, invalidDocument, [UniqueDirectivesPerLocationRule,]);invalidErrors.length; // => 1const validDocument = parse(`{ name @include(if: true) }`);const validErrors = validate(schema, validDocument, [UniqueDirectivesPerLocationRule,]);validErrors; // => []
function UniqueEnumValueNamesRule
UniqueEnumValueNamesRule: (context: SDLValidationContext) => ASTVisitor;Unique enum value names
A GraphQL enum type is only valid if all its values are uniquely named.
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema } from 'graphql';import { UniqueEnumValueNamesRule } from 'graphql/validation';const invalidSDL = `enum Status { ACTIVE ACTIVE } type Query { status: Status }`;UniqueEnumValueNamesRule.name; // => 'UniqueEnumValueNamesRule'buildSchema(invalidSDL); // throws an errorconst validSDL = `enum Status { ACTIVE INACTIVE } type Query { status: Status }`;buildSchema(validSDL); // does not throw
function UniqueFieldDefinitionNamesRule
UniqueFieldDefinitionNamesRule: (context: SDLValidationContext) => ASTVisitor;Unique field definition names
A GraphQL complex type is only valid if all its fields are uniquely named.
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema } from 'graphql';import { UniqueFieldDefinitionNamesRule } from 'graphql/validation';const invalidSDL = `type Query { name: String name: String }`;UniqueFieldDefinitionNamesRule.name; // => 'UniqueFieldDefinitionNamesRule'buildSchema(invalidSDL); // throws an errorconst validSDL = `type Query { name: String other: String }`;buildSchema(validSDL); // does not throw
function UniqueFragmentNamesRule
UniqueFragmentNamesRule: (context: ASTValidationContext) => ASTVisitor;Unique fragment names
A GraphQL document is only valid if all defined fragments have unique names.
See https://spec.graphql.org/draft/#sec-Fragment-Name-Uniqueness
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { UniqueFragmentNamesRule } from 'graphql/validation';const schema = buildSchema(`type Query {name: String}`);const invalidDocument = parse(`fragment A on Query { name } fragment A on Query { name } query { ...A }`);const invalidErrors = validate(schema, invalidDocument, [UniqueFragmentNamesRule,]);invalidErrors.length; // => 1const validDocument = parse(`fragment A on Query { name } query { ...A }`);const validErrors = validate(schema, validDocument, [UniqueFragmentNamesRule]);validErrors; // => []
function UniqueInputFieldNamesRule
UniqueInputFieldNamesRule: (context: ASTValidationContext) => ASTVisitor;Unique input field names
A GraphQL input object value is only valid if all supplied fields are uniquely named.
See https://spec.graphql.org/draft/#sec-Input-Object-Field-Uniqueness
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { UniqueInputFieldNamesRule } from 'graphql/validation';const schema = buildSchema(`input Filter {name: String}type Query {search(filter: Filter): String}`);const invalidDocument = parse(`{ search(filter: { name: "a", name: "b" }) }`);const invalidErrors = validate(schema, invalidDocument, [UniqueInputFieldNamesRule,]);invalidErrors.length; // => 1const validDocument = parse(`{ search(filter: { name: "a" }) }`);const validErrors = validate(schema, validDocument, [UniqueInputFieldNamesRule,]);validErrors; // => []
function UniqueOperationNamesRule
UniqueOperationNamesRule: (context: ASTValidationContext) => ASTVisitor;Unique operation names
A GraphQL document is only valid if all defined operations have unique names.
See https://spec.graphql.org/draft/#sec-Operation-Name-Uniqueness
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { UniqueOperationNamesRule } from 'graphql/validation';const schema = buildSchema(`type Query {name: String}`);const invalidDocument = parse(`query Same { name } query Same { name }`);const invalidErrors = validate(schema, invalidDocument, [UniqueOperationNamesRule,]);invalidErrors.length; // => 1const validDocument = parse(`query One { name } query Two { name }`);const validErrors = validate(schema, validDocument, [UniqueOperationNamesRule]);validErrors; // => []
function UniqueOperationTypesRule
UniqueOperationTypesRule: (context: SDLValidationContext) => ASTVisitor;Unique operation types
A GraphQL document is only valid if it has only one type per operation.
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema } from 'graphql';import { UniqueOperationTypesRule } from 'graphql/validation';const invalidSDL = `schema { query: Query query: Other } type Query { name: String } type Other { name: String }`;UniqueOperationTypesRule.name; // => 'UniqueOperationTypesRule'buildSchema(invalidSDL); // throws an errorconst validSDL = `schema { query: Query } type Query { name: String }`;buildSchema(validSDL); // does not throw
function UniqueTypeNamesRule
UniqueTypeNamesRule: (context: SDLValidationContext) => ASTVisitor;Unique type names
A GraphQL document is only valid if all defined types have unique names.
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema } from 'graphql';import { UniqueTypeNamesRule } from 'graphql/validation';const invalidSDL = `type Query { name: String } type Query { other: String }`;UniqueTypeNamesRule.name; // => 'UniqueTypeNamesRule'buildSchema(invalidSDL); // throws an errorconst validSDL = `type Query { name: String } type Other { name: String }`;buildSchema(validSDL); // does not throw
function UniqueVariableNamesRule
UniqueVariableNamesRule: (context: ASTValidationContext) => ASTVisitor;Unique variable names
A GraphQL operation is only valid if all its variables are uniquely named.
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { UniqueVariableNamesRule } from 'graphql/validation';const schema = buildSchema(`type Query {field(arg: ID): String}`);const invalidDocument = parse(`query ($id: ID, $id: ID) { field(arg: $id) }`);const invalidErrors = validate(schema, invalidDocument, [UniqueVariableNamesRule,]);invalidErrors.length; // => 1const validDocument = parse(`query ($id: ID) { field(arg: $id) }`);const validErrors = validate(schema, validDocument, [UniqueVariableNamesRule]);validErrors; // => []
function validate
validate: ( schema: GraphQLSchema, documentAST: DocumentNode, rules?: ReadonlyArray<ValidationRule>, options?: ValidationOptions) => ReadonlyArray<GraphQLError>;Implements the "Validation" section of the spec.
Validation runs synchronously, returning an array of encountered errors, or an empty array if no errors were encountered and the document is valid.
A list of specific validation rules may be provided. If not provided, the default list of rules defined by the GraphQL specification will be used.
Each validation rule is a function that returns a visitor (see the language/visitor API). Visitor methods are expected to return GraphQLErrors, or Arrays of GraphQLErrors when invalid.
Validate will stop validation after a
maxErrorslimit has been reached. Attackers can send pathologically invalid queries to induce a DoS attack, somaxErrorsdefaults to 100 errors.Parameter schema
Schema to validate against.
Parameter documentAST
Document AST to validate.
Parameter rules
Validation rules to apply.
Parameter options
Validation options, including error limits and suggestions.
Returns
Validation errors, or an empty array when the document is valid.
Example 1
// Validate with the default specified rules.import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import { validate } from 'graphql/validation';const schema = buildSchema(`type Query {fullName: String}`);validate(schema, parse('{ greeting }')); // => []const errors = validate(schema, parse('{ missing }'));errors[0].message; // => 'Cannot query field "missing" on type "Query".'Example 2
// This variant uses a custom rule list and validation options.import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import { FieldsOnCorrectTypeRule, validate } from 'graphql/validation';const schema = buildSchema(`type Query {greeting: String}`);const document = parse('{ missingOne missingTwo }');const errors = validate(schema, document, [FieldsOnCorrectTypeRule], {maxErrors: 1,});errors.length; // => 2errors[1].message; // => 'Too many validation errors, error limit reached. Validation aborted.'const hiddenSuggestionErrors = validate(schema,parse('{ name }'),[FieldsOnCorrectTypeRule],{ hideSuggestions: true },);hiddenSuggestionErrors[0].message; // => 'Cannot query field "name" on type "Query".'
function validateExecutionArgs
validateExecutionArgs: ( args: ExecutionArgs) => ReadonlyArray<GraphQLError> | ValidatedExecutionArgs;Validates the arguments passed to execute, subscribe, and their lower-level helpers.
Throws if the schema is invalid. GraphQL request errors, including variable coercion errors, are returned as a GraphQLError array.
Parameter args
Execution arguments to validate.
Returns
Validated execution arguments, or validation errors.
Example 1
import assert from 'node:assert';import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import { validateExecutionArgs } from 'graphql/execution';const schema = buildSchema(`interface Named {name: String!}type User implements Named {name: String!}type Query {viewer: Named}`);const abortController = new AbortController();const validatedArgs = validateExecutionArgs({schema,document: parse('query Viewer { viewer { __typename name } }'),rootValue: { viewer: { kind: 'user', name: 'Ada' } },contextValue: { locale: 'en' },operationName: 'Viewer',fieldResolver: (source, _args, contextValue, info) => {contextValue.locale; // => 'en'return source[info.fieldName];},typeResolver: (value) => {return value.kind === 'user' ? 'User' : undefined;},hideSuggestions: true,abortSignal: abortController.signal,enableEarlyExecution: true,hooks: {asyncWorkFinished: () => {},},options: { maxCoercionErrors: 1 },});assert('operation' in validatedArgs);validatedArgs.operation.name?.value; // => 'Viewer'validatedArgs.hideSuggestions; // => true
function validateInputLiteral
validateInputLiteral: ( valueNode: ValueNode, type: GraphQLInputType, onError: (error: GraphQLError, path: ReadonlyArray<string | number>) => void, variables?: Maybe<VariableValues>, fragmentVariableValues?: Maybe<FragmentVariableValues>, hideSuggestions?: Maybe<boolean>) => void;Validate that the provided input literal is allowed for this type, collecting all errors via a callback function.
If variable values are not provided, the literal is validated statically (not assuming that those variables are missing runtime values).
Parameter valueNode
GraphQL value AST node to validate.
Parameter type
GraphQL input type to validate the literal against.
Parameter onError
Callback invoked for each validation error and path.
Parameter variables
Operation variable values returned by getVariableValues.
Parameter fragmentVariableValues
Fragment variable values for the current fragment scope.
Parameter hideSuggestions
Whether suggestion text should be omitted from errors.
Returns
Nothing.
Example 1
// Validate literal input values and collect literal paths.import { parseValue } from 'graphql/language';import {GraphQLInputObjectType,GraphQLInt,GraphQLNonNull,} from 'graphql/type';import { validateInputLiteral } from 'graphql/utilities';const ReviewInput = new GraphQLInputObjectType({name: 'ReviewInput',fields: {stars: { type: new GraphQLNonNull(GraphQLInt) },},});const errors = [];validateInputLiteral(parseValue('{ stars: "bad" }'),ReviewInput,(error, path) => {errors.push({ message: error.message, path });},);errors; // => [ { message: 'Expected value of type "Int", found: "bad".', path: ['stars'] } ]Example 2
// This variant resolves variable references using VariableValues from getVariableValues().import assert from 'node:assert';import { parse, parseValue } from 'graphql/language';import { GraphQLInt } from 'graphql/type';import { getVariableValues } from 'graphql/execution';import { buildSchema, validateInputLiteral } from 'graphql/utilities';const schema = buildSchema(`type Query {review(stars: Int): String}`);const document = parse('query ($stars: Int = 5) { review(stars: $stars) }');const operation = document.definitions[0];const result = getVariableValues(schema, operation.variableDefinitions, {stars: '4',});assert('variableValues' in result);const errors = [];validateInputLiteral(parseValue('$stars'),GraphQLInt,(error) => errors.push(error.message),result.variableValues,undefined,true,);errors; // => []
function validateInputValue
validateInputValue: ( inputValue: unknown, type: GraphQLInputType, onError: (error: GraphQLError, path: ReadonlyArray<string | number>) => void, hideSuggestions?: Maybe<boolean>) => void;Validate that the provided input value is allowed for this type, collecting all errors via a callback function.
Parameter inputValue
JavaScript value to validate.
Parameter type
GraphQL input type to validate the value against.
Parameter onError
Callback invoked for each validation error and path.
Parameter hideSuggestions
Whether suggestion text should be omitted from errors.
Returns
Nothing.
Example 1
// Collect validation errors with their input paths.import {GraphQLInputObjectType,GraphQLInt,GraphQLNonNull,} from 'graphql/type';import { validateInputValue } from 'graphql/utilities';const ReviewInput = new GraphQLInputObjectType({name: 'ReviewInput',fields: {stars: { type: new GraphQLNonNull(GraphQLInt) },},});const errors = [];validateInputValue({ stars: 'bad' }, ReviewInput, (error, path) => {errors.push({ message: error.message, path });});errors; // => [ { message: 'Expected value of type "Int", found: "bad".', path: ['stars'] } ]Example 2
// This variant hides suggestion text for unknown input fields.import { GraphQLInputObjectType, GraphQLString } from 'graphql/type';import { validateInputValue } from 'graphql/utilities';const ReviewInput = new GraphQLInputObjectType({name: 'ReviewInput',fields: {comment: { type: GraphQLString },},});const errors = [];validateInputValue({ rating: 'extra field' },ReviewInput,(error) => {errors.push(error.message);},true,);errors; // => ['Expected value of type "ReviewInput" not to include unknown field "rating", found: { rating: "extra field" }.']
function validateSchema
validateSchema: (schema: GraphQLSchema) => ReadonlyArray<GraphQLError>;Implements the "Type Validation" sub-sections of the specification's "Type System" section.
Validation runs synchronously, returning an array of encountered errors, or an empty array if no errors were encountered and the Schema is valid.
Parameter schema
GraphQL schema to use.
Returns
Schema validation errors, or an empty array when the schema is valid.
Example 1
import { validateSchema } from 'graphql/type';import { buildSchema } from 'graphql/utilities';const schema = buildSchema(`type Query {name: String}`);const errors = validateSchema(schema);errors; // => []
function validateSubscriptionArgs
validateSubscriptionArgs: ( args: ExecutionArgs) => ReadonlyArray<GraphQLError> | ValidatedSubscriptionArgs;Validates execution arguments for a subscription operation.
Throws if the schema is invalid or the selected operation is not a subscription. GraphQL request errors, including variable coercion errors, are returned as a GraphQLError array.
Parameter args
Execution arguments to validate.
Returns
Validated subscription execution arguments, or validation errors.
Example 1
import assert from 'node:assert';import { parse } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import { validateSubscriptionArgs } from 'graphql/execution';const schema = buildSchema(`type Query {noop: String}type Subscription {greeting: String}`);const validatedArgs = validateSubscriptionArgs({schema,document: parse('subscription { greeting }'),});assert('operation' in validatedArgs);validatedArgs.operation.operation; // => 'subscription'
function valueFromAST
valueFromAST: ( valueNode: Maybe<ValueNode>, type: GraphQLInputType, variables?: Maybe<ObjMap<unknown>>) => unknown;Produces a JavaScript value given a GraphQL Value AST.
A GraphQL type must be provided, which will be used to interpret different GraphQL Value literals.
Returns
undefinedwhen the value could not be validly coerced according to the provided type.This deprecated function will be removed in v18. Use
coerceInputLiteral()instead.| GraphQL Value | JSON Value | | -------------------- | ------------- | | Input Object | Object | | List | Array | | Boolean | Boolean | | String | String | | Int / Float | Number | | Enum Value | Unknown | | NullValue | null |
Parameter valueNode
GraphQL value AST node to convert.
Parameter type
The GraphQL type to inspect.
Parameter variables
Optional runtime variable values keyed by variable name.
Returns
The coerced JavaScript value, or undefined if the AST value cannot be coerced to the type.
Example 1
// Coerce literal values without variables.import { parseValue } from 'graphql/language';import {GraphQLInputObjectType,GraphQLInt,GraphQLList,GraphQLNonNull,GraphQLString,} from 'graphql/type';import { valueFromAST } from 'graphql/utilities';const ReviewInput = new GraphQLInputObjectType({name: 'ReviewInput',fields: {stars: { type: new GraphQLNonNull(GraphQLInt) },tags: { type: new GraphQLList(GraphQLString) },},});valueFromAST(parseValue('{ stars: 5, tags: ["featured"] }'), ReviewInput); // => { stars: 5, tags: ['featured'] }valueFromAST(parseValue('{ stars: "bad" }'), ReviewInput); // => undefinedExample 2
// This variant resolves variable references from runtime values.import { parseValue } from 'graphql/language';import { GraphQLInt } from 'graphql/type';import { valueFromAST } from 'graphql/utilities';valueFromAST(parseValue('$stars'), GraphQLInt, { stars: 5 }); // => 5valueFromAST(parseValue('$stars'), GraphQLInt, {}); // => undefinedDeprecated
use
coerceInputLiteral()instead - will be removed in v18
function valueFromASTUntyped
valueFromASTUntyped: ( valueNode: ValueNode, variables?: Maybe<ObjMap<unknown>>) => unknown;Produces a JavaScript value given a GraphQL Value AST.
Because no GraphQL type is provided, the returned JavaScript value reflects the provided GraphQL value AST.
| GraphQL Value | JavaScript Value | | -------------------- | ---------------- | | Input Object | Object | | List | Array | | Boolean | Boolean | | String / Enum | String | | Int / Float | Number | | Null | null |
Parameter valueNode
GraphQL value AST node to convert.
Parameter variables
Optional runtime variable values keyed by variable name.
Returns
JavaScript value represented by the GraphQL value AST.
Example 1
import { parseValue } from 'graphql/language';import { valueFromASTUntyped } from 'graphql/utilities';const value = valueFromASTUntyped(parseValue('[1, 2, 3]'));value; // => [1, 2, 3]valueFromASTUntyped(parseValue('$name'), { name: 'Ada' }); // => 'Ada'
function ValuesOfCorrectTypeRule
ValuesOfCorrectTypeRule: (context: ValidationContext) => ASTVisitor;Value literals of correct type
A GraphQL document is only valid if all value literals are of the type expected at their position.
See https://spec.graphql.org/draft/#sec-Values-of-Correct-Type
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { ValuesOfCorrectTypeRule } from 'graphql/validation';const schema = buildSchema(`type Query {count(limit: Int): Int}`);const invalidDocument = parse(`{ count(limit: "many") }`);const invalidErrors = validate(schema, invalidDocument, [ValuesOfCorrectTypeRule,]);invalidErrors.length; // => 1const validDocument = parse(`{ count(limit: 1) }`);const validErrors = validate(schema, validDocument, [ValuesOfCorrectTypeRule]);validErrors; // => []
function valueToLiteral
valueToLiteral: ( value: unknown, type: GraphQLInputType) => ConstValueNode | undefined;Produces a GraphQL Value AST given a JavaScript value and a GraphQL type.
Scalar types are converted by calling the
valueToLiteralmethod on that type, otherwise the default scalarvalueToLiteralmethod is used, defined below.Provided value is a non-coerced "input" value. This function does not perform any coercion, however it does perform validation. Provided values which are invalid for the given type will result in an
undefinedreturn value.Parameter value
JavaScript value to convert.
Parameter type
GraphQL input type to convert the value against.
Returns
A GraphQL value AST, or undefined if the value is invalid.
Example 1
import { print } from 'graphql/language';import {GraphQLInputObjectType,GraphQLInt,GraphQLList,GraphQLNonNull,GraphQLString,} from 'graphql/type';import { valueToLiteral } from 'graphql/utilities';const ReviewInput = new GraphQLInputObjectType({name: 'ReviewInput',fields: {stars: { type: new GraphQLNonNull(GraphQLInt) },tags: { type: new GraphQLList(GraphQLString) },},});const literal = valueToLiteral({ stars: 5, tags: ['featured'] }, ReviewInput);print(literal); // => '{ stars: 5, tags: ["featured"] }'valueToLiteral({ tags: ['missing stars'] }, ReviewInput); // => undefined
function VariablesAreInputTypesRule
VariablesAreInputTypesRule: (context: ValidationContext) => ASTVisitor;Variables are input types
A GraphQL operation is only valid if all the variables it defines are of input types (scalar, enum, or input object).
See https://spec.graphql.org/draft/#sec-Variables-Are-Input-Types
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { VariablesAreInputTypesRule } from 'graphql/validation';const schema = buildSchema(`type Query {field(arg: ID): String}type User {name: String}`);const invalidDocument = parse(`query ($user: User) { field(arg: "1") }`);const invalidErrors = validate(schema, invalidDocument, [VariablesAreInputTypesRule,]);invalidErrors.length; // => 1const validDocument = parse(`query ($id: ID) { field(arg: $id) }`);const validErrors = validate(schema, validDocument, [VariablesAreInputTypesRule,]);validErrors; // => []
function VariablesInAllowedPositionRule
VariablesInAllowedPositionRule: (context: ValidationContext) => ASTVisitor;Variables in allowed position
Variable usages must be compatible with the arguments they are passed to.
See https://spec.graphql.org/draft/#sec-All-Variable-Usages-are-Allowed
Parameter context
The validation context used while checking the document.
Returns
A visitor that reports validation errors for this rule.
Example 1
import { buildSchema, parse, validate } from 'graphql';import { VariablesInAllowedPositionRule } from 'graphql/validation';const schema = buildSchema(`type Query {field(arg: ID!): String}`);const invalidDocument = parse(`query ($id: String) { field(arg: $id) }`);const invalidErrors = validate(schema, invalidDocument, [VariablesInAllowedPositionRule,]);invalidErrors.length; // => 1const validDocument = parse(`query ($id: ID!) { field(arg: $id) }`);const validErrors = validate(schema, validDocument, [VariablesInAllowedPositionRule,]);validErrors; // => []
function visit
visit: { <N extends ASTNode>( root: N, visitor: ASTVisitor, visitorKeys?: ASTVisitorKeyMap ): N; <R>(root: ASTNode, visitor: ASTReducer<R>, visitorKeys?: ASTVisitorKeyMap): R;};visit() will walk through an AST using a depth-first traversal, calling the visitor's enter function at each node in the traversal, and calling the leave function after visiting that node and all of its child nodes.
By returning different values from the enter and leave functions, the behavior of the visitor can be altered, including skipping over a sub-tree of the AST (by returning false), editing the AST by returning a value or null to remove the value, or to stop the whole traversal by returning BREAK.
When using visit() to edit an AST, the original AST will not be modified, and a new version of the AST with the changes applied will be returned from the visit function.
Parameter root
The AST node at which to start traversal.
Parameter visitor
The visitor or reducer functions to call while traversing.
Parameter visitorKeys
Optional map of child keys to visit for each AST node kind.
Returns
The original AST, an edited AST, or a reduced value depending on the visitor.
Example 1
// Return values control traversal: undefined makes no change, false skips// a subtree, BREAK stops traversal, null removes a node, and any other// value replaces the current node.import { Kind, parse, print, visit } from 'graphql/language';const document = parse('{ hero { name } }');const editedAST = visit(document, {Field: (node) => {if (node.name.value === 'hero') {return {...node,name: { kind: Kind.NAME, value: 'human' },};}},});print(editedAST); // => '{\n human {\n name\n }\n}'Example 2
// A named visitor function runs when entering nodes of that kind.import { parse, visit } from 'graphql/language';const document = parse('{ hero { name } }');const fieldNames = [];visit(document, {Field: (node) => {fieldNames.push(node.name.value);},});fieldNames; // => ['hero', 'name']Example 3
// A named visitor object can provide separate enter and leave handlers for// nodes of that kind.import { parse, visit } from 'graphql/language';const document = parse('{ hero { name } }');const events = [];visit(document, {Field: {enter: (node) => {events.push(`enter:${node.name.value}`);},leave: (node) => {events.push(`leave:${node.name.value}`);},},});events; // => ['enter:hero', 'enter:name', 'leave:name', 'leave:hero']Example 4
// Generic enter and leave handlers run for every node.import { parse, visit } from 'graphql/language';const document = parse('{ hero { name } }');let enterCount = 0;let leaveCount = 0;visit(document, {enter: (node) => {enterCount += 1;},leave: (node) => {leaveCount += 1;},});enterCount; // => leaveCountenterCount > 0; // => trueTraverses an AST with reducer callbacks and returns the reduced value.
Parameter root
The AST node where traversal starts.
Parameter visitor
Reducer callbacks to invoke during traversal.
Parameter visitorKeys
Optional mapping of child keys for each AST node kind.
Returns
The value produced by the reducer visitor.
Example 1
// A reducer visitor returns values from leave handlers to build a reduced// result instead of returning an edited AST.import { parse, visit } from 'graphql/language';const document = parse('{ hero { name } }');const printed = visit(document, {Name: {leave: (node) => {return node.value;},},Field: {leave: (node) => {return node.selectionSet == null? node.name: `${node.name} { ${node.selectionSet} }`;},},SelectionSet: {leave: (node) => {return node.selections.join(' ');},},OperationDefinition: {leave: (node) => {return node.selectionSet;},},Document: {leave: (node) => {return node.definitions.join('\n');},},});printed; // => 'hero { name }'
function visitInParallel
visitInParallel: (visitors: ReadonlyArray<ASTVisitor>) => ASTVisitor;Creates a new visitor instance which delegates to many visitors to run in parallel. Each visitor will be visited for each node before moving on.
If a prior visitor edits a node, no following visitors will see that node.
Parameter visitors
The visitors to merge into one parallel visitor.
Returns
A visitor that delegates traversal to each provided visitor.
Example 1
import { parse, visit, visitInParallel } from 'graphql/language';const document = parse('{ hero { name } }');const events = [];visit(document,visitInParallel([{Field: (node) => {events.push(`field:${node.name.value}`);},},{Name: (node) => {events.push(`name:${node.value}`);},},]),);events; // => ['field:hero', 'name:hero', 'field:name', 'name:name']
function visitWithTypeInfo
visitWithTypeInfo: (typeInfo: TypeInfo, visitor: ASTVisitor) => ASTVisitor;Creates a new visitor instance which maintains a provided TypeInfo instance along with visiting visitor.
Parameter typeInfo
TypeInfo instance to update during traversal.
Parameter visitor
Visitor callbacks to wrap with TypeInfo updates.
Returns
A visitor that keeps TypeInfo in sync while delegating callbacks.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';const schema = buildSchema(`type Query {greeting: String}`);const typeInfo = new TypeInfo(schema);const fields = [];visit(parse('{ greeting }'),visitWithTypeInfo(typeInfo, {Field: (node) => {fields.push({name: node.name.value,parentType: String(typeInfo.getParentType()),type: String(typeInfo.getType()),});},}),);fields; // => [{ name: 'greeting', parentType: 'Query', type: 'String' }]
Classes
class AbortedGraphQLExecutionError
class AbortedGraphQLExecutionError<TResult> extends Error {}Error thrown when GraphQL execution is aborted.
constructor
constructor(reason: {}, result: PromiseOrValue<TResult>);Creates an error for an aborted GraphQL execution.
Parameter reason
Abort reason used as the error cause.
Parameter result
Partial execution result available when execution stopped.
Example 1
import { AbortedGraphQLExecutionError } from 'graphql/execution';const cause = new Error('Request cancelled.');const partialResult = { data: { viewer: null } };const error = new AbortedGraphQLExecutionError(cause, partialResult);error.message; // => 'Request cancelled.'error.cause; // => causeerror.abortedResult; // => partialResult
property [Symbol.toStringTag]
readonly [Symbol.toStringTag]: string;Returns the value used by
Object.prototype.toString.Returns
The built-in string tag for this object.
property abortedResult
readonly abortedResult: PromiseOrValue<TResult>;Partial execution result available when execution was aborted.
class GraphQLArgument
class GraphQLArgument implements GraphQLSchemaElement {}A resolved GraphQL argument definition.
constructor
constructor( parent: GraphQLField<any, any, any> | GraphQLDirective, name: string, config: GraphQLArgumentConfig);Creates a resolved GraphQL argument definition.
Parameter parent
Field or directive that owns this argument.
Parameter name
Argument name.
Parameter config
Argument configuration.
Example 1
import {GraphQLArgument,GraphQLField,GraphQLObjectType,GraphQLString,} from 'graphql/type';const Query = new GraphQLObjectType({ name: 'Query', fields: {} });const field = new GraphQLField(Query, 'greeting', { type: GraphQLString });const arg = new GraphQLArgument(field, 'name', {type: GraphQLString,default: { value: 'world' },});arg.parent; // => fieldarg.name; // => 'name'arg.default.value; // => 'world'
property [Symbol.toStringTag]
readonly [Symbol.toStringTag]: string;Returns the value used by
Object.prototype.toString.Returns
The built-in string tag for this object.
property astNode
astNode: InputValueDefinitionNode;AST node from which this schema element was built, if available.
property default
default: GraphQLDefaultInput;Default value represented as either a runtime value or a GraphQL literal.
property defaultValue
defaultValue: {};Deprecated legacy default value used when no explicit value is supplied. Use
defaultinstead.Deprecated
use
defaultinstead,defaultValuewill be removed in v18
property deprecationReason
deprecationReason: string;Reason this element is deprecated, if one was provided.
property description
description: string;Human-readable description for this schema element, if provided.
property extensions
extensions: Readonly<GraphQLArgumentExtensions>;Custom extension fields reserved for users.
property name
name: string;The GraphQL name for this schema element.
property parent
parent: GraphQLField<any, any, any> | GraphQLDirective;Field or directive that owns this argument.
property type
type: GraphQLInputType;The GraphQL type reference or runtime type for this element.
method toConfig
toConfig: () => GraphQLArgumentNormalizedConfig;Returns a normalized configuration object for this argument.
Returns
A configuration object that can be used to recreate this argument.
Example 1
import {GraphQLArgument,GraphQLField,GraphQLObjectType,GraphQLString,} from 'graphql/type';const Query = new GraphQLObjectType({ name: 'Query', fields: {} });const field = new GraphQLField(Query, 'greeting', { type: GraphQLString });const arg = new GraphQLArgument(field, 'name', {type: GraphQLString,default: { value: 'world' },});arg.toConfig().default.value; // => 'world'
method toJSON
toJSON: () => string;Returns the JSON representation used when this object is serialized.
Returns
The argument coordinate.
Example 1
import {GraphQLArgument,GraphQLField,GraphQLObjectType,GraphQLString,} from 'graphql/type';const Query = new GraphQLObjectType({ name: 'Query', fields: {} });const field = new GraphQLField(Query, 'greeting', { type: GraphQLString });const arg = new GraphQLArgument(field, 'name', { type: GraphQLString });JSON.stringify(arg); // => '"Query.greeting(name:)"'
method toString
toString: () => string;Returns this argument as a schema coordinate string.
Returns
The argument coordinate.
Example 1
import {GraphQLArgument,GraphQLField,GraphQLObjectType,GraphQLString,} from 'graphql/type';const Query = new GraphQLObjectType({ name: 'Query', fields: {} });const field = new GraphQLField(Query, 'greeting', { type: GraphQLString });const arg = new GraphQLArgument(field, 'name', { type: GraphQLString });arg.toString(); // => 'Query.greeting(name:)'
class GraphQLDirective
class GraphQLDirective implements GraphQLSchemaElement {}Directives are used by the GraphQL runtime as a way of modifying execution behavior. Type system creators will usually not create these directly.
constructor
constructor(config: Readonly<GraphQLDirectiveConfig>);Creates a GraphQLDirective instance.
Parameter config
Configuration describing this object.
Example 1
import { DirectiveLocation, parse } from 'graphql/language';import {GraphQLBoolean,GraphQLDirective,GraphQLInt,GraphQLNonNull,} from 'graphql/type';const document = parse(`directive @cacheControl(maxAge: Int) repeatable on FIELD_DEFINITIONextend directive @cacheControl(maxAge: Int) on FIELD_DEFINITION`);const definition = document.definitions[0];const cacheControl = new GraphQLDirective({name: 'cacheControl',description: 'Controls HTTP cache hints for a field.',locations: [DirectiveLocation.FIELD_DEFINITION],args: {inheritMaxAge: {description: 'Inherit the parent cache hint.',type: new GraphQLNonNull(GraphQLBoolean),default: { value: false },deprecationReason: 'Use maxAge instead.',extensions: { scope: 'cache' },},maxAge: {type: GraphQLInt,astNode: definition.arguments[0],},},isRepeatable: true,deprecationReason: 'Use @cache instead.',extensions: { scope: 'cache' },astNode: definition,extensionASTNodes: [document.definitions[1]],});cacheControl.name; // => 'cacheControl'cacheControl.description; // => 'Controls HTTP cache hints for a field.'cacheControl.args[0].name; // => 'inheritMaxAge'cacheControl.args[0].default.value; // => falsecacheControl.isRepeatable; // => truecacheControl.extensions; // => { scope: 'cache' }
property [Symbol.toStringTag]
readonly [Symbol.toStringTag]: string;Returns the value used by
Object.prototype.toString.Returns
The built-in string tag for this object.
property args
args: readonly GraphQLArgument[];Arguments accepted by this field or directive.
property astNode
astNode: DirectiveDefinitionNode;AST node from which this schema element was built, if available.
property deprecationReason
deprecationReason: string;Reason this element is deprecated, if one was provided.
property description
description: string;Human-readable description for this schema element, if provided.
property extensionASTNodes
extensionASTNodes: readonly DirectiveExtensionNode[];AST extension nodes applied to this schema element.
property extensions
extensions: Readonly<GraphQLDirectiveExtensions>;Custom extension fields reserved for users.
property isRepeatable
isRepeatable: boolean;Whether this directive may appear more than once at the same location.
property locations
locations: readonly DirectiveLocation[];Locations where this directive may be applied.
property name
name: string;The GraphQL name for this schema element.
method toConfig
toConfig: () => GraphQLDirectiveNormalizedConfig;Returns a normalized configuration object for this object.
Returns
A configuration object that can be used to recreate this object.
Example 1
import { DirectiveLocation } from 'graphql/language';import { GraphQLDirective, GraphQLString } from 'graphql/type';const tag = new GraphQLDirective({name: 'tag',locations: [DirectiveLocation.FIELD_DEFINITION],args: {name: { type: GraphQLString },},});const config = tag.toConfig();const tagCopy = new GraphQLDirective(config);config.args.name.type; // => GraphQLStringtagCopy.args[0].name; // => 'name'
method toJSON
toJSON: () => string;Returns the JSON representation used when this object is serialized.
Returns
The JSON-serializable representation.
Example 1
import { DirectiveLocation } from 'graphql/language';import { GraphQLDirective } from 'graphql/type';const tag = new GraphQLDirective({name: 'tag',locations: [DirectiveLocation.FIELD_DEFINITION],});tag.toJSON(); // => '@tag'JSON.stringify({ directive: tag }); // => '{"directive":"@tag"}'
method toString
toString: () => string;Returns the schema coordinate identifying this directive.
Returns
The directive schema coordinate.
Example 1
import { DirectiveLocation } from 'graphql/language';import { GraphQLDirective } from 'graphql/type';const tag = new GraphQLDirective({name: 'tag',locations: [DirectiveLocation.FIELD_DEFINITION],});tag.toString(); // => '@tag'
class GraphQLEnumType
class GraphQLEnumType implements GraphQLSchemaElement {}Enum Type Definition
Enum types define leaf values whose serialized form is one of a fixed set of GraphQL enum names. Internally, enum values can map to any runtime value, often integers.
Example 1
import { GraphQLEnumType } from 'graphql/type';const RGBType = new GraphQLEnumType({name: 'RGB',values: {RED: { value: 0 },GREEN: { value: 1 },BLUE: { value: 2 },},});RGBType.getValue('GREEN')?.value; // => 1Note: If a value is not provided in a definition, the name of the enum value will be used as its internal value.
constructor
constructor(config: Readonly<GraphQLEnumTypeConfig>);Creates a GraphQLEnumType instance.
Parameter config
Configuration describing this object.
Example 1
import { parse } from 'graphql/language';import { GraphQLEnumType } from 'graphql/type';const document = parse(`enum Episode {NEW_HOPEEMPIREJEDI}extend enum Episode {FORCE_AWAKENS}`);const definition = document.definitions[0];const Episode = new GraphQLEnumType({name: 'Episode',description: 'A Star Wars film episode.',values: {NEW_HOPE: {value: 4,description: 'Released in 1977.',extensions: { trilogy: 'original' },astNode: definition.values[0],},EMPIRE: { value: 5, astNode: definition.values[1] },JEDI: {value: 6,deprecationReason: 'Use RETURN_OF_THE_JEDI.',astNode: definition.values[2],},},extensions: { catalog: 'films' },astNode: definition,extensionASTNodes: [document.definitions[1]],});Episode.description; // => 'A Star Wars film episode.'Episode.coerceOutputValue(5); // => 'EMPIRE'Episode.coerceInputValue('JEDI'); // => 6Episode.getValue('JEDI').deprecationReason; // => 'Use RETURN_OF_THE_JEDI.'Episode.extensions; // => { catalog: 'films' }
property [Symbol.toStringTag]
readonly [Symbol.toStringTag]: string;Returns the value used by
Object.prototype.toString.Returns
The built-in string tag for this object.
property astNode
astNode: EnumTypeDefinitionNode;AST node from which this schema element was built, if available.
property description
description: string;Human-readable description for this schema element, if provided.
property extensionASTNodes
extensionASTNodes: readonly EnumTypeExtensionNode[];AST extension nodes applied to this schema element.
property extensions
extensions: Readonly<GraphQLEnumTypeExtensions>;Custom extension fields reserved for users.
property name
name: string;The GraphQL name for this schema element.
method coerceInputLiteral
coerceInputLiteral: ( valueNode: ConstValueNode, hideSuggestions?: Maybe<boolean>) => Maybe<any>;Coerces an enum value AST node to its internal runtime value.
Parameter valueNode
Enum value AST node to coerce.
Parameter hideSuggestions
Whether suggestion text should be omitted from errors.
Returns
The internal runtime value for the enum literal.
Example 1
import { parseConstValue } from 'graphql/language';import { GraphQLEnumType } from 'graphql/type';const RGB = new GraphQLEnumType({name: 'RGB',values: {RED: { value: 0 },GREEN: { value: 1 },BLUE: { value: 2 },},});RGB.coerceInputLiteral(parseConstValue('RED')); // => 0RGB.coerceInputLiteral(parseConstValue('"RED"'), true); // throws an error
method coerceInputValue
coerceInputValue: ( inputValue: unknown, hideSuggestions?: Maybe<boolean>) => Maybe<any>;Coerces an external enum name to its internal runtime value.
Parameter inputValue
External enum name to coerce.
Parameter hideSuggestions
Whether suggestion text should be omitted from errors.
Returns
The internal runtime value for the enum name.
Example 1
import { GraphQLEnumType } from 'graphql/type';const RGB = new GraphQLEnumType({name: 'RGB',values: {RED: { value: 0 },GREEN: { value: 1 },BLUE: { value: 2 },},});RGB.coerceInputValue('BLUE'); // => 2RGB.coerceInputValue('PURPLE'); // throws an errorRGB.coerceInputValue(2); // throws an error
method coerceOutputValue
coerceOutputValue: (outputValue: unknown) => Maybe<string>;Coerces a runtime enum value to a GraphQL enum name.
Parameter outputValue
Runtime enum value to coerce.
Returns
The GraphQL enum name for the runtime value.
Example 1
import { GraphQLEnumType } from 'graphql/type';const RGB = new GraphQLEnumType({name: 'RGB',values: {RED: { value: 0 },GREEN: { value: 1 },BLUE: { value: 2 },},});RGB.coerceOutputValue(1); // => 'GREEN'RGB.coerceOutputValue(3); // throws an error
method getValue
getValue: (name: string) => Maybe<GraphQLEnumValue>;Returns the enum value definition for a value name.
Parameter name
The GraphQL name to look up.
Returns
The matching enum value definition, if it exists.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertEnumType } from 'graphql/type';const schema = buildSchema(`enum Episode {NEW_HOPEEMPIRE}type Query {episode: Episode}`);const Episode = assertEnumType(schema.getType('Episode'));Episode.getValue('EMPIRE')?.name; // => 'EMPIRE'Episode.getValue('JEDI'); // => undefined
method getValues
getValues: () => ReadonlyArray<GraphQLEnumValue>;Returns the values defined by this enum type.
Returns
Enum value definitions in schema order.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertEnumType } from 'graphql/type';const schema = buildSchema(`enum Episode {NEW_HOPEEMPIREJEDI}type Query {episode: Episode}`);const Episode = assertEnumType(schema.getType('Episode'));Episode.getValues().map((value) => value.name); // => ['NEW_HOPE', 'EMPIRE', 'JEDI']
method parseLiteral
parseLiteral: ( valueNode: ValueNode, _variables: Maybe<ObjMap<unknown>>, hideSuggestions?: Maybe<boolean>) => Maybe<any>;Deprecated legacy enum parser for externally provided input literals. Use
coerceInputLiteral()instead.Parameter valueNode
Enum value AST node to parse.
Parameter _variables
Deprecated variable values parameter that is no longer used.
Parameter hideSuggestions
Whether suggestion text should be omitted from errors.
Returns
The internal runtime value for the enum literal.
Example 1
import { parseValue } from 'graphql/language';import { GraphQLEnumType } from 'graphql/type';const RGB = new GraphQLEnumType({name: 'RGB',values: {RED: { value: 0 },GREEN: { value: 1 },BLUE: { value: 2 },},});RGB.parseLiteral(parseValue('RED')); // => 0RGB.parseLiteral(parseValue('"RED"')); // throws an errorDeprecated
use
coerceInputLiteral()instead,parseLiteral()will be removed in v18
method parseValue
parseValue: ( inputValue: unknown, hideSuggestions?: Maybe<boolean>) => Maybe<any>;Deprecated legacy enum parser for externally provided input values. Use
coerceInputValue()instead.Parameter inputValue
External enum name to parse.
Parameter hideSuggestions
Whether suggestion text should be omitted from errors.
Returns
The internal runtime value for the enum name.
Example 1
import { GraphQLEnumType } from 'graphql/type';const RGB = new GraphQLEnumType({name: 'RGB',values: {RED: { value: 0 },GREEN: { value: 1 },BLUE: { value: 2 },},});RGB.parseValue('BLUE'); // => 2RGB.parseValue('PURPLE', true); // throws an errorDeprecated
use
coerceInputValue()instead,parseValue()will be removed in v18
method serialize
serialize: (outputValue: unknown) => Maybe<string>;Serializes a runtime enum value as a GraphQL enum name.
Parameter outputValue
Runtime enum value to serialize.
Returns
The GraphQL enum name for the runtime value.
This deprecated method delegates to
coerceOutputValue(); callcoerceOutputValue()directly instead.Example 1
import { GraphQLEnumType } from 'graphql/type';const RGB = new GraphQLEnumType({name: 'RGB',values: {RED: { value: 0 },GREEN: { value: 1 },BLUE: { value: 2 },},});RGB.serialize(1); // => 'GREEN'RGB.serialize(3); // throws an errorDeprecated
use
coerceOutputValue()instead,serialize()will be removed in v18
method toConfig
toConfig: () => GraphQLEnumTypeNormalizedConfig;Returns a normalized configuration object for this object.
Returns
A configuration object that can be used to recreate this object.
Example 1
import { GraphQLEnumType } from 'graphql/type';const RGB = new GraphQLEnumType({name: 'RGB',values: {RED: { value: 0 },GREEN: { value: 1 },BLUE: { value: 2 },},});const config = RGB.toConfig();const RGBCopy = new GraphQLEnumType(config);config.values.GREEN.value; // => 1RGBCopy.coerceOutputValue(2); // => 'BLUE'
method toJSON
toJSON: () => string;Returns the JSON representation used when this object is serialized.
Returns
The JSON-serializable representation.
Example 1
import { GraphQLEnumType } from 'graphql/type';const Episode = new GraphQLEnumType({name: 'Episode',values: {NEW_HOPE: {},},});Episode.toJSON(); // => 'Episode'JSON.stringify({ type: Episode }); // => '{"type":"Episode"}'
method toString
toString: () => string;Returns the schema coordinate identifying this enum type.
Returns
The schema coordinate for this enum type.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertEnumType } from 'graphql/type';const schema = buildSchema(`enum Episode {NEW_HOPE}type Query {episode: Episode}`);const Episode = assertEnumType(schema.getType('Episode'));Episode.toString(); // => 'Episode'
method valueToLiteral
valueToLiteral: (value: unknown) => ConstValueNode | undefined;Converts a runtime enum value to a GraphQL enum value AST node.
Parameter value
Runtime enum value to convert.
Returns
Enum value AST node, or undefined if the value is invalid.
Example 1
import { print } from 'graphql/language';import { GraphQLEnumType } from 'graphql/type';const RGB = new GraphQLEnumType({name: 'RGB',values: {RED: { value: 0 },GREEN: { value: 1 },BLUE: { value: 2 },},});print(RGB.valueToLiteral(2)); // => 'BLUE'RGB.valueToLiteral(3); // => undefined
class GraphQLEnumValue
class GraphQLEnumValue implements GraphQLSchemaElement {}A resolved GraphQL enum value definition.
constructor
constructor( parentEnum: GraphQLEnumType, name: string, config: GraphQLEnumValueConfig);Creates a resolved GraphQL enum value definition.
Parameter parentEnum
Enum type that owns this enum value.
Parameter name
Enum value name.
Parameter config
Enum value configuration.
Example 1
import { GraphQLEnumType, GraphQLEnumValue } from 'graphql/type';const Episode = new GraphQLEnumType({name: 'Episode',values: { NEW_HOPE: { value: 4 } },});const enumValue = new GraphQLEnumValue(Episode, 'EMPIRE', {value: 5,description: 'Released in 1980.',});enumValue.parentEnum; // => EpisodeenumValue.name; // => 'EMPIRE'enumValue.value; // => 5
property [Symbol.toStringTag]
readonly [Symbol.toStringTag]: string;Returns the value used by
Object.prototype.toString.Returns
The built-in string tag for this object.
property astNode
astNode: EnumValueDefinitionNode;AST node from which this schema element was built, if available.
property deprecationReason
deprecationReason: string;Reason this element is deprecated, if one was provided.
property description
description: string;Human-readable description for this schema element, if provided.
property extensions
extensions: Readonly<GraphQLEnumValueExtensions>;Custom extension fields reserved for users.
property name
name: string;The GraphQL name for this schema element.
property parentEnum
parentEnum: GraphQLEnumType;Enum type that owns this enum value.
property value
value: any;Parsed value represented by this node.
method toConfig
toConfig: () => GraphQLEnumValueNormalizedConfig;Returns a normalized configuration object for this enum value.
Returns
A configuration object that can be used to recreate this enum value.
Example 1
import { GraphQLEnumType, GraphQLEnumValue } from 'graphql/type';const Episode = new GraphQLEnumType({name: 'Episode',values: { NEW_HOPE: { value: 4 } },});const enumValue = new GraphQLEnumValue(Episode, 'EMPIRE', {value: 5,extensions: { trilogy: 'original' },});enumValue.toConfig(); // => { description: undefined, value: 5, deprecationReason: undefined, extensions: { trilogy: 'original' }, astNode: undefined }
method toJSON
toJSON: () => string;Returns the JSON representation used when this object is serialized.
Returns
Enum value coordinate.
Example 1
import { GraphQLEnumType, GraphQLEnumValue } from 'graphql/type';const Episode = new GraphQLEnumType({name: 'Episode',values: { NEW_HOPE: { value: 4 } },});const enumValue = new GraphQLEnumValue(Episode, 'EMPIRE', { value: 5 });JSON.stringify(enumValue); // => '"Episode.EMPIRE"'
method toString
toString: () => string;Returns this enum value as a schema coordinate string.
Returns
Enum value coordinate.
Example 1
import { GraphQLEnumType, GraphQLEnumValue } from 'graphql/type';const Episode = new GraphQLEnumType({name: 'Episode',values: { NEW_HOPE: { value: 4 } },});const enumValue = new GraphQLEnumValue(Episode, 'EMPIRE', { value: 5 });enumValue.toString(); // => 'Episode.EMPIRE'
class GraphQLError
class GraphQLError extends Error {}A GraphQLError describes an Error found during the parse, validate, or execute phases of performing a GraphQL operation. In addition to a message and stack trace, it also includes information about the locations in a GraphQL document and/or execution result that correspond to the Error.
constructor
constructor(message: string, options?: GraphQLErrorOptions);Creates a GraphQLError instance.
Parameter message
Human-readable error message.
Parameter options
Error metadata such as source locations, response path, cause, original error, and extensions.
Example 1
// Create an error from AST nodes and response metadata.import { parse } from 'graphql/language';import { GraphQLError } from 'graphql/error';const document = parse('{ greeting }');const fieldNode = document.definitions[0].selectionSet.selections[0];const error = new GraphQLError('Cannot query this field.', {nodes: fieldNode,path: ['greeting'],extensions: { code: 'FORBIDDEN' },});error.message; // => 'Cannot query this field.'error.locations; // => [{ line: 1, column: 3 }]error.path; // => ['greeting']error.extensions; // => { code: 'FORBIDDEN' }Example 2
// This variant derives locations from source positions and preserves the cause.import { Source } from 'graphql/language';import { GraphQLError } from 'graphql/error';const source = new Source('{ greeting }');const cause = new Error('Database unavailable.');const error = new GraphQLError('Resolver failed.', {source,positions: [2],path: ['greeting'],cause,});error.locations; // => [{ line: 1, column: 3 }]error.path; // => ['greeting']error.cause; // => cause
property [Symbol.toStringTag]
readonly [Symbol.toStringTag]: string;Returns the value used by
Object.prototype.toString.Returns
The built-in string tag for this object.
property extensions
readonly extensions: GraphQLErrorExtensions;Extension fields to add to the formatted error.
property locations
readonly locations: readonly SourceLocation[];An array of
{ line, column }locations within the source GraphQL document which correspond to this error.Errors during validation often contain multiple locations, for example to point out two things with the same name. Errors during execution include a single location, the field which produced the error.
Enumerable, and appears in the result of JSON.stringify().
property nodes
readonly nodes: readonly ASTNode[];An array of GraphQL AST Nodes corresponding to this error.
property originalError
readonly originalError: Error;Original error that caused this GraphQLError, if one exists. Deprecated in favor of
causeto better align with JavaScript standards.Deprecated
Use
causeinstead.
property path
readonly path: readonly (string | number)[];An array describing the JSON-path into the execution response which corresponds to this error. Only included for errors during execution.
Enumerable, and appears in the result of JSON.stringify().
property positions
readonly positions: readonly number[];An array of character offsets within the source GraphQL document which correspond to this error.
property source
readonly source: Source;The source GraphQL document for the first location of this error.
Note that if this Error represents more than one node, the source may not represent nodes after the first node.
method toJSON
toJSON: () => GraphQLFormattedError;Returns the JSON representation used when this object is serialized.
Returns
The JSON-serializable representation.
Example 1
import { GraphQLError } from 'graphql/error';const error = new GraphQLError('Resolver failed.', {path: ['viewer', 'name'],extensions: { code: 'INTERNAL' },});error.toJSON(); // => { message: 'Resolver failed.', path: ['viewer', 'name'], extensions: { code: 'INTERNAL' } }
method toString
toString: () => string;Returns this error as a human-readable message with source locations.
Returns
The formatted error string.
Example 1
import { Source } from 'graphql/language';import { GraphQLError } from 'graphql/error';const error = new GraphQLError('Cannot query field "name".', {source: new Source('{ name }'),positions: [2],});error.toString(); // => 'Cannot query field "name".\n\nGraphQL request:1:3\n1 | { name }\n | ^'
class GraphQLField
class GraphQLField<TSource = any, TContext = any, TArgs = any> implements GraphQLSchemaElement {}A resolved GraphQL field definition.
constructor
constructor( parentType: | GraphQLObjectType<TSource, TContext, any> | GraphQLInterfaceType<TSource, TContext>, name: string, config: GraphQLFieldConfig<TSource, TContext, TArgs>);Creates a resolved GraphQL field definition.
Parameter parentType
Object or interface type that owns this field, if known.
Parameter name
Field name.
Parameter config
Field configuration.
Example 1
import { parse } from 'graphql/language';import { GraphQLField, GraphQLObjectType, GraphQLString } from 'graphql/type';const Query = new GraphQLObjectType({ name: 'Query', fields: {} });const document = parse('type Query { greeting: String }');const fieldNode = document.definitions[0].fields[0];const field = new GraphQLField(Query, 'greeting', {description: 'Greeting text.',type: GraphQLString,args: {name: { type: GraphQLString, default: { value: 'world' } },},resolve: (_source, { name }) => `Hello, ${name}!`,subscribe: async function* () {yield { greeting: 'Hello!' };},deprecationReason: 'Use hello.',extensions: { cacheSeconds: 60 },astNode: fieldNode,});field.parentType; // => Queryfield.name; // => 'greeting'field.args[0].default.value; // => 'world'typeof field.subscribe; // => 'function'field.deprecationReason; // => 'Use hello.'field.astNode; // => fieldNode
property [Symbol.toStringTag]
readonly [Symbol.toStringTag]: string;Returns the value used by
Object.prototype.toString.Returns
The built-in string tag for this object.
property args
args: readonly GraphQLArgument[];Arguments accepted by this field or directive.
property astNode
astNode: FieldDefinitionNode;AST node from which this schema element was built, if available.
property deprecationReason
deprecationReason: string;Reason this element is deprecated, if one was provided.
property description
description: string;Human-readable description for this schema element, if provided.
property extensions
extensions: Readonly<GraphQLFieldExtensions<TSource, TContext, TArgs>>;Custom extension fields reserved for users.
property name
name: string;The GraphQL name for this schema element.
property parentType
parentType: | GraphQLObjectType<TSource, TContext, any> | GraphQLInterfaceType<TSource, TContext>;Object or interface type that owns this field, if known.
property resolve
resolve?: GraphQLFieldResolver<TSource, TContext, TArgs, unknown>;Resolver function used to produce this field value.
property subscribe
subscribe?: GraphQLFieldResolver<TSource, TContext, TArgs, unknown>;Resolver function used to create a subscription event stream for this field.
property type
type: GraphQLOutputType;The GraphQL type reference or runtime type for this element.
method toConfig
toConfig: () => GraphQLFieldNormalizedConfig<TSource, TContext, TArgs>;Returns a normalized configuration object for this field.
Returns
A configuration object that can be used to recreate this field.
Example 1
import { GraphQLField, GraphQLObjectType, GraphQLString } from 'graphql/type';const Query = new GraphQLObjectType({ name: 'Query', fields: {} });const field = new GraphQLField(Query, 'greeting', {type: GraphQLString,extensions: { cacheSeconds: 60 },});field.toConfig().type; // => GraphQLStringfield.toConfig().extensions; // => { cacheSeconds: 60 }
method toJSON
toJSON: () => string;Returns the JSON representation used when this object is serialized.
Returns
The field coordinate.
Example 1
import { GraphQLField, GraphQLObjectType, GraphQLString } from 'graphql/type';const Query = new GraphQLObjectType({ name: 'Query', fields: {} });const field = new GraphQLField(Query, 'greeting', { type: GraphQLString });JSON.stringify(field); // => '"Query.greeting"'
method toString
toString: () => string;Returns this field as a schema coordinate string.
Returns
The field coordinate.
Example 1
import { GraphQLField, GraphQLObjectType, GraphQLString } from 'graphql/type';const Query = new GraphQLObjectType({ name: 'Query', fields: {} });const field = new GraphQLField(Query, 'greeting', { type: GraphQLString });field.toString(); // => 'Query.greeting'
class GraphQLInputField
class GraphQLInputField implements GraphQLSchemaElement {}A resolved GraphQL input field definition.
constructor
constructor( parentType: GraphQLInputObjectType, name: string, config: GraphQLInputFieldConfig);Creates a resolved GraphQL input field definition.
Parameter parentType
Input object type that owns this field.
Parameter name
Input field name.
Parameter config
Input field configuration.
Example 1
import {GraphQLInputField,GraphQLInputObjectType,GraphQLString,} from 'graphql/type';const ReviewInput = new GraphQLInputObjectType({name: 'ReviewInput',fields: {},});const field = new GraphQLInputField(ReviewInput, 'commentary', {type: GraphQLString,default: { value: '' },});field.parentType; // => ReviewInputfield.name; // => 'commentary'field.default.value; // => ''
property [Symbol.toStringTag]
readonly [Symbol.toStringTag]: string;Returns the value used by
Object.prototype.toString.Returns
The built-in string tag for this object.
property astNode
astNode: InputValueDefinitionNode;AST node from which this schema element was built, if available.
property default
default: GraphQLDefaultInput;Default value represented as either a runtime value or a GraphQL literal.
property defaultValue
defaultValue: {};Deprecated legacy default value used when no explicit value is supplied. Use
defaultinstead.Deprecated
use
defaultinstead,defaultValuewill be removed in v18
property deprecationReason
deprecationReason: string;Reason this element is deprecated, if one was provided.
property description
description: string;Human-readable description for this schema element, if provided.
property extensions
extensions: Readonly<GraphQLInputFieldExtensions>;Custom extension fields reserved for users.
property name
name: string;The GraphQL name for this schema element.
property parentType
parentType: GraphQLInputObjectType;Input object type that owns this input field.
property type
type: GraphQLInputType;The GraphQL type reference or runtime type for this element.
method toConfig
toConfig: () => GraphQLInputFieldNormalizedConfig;Returns a normalized configuration object for this input field.
Returns
A configuration object that can be used to recreate this input field.
Example 1
import {GraphQLInputField,GraphQLInputObjectType,GraphQLString,} from 'graphql/type';const ReviewInput = new GraphQLInputObjectType({name: 'ReviewInput',fields: {},});const field = new GraphQLInputField(ReviewInput, 'commentary', {type: GraphQLString,extensions: { form: 'review' },});field.toConfig().extensions; // => { form: 'review' }
method toJSON
toJSON: () => string;Returns the JSON representation used when this object is serialized.
Returns
The input field coordinate.
Example 1
import {GraphQLInputField,GraphQLInputObjectType,GraphQLString,} from 'graphql/type';const ReviewInput = new GraphQLInputObjectType({name: 'ReviewInput',fields: {},});const field = new GraphQLInputField(ReviewInput, 'commentary', {type: GraphQLString,});JSON.stringify(field); // => '"ReviewInput.commentary"'
method toString
toString: () => string;Returns this input field as a schema coordinate string.
Returns
The input field coordinate.
Example 1
import {GraphQLInputField,GraphQLInputObjectType,GraphQLString,} from 'graphql/type';const ReviewInput = new GraphQLInputObjectType({name: 'ReviewInput',fields: {},});const field = new GraphQLInputField(ReviewInput, 'commentary', {type: GraphQLString,});field.toString(); // => 'ReviewInput.commentary'
class GraphQLInputObjectType
class GraphQLInputObjectType implements GraphQLSchemaElement {}Input Object Type Definition
An input object defines a structured collection of fields which may be supplied to a field argument.
Using
NonNullwill ensure that a value must be provided by the queryExample 1
const GeoPoint = new GraphQLInputObjectType({name: 'GeoPoint',fields: {lat: { type: new GraphQLNonNull(GraphQLFloat) },lon: { type: new GraphQLNonNull(GraphQLFloat) },alt: { type: GraphQLFloat, default: { value: 0 } },},});
constructor
constructor(config: Readonly<GraphQLInputObjectTypeConfig>);Creates a GraphQLInputObjectType instance.
Parameter config
Configuration describing this object.
Example 1
import { parse } from 'graphql/language';import {GraphQLID,GraphQLInputObjectType,GraphQLInt,GraphQLNonNull,GraphQLString,} from 'graphql/type';const document = parse(`input ReviewInput {stars: Int!commentary: String}extend input ReviewInput {body: String}`);const definition = document.definitions[0];const ReviewInput = new GraphQLInputObjectType({name: 'ReviewInput',description: 'Input collected when reviewing a product.',fields: {stars: {description: 'Star rating from one to five.',type: new GraphQLNonNull(GraphQLInt),extensions: { min: 1, max: 5 },astNode: definition.fields[0],},commentary: {type: GraphQLString,default: { value: '' },deprecationReason: 'Use body.',astNode: definition.fields[1],},},extensions: { form: 'review' },astNode: definition,extensionASTNodes: [document.definitions[1]],isOneOf: false,});const SearchBy = new GraphQLInputObjectType({name: 'SearchBy',fields: {id: { type: GraphQLID },slug: { type: GraphQLString },},isOneOf: true,});const fields = ReviewInput.getFields();ReviewInput.description; // => 'Input collected when reviewing a product.'String(fields.stars.type); // => 'Int!'fields.stars.extensions; // => { min: 1, max: 5 }fields.commentary.default.value; // => ''fields.commentary.deprecationReason; // => 'Use body.'ReviewInput.isOneOf; // => falseSearchBy.isOneOf; // => true
property [Symbol.toStringTag]
readonly [Symbol.toStringTag]: string;Returns the value used by
Object.prototype.toString.Returns
The built-in string tag for this object.
property astNode
astNode: InputObjectTypeDefinitionNode;AST node from which this schema element was built, if available.
property description
description: string;Human-readable description for this schema element, if provided.
property extensionASTNodes
extensionASTNodes: readonly InputObjectTypeExtensionNode[];AST extension nodes applied to this schema element.
property extensions
extensions: Readonly<GraphQLInputObjectTypeExtensions>;Custom extension fields reserved for users.
property isOneOf
isOneOf: boolean;Whether this input object uses the experimental OneOf input object semantics.
property name
name: string;The GraphQL name for this schema element.
method getFields
getFields: () => GraphQLInputFieldMap;Returns the fields defined by this type.
Returns
The fields keyed by field name.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertInputObjectType } from 'graphql/type';const schema = buildSchema(`input ReviewInput {stars: Int!commentary: String = ""}type Query {reviews(filter: ReviewInput): [String]}`);const ReviewInput = assertInputObjectType(schema.getType('ReviewInput'));const fields = ReviewInput.getFields();Object.keys(fields); // => ['stars', 'commentary']fields.commentary.default; // => { literal: { kind: 'StringValue', value: '' } }
method toConfig
toConfig: () => GraphQLInputObjectTypeNormalizedConfig;Returns a normalized configuration object for this object.
Returns
A configuration object that can be used to recreate this object.
Example 1
import {GraphQLInputObjectType,GraphQLInt,GraphQLNonNull,} from 'graphql/type';const ReviewInput = new GraphQLInputObjectType({name: 'ReviewInput',fields: {stars: { type: new GraphQLNonNull(GraphQLInt) },},});const config = ReviewInput.toConfig();const ReviewInputCopy = new GraphQLInputObjectType(config);String(config.fields.stars.type); // => 'Int!'String(ReviewInputCopy.getFields().stars.type); // => 'Int!'
method toJSON
toJSON: () => string;Returns the JSON representation used when this object is serialized.
Returns
The JSON-serializable representation.
Example 1
import { GraphQLInputObjectType, GraphQLString } from 'graphql/type';const ReviewInput = new GraphQLInputObjectType({name: 'ReviewInput',fields: {commentary: { type: GraphQLString },},});ReviewInput.toJSON(); // => 'ReviewInput'JSON.stringify({ type: ReviewInput }); // => '{"type":"ReviewInput"}'
method toString
toString: () => string;Returns the schema coordinate identifying this input object type.
Returns
The schema coordinate for this input object type.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertInputObjectType } from 'graphql/type';const schema = buildSchema(`input ReviewInput {stars: Int!}type Query {reviews(filter: ReviewInput): [String]}`);const ReviewInput = assertInputObjectType(schema.getType('ReviewInput'));ReviewInput.toString(); // => 'ReviewInput'
class GraphQLInterfaceType
class GraphQLInterfaceType<TSource = any, TContext = any> implements GraphQLSchemaElement {}Interface Type Definition
When a field can return one of a heterogeneous set of types, a Interface type is used to describe what types are possible, what fields are in common across all types, as well as a function to determine which type is actually used when the field is resolved.
Example 1
const EntityType = new GraphQLInterfaceType({name: 'Entity',fields: {name: { type: GraphQLString },},});
constructor
constructor(config: Readonly<GraphQLInterfaceTypeConfig<TSource, TContext>>);Creates a GraphQLInterfaceType instance.
Parameter config
Configuration describing this object.
Example 1
import { parse } from 'graphql/language';import { GraphQLID, GraphQLInterfaceType, GraphQLNonNull } from 'graphql/type';const document = parse(`interface Node {id: ID!}interface Resource implements Node {id: ID!}extend interface Resource {url: String}`);const Node = new GraphQLInterfaceType({name: 'Node',fields: {id: { type: new GraphQLNonNull(GraphQLID) },},});const Resource = new GraphQLInterfaceType({name: 'Resource',description: 'An addressable resource.',interfaces: [Node],fields: {id: { type: new GraphQLNonNull(GraphQLID) },},resolveType: (value) => {return typeof value === 'object' && value != null && 'url' in value? 'WebPage': null;},extensions: { abstract: true },astNode: document.definitions[1],extensionASTNodes: [document.definitions[2]],});Resource.name; // => 'Resource'Resource.getInterfaces(); // => [Node]Object.keys(Resource.getFields()); // => ['id']Resource.extensions; // => { abstract: true }
property [Symbol.toStringTag]
readonly [Symbol.toStringTag]: string;Returns the value used by
Object.prototype.toString.Returns
The built-in string tag for this object.
property astNode
astNode: InterfaceTypeDefinitionNode;AST node from which this schema element was built, if available.
property description
description: string;Human-readable description for this schema element, if provided.
property extensionASTNodes
extensionASTNodes: readonly InterfaceTypeExtensionNode[];AST extension nodes applied to this schema element.
property extensions
extensions: Readonly<GraphQLInterfaceTypeExtensions>;Custom extension fields reserved for users.
property name
name: string;The GraphQL name for this schema element.
property resolveType
resolveType: GraphQLTypeResolver<TSource, TContext>;Function that resolves the concrete object type for this abstract type.
method getFields
getFields: () => GraphQLFieldMap<TSource, TContext>;Returns the fields defined by this type.
Returns
The fields keyed by field name.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertInterfaceType } from 'graphql/type';const schema = buildSchema(`interface Node {id: ID!}type User implements Node {id: ID!}type Query {node: Node}`);const Node = assertInterfaceType(schema.getType('Node'));const fields = Node.getFields();Object.keys(fields); // => ['id']String(fields.id.type); // => 'ID!'
method getInterfaces
getInterfaces: () => ReadonlyArray<GraphQLInterfaceType>;Returns the interfaces implemented by this type.
Returns
The implemented interfaces.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertInterfaceType } from 'graphql/type';const schema = buildSchema(`interface Resource {url: String!}interface Image implements Resource {url: String!width: Int}type Photo implements Resource & Image {url: String!width: Int}type Query {image: Image}`);const Image = assertInterfaceType(schema.getType('Image'));Image.getInterfaces().map((type) => type.name); // => ['Resource']
method toConfig
toConfig: () => GraphQLInterfaceTypeNormalizedConfig<TSource, TContext>;Returns a normalized configuration object for this object.
Returns
A configuration object that can be used to recreate this object.
Example 1
import { GraphQLID, GraphQLInterfaceType, GraphQLNonNull } from 'graphql/type';const Node = new GraphQLInterfaceType({name: 'Node',fields: {id: { type: new GraphQLNonNull(GraphQLID) },},});const config = Node.toConfig();const NodeCopy = new GraphQLInterfaceType(config);String(config.fields.id.type); // => 'ID!'String(NodeCopy.getFields().id.type); // => 'ID!'
method toJSON
toJSON: () => string;Returns the JSON representation used when this object is serialized.
Returns
The JSON-serializable representation.
Example 1
import { GraphQLInterfaceType, GraphQLString } from 'graphql/type';const Named = new GraphQLInterfaceType({name: 'Named',fields: { name: { type: GraphQLString } },});Named.toJSON(); // => 'Named'JSON.stringify({ type: Named }); // => '{"type":"Named"}'
method toString
toString: () => string;Returns the schema coordinate identifying this interface type.
Returns
The schema coordinate for this interface type.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertInterfaceType } from 'graphql/type';const schema = buildSchema(`interface Node {id: ID!}type User implements Node {id: ID!}type Query {node: Node}`);const Node = assertInterfaceType(schema.getType('Node'));Node.toString(); // => 'Node'
class GraphQLList
class GraphQLList<T extends GraphQLType> implements GraphQLSchemaElement {}List Type Wrapper
A list is a wrapping type which points to another type. Lists are often created within the context of defining the fields of an object type.
Example 1
const PersonType = new GraphQLObjectType({name: 'Person',fields: () => ({parents: { type: new GraphQLList(PersonType) },children: { type: new GraphQLList(PersonType) },}),});
constructor
constructor(ofType: GraphQLType);Creates a GraphQLList instance.
Parameter ofType
The type to wrap.
Example 1
import { GraphQLList, GraphQLString } from 'graphql/type';const stringList = new GraphQLList(GraphQLString);stringList.ofType; // => GraphQLStringString(stringList); // => '[String]'
property [Symbol.toStringTag]
readonly [Symbol.toStringTag]: string;Returns the value used by
Object.prototype.toString.Returns
The built-in string tag for this object.
property ofType
readonly ofType: GraphQLType;The type wrapped by this list or non-null type.
method toJSON
toJSON: () => string;Returns the JSON representation used when this object is serialized.
Returns
The JSON-serializable representation.
Example 1
import { GraphQLList, GraphQLString } from 'graphql/type';const stringList = new GraphQLList(GraphQLString);stringList.toJSON(); // => '[String]'JSON.stringify({ type: stringList }); // => '{"type":"[String]"}'
method toString
toString: () => string;Returns this wrapping type as a GraphQL type-reference string.
Returns
The GraphQL type-reference string.
Example 1
import { GraphQLList, GraphQLNonNull, GraphQLString } from 'graphql/type';const stringList = new GraphQLList(GraphQLString);const requiredStringList = new GraphQLList(new GraphQLNonNull(GraphQLString));stringList.toString(); // => '[String]'requiredStringList.toString(); // => '[String!]'
class GraphQLNonNull
class GraphQLNonNull<T extends GraphQLNullableType> implements GraphQLSchemaElement {}Non-Null Type Wrapper
A non-null is a wrapping type which points to another type. Non-null types enforce that their values are never null and can ensure an error is raised if this ever occurs during a request. It is useful for fields which you can make a strong guarantee on non-nullability, for example usually the id field of a database row will never be null.
Example 1
const RowType = new GraphQLObjectType({name: 'Row',fields: () => ({id: { type: new GraphQLNonNull(GraphQLString) },}),});Note: the enforcement of non-nullability occurs within the executor.
constructor
constructor(ofType: GraphQLNullableType);Creates a GraphQLNonNull instance.
Parameter ofType
The type to wrap.
Example 1
import { GraphQLNonNull, GraphQLString } from 'graphql/type';const requiredString = new GraphQLNonNull(GraphQLString);requiredString.ofType; // => GraphQLStringString(requiredString); // => 'String!'
property [Symbol.toStringTag]
readonly [Symbol.toStringTag]: string;Returns the value used by
Object.prototype.toString.Returns
The built-in string tag for this object.
property ofType
readonly ofType: GraphQLNullableType;The type wrapped by this list or non-null type.
method toJSON
toJSON: () => string;Returns the JSON representation used when this object is serialized.
Returns
The JSON-serializable representation.
Example 1
import { GraphQLNonNull, GraphQLString } from 'graphql/type';const requiredString = new GraphQLNonNull(GraphQLString);requiredString.toJSON(); // => 'String!'JSON.stringify({ type: requiredString }); // => '{"type":"String!"}'
method toString
toString: () => string;Returns this wrapping type as a GraphQL type-reference string.
Returns
The GraphQL type-reference string.
Example 1
import { GraphQLList, GraphQLNonNull, GraphQLString } from 'graphql/type';const requiredString = new GraphQLNonNull(GraphQLString);const requiredStringList = new GraphQLNonNull(new GraphQLList(GraphQLString));requiredString.toString(); // => 'String!'requiredStringList.toString(); // => '[String]!'
class GraphQLObjectType
class GraphQLObjectType<TSource = any, TContext = any, TAbstract = any> implements GraphQLSchemaElement {}Object Type Definition
Almost all of the GraphQL types you define will be object types. Object types have a name, but most importantly describe their fields.
Example 1
const AddressType = new GraphQLObjectType({name: 'Address',fields: {street: { type: GraphQLString },number: { type: GraphQLInt },formatted: {type: GraphQLString,resolve: (obj) => {return obj.number + ' ' + obj.street;},},},});Example 2
When two types need to refer to each other, or a type needs to refer to itself in a field, you can use a function expression (aka a closure or a thunk) to supply the fields lazily.
const PersonType = new GraphQLObjectType({name: 'Person',fields: () => ({name: { type: GraphQLString },bestFriend: { type: PersonType },}),});
constructor
constructor( config: Readonly<GraphQLObjectTypeConfig<TSource, TContext, TAbstract>>);Creates a GraphQLObjectType instance.
Parameter config
Configuration describing this object.
Example 1
// Configure an object type with interfaces, fields, arguments, and metadata.import { parse } from 'graphql/language';import {GraphQLID,GraphQLInterfaceType,GraphQLNonNull,GraphQLObjectType,GraphQLString,} from 'graphql/type';const document = parse(`type User implements Node {id: ID!name(format: String = "short"): String}extend type User {displayName: String}`);const definition = document.definitions[0];const nameField = definition.fields[1];const formatArg = nameField.arguments[0];const Node = new GraphQLInterfaceType({name: 'Node',fields: {id: { type: new GraphQLNonNull(GraphQLID) },},});const User = new GraphQLObjectType({name: 'User',description: 'A registered user.',interfaces: [Node],fields: {id: { type: new GraphQLNonNull(GraphQLID) },name: {description: 'The formatted user name.',type: GraphQLString,args: {format: {description: 'Controls the name format.',type: GraphQLString,default: { value: 'short' },deprecationReason: 'Use locale instead.',extensions: { public: true },astNode: formatArg,},},resolve: (user, { format }) => {return format === 'long' ? user.fullName : user.name;},deprecationReason: 'Use displayName.',extensions: { cacheSeconds: 60 },astNode: nameField,},},isTypeOf: (value) => {return typeof value === 'object' && value != null && 'id' in value;},extensions: { entity: 'User' },astNode: definition,extensionASTNodes: [document.definitions[1]],});User.name; // => 'User'User.getInterfaces(); // => [Node]Object.keys(User.getFields()); // => ['id', 'name']User.getFields().name.args[0].default.value; // => 'short'User.extensions; // => { entity: 'User' }Example 2
// This variant configures a subscription field with subscribe and resolve functions.import { GraphQLObjectType, GraphQLString } from 'graphql/type';const Subscription = new GraphQLObjectType({name: 'Subscription',fields: {greeting: {type: GraphQLString,subscribe: async function* () {yield { greeting: 'Hello!' };},resolve: (event) => {return event.greeting;},},},});typeof Subscription.getFields().greeting.subscribe; // => 'function'
property [Symbol.toStringTag]
readonly [Symbol.toStringTag]: string;Returns the value used by
Object.prototype.toString.Returns
The built-in string tag for this object.
property astNode
astNode: ObjectTypeDefinitionNode;AST node from which this schema element was built, if available.
property description
description: string;Human-readable description for this schema element, if provided.
property extensionASTNodes
extensionASTNodes: readonly ObjectTypeExtensionNode[];AST extension nodes applied to this schema element.
property extensions
extensions: Readonly<GraphQLObjectTypeExtensions<TSource, TContext>>;Custom extension fields reserved for users.
property isTypeOf
isTypeOf: GraphQLIsTypeOfFn<TAbstract, TContext>;Predicate used to determine whether a runtime value belongs to this object type.
property name
name: string;The GraphQL name for this schema element.
method getFields
getFields: () => GraphQLFieldMap<TSource, TContext>;Returns the fields defined by this type.
Returns
The fields keyed by field name.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertObjectType } from 'graphql/type';const schema = buildSchema(`type User {id: ID!name: String}type Query {viewer: User}`);const User = assertObjectType(schema.getType('User'));const fields = User.getFields();Object.keys(fields); // => ['id', 'name']String(fields.id.type); // => 'ID!'
method getInterfaces
getInterfaces: () => ReadonlyArray<GraphQLInterfaceType>;Returns the interfaces implemented by this type.
Returns
The implemented interfaces.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertObjectType } from 'graphql/type';const schema = buildSchema(`interface Node {id: ID!}type User implements Node {id: ID!}type Query {viewer: User}`);const User = assertObjectType(schema.getType('User'));User.getInterfaces().map((type) => type.name); // => ['Node']
method toConfig
toConfig: () => GraphQLObjectTypeNormalizedConfig<TSource, TContext, TAbstract>;Returns a normalized configuration object for this object.
Returns
A configuration object that can be used to recreate this object.
Example 1
import { GraphQLObjectType, GraphQLString } from 'graphql/type';const User = new GraphQLObjectType({name: 'User',fields: {name: { type: GraphQLString },},});const config = User.toConfig();const UserCopy = new GraphQLObjectType(config);config.fields.name.type; // => GraphQLStringUserCopy.getFields().name.type; // => GraphQLString
method toJSON
toJSON: () => string;Returns the JSON representation used when this object is serialized.
Returns
The JSON-serializable representation.
Example 1
import { GraphQLObjectType, GraphQLString } from 'graphql/type';const User = new GraphQLObjectType({name: 'User',fields: { name: { type: GraphQLString } },});User.toJSON(); // => 'User'JSON.stringify({ type: User }); // => '{"type":"User"}'
method toString
toString: () => string;Returns the schema coordinate identifying this object type.
Returns
The schema coordinate for this object type.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertObjectType } from 'graphql/type';const schema = buildSchema(`type User {name: String}type Query {viewer: User}`);const User = assertObjectType(schema.getType('User'));User.toString(); // => 'User'
class GraphQLScalarType
class GraphQLScalarType<TInternal = unknown, TExternal = TInternal> implements GraphQLSchemaElement {}Scalar Type Definition
Scalar types define the leaf values of a GraphQL response and the input values accepted by arguments and input object fields. A scalar type has a name and coercion functions that validate and convert runtime values and GraphQL literals.
If a type's coerceOutputValue function returns
nullor does not return a value (i.e. it returnsundefined) then an error will be raised and anullvalue will be returned in the response. Prefer validating inputs before execution so clients receive input diagnostics before result coercion fails. Custom scalar behavior is defined via the following functions:- coerceOutputValue(value): Implements "Result Coercion". Given an internal value, produces an external value valid for this type. Returns undefined or throws an error to indicate invalid values.
- coerceInputValue(value): Implements "Input Coercion" for values. Given an external value (for example, variable values), produces an internal value valid for this type. Returns undefined or throws an error to indicate invalid values.
- coerceInputLiteral(ast): Implements "Input Coercion" for constant literals. Given a GraphQL literal (AST) (for example, an argument value), produces an internal value valid for this type. Returns undefined or throws an error to indicate invalid values.
- valueToLiteral(value): Converts an external value to a GraphQL literal (AST). Returns undefined or throws an error to indicate invalid values.
Deprecated, to be removed in v18:
- serialize(value): Implements "Result Coercion". Renamed to
coerceOutputValue().- parseValue(value): Implements "Input Coercion" for values. Renamed to
coerceInputValue().- parseLiteral(ast): Implements "Input Coercion" for literals including non-specified replacement of variables embedded within complex scalars. Replaced by the combination of the
replaceVariables()utility and thecoerceInputLiteral()method.Example 1
import { GraphQLScalarType, Kind } from 'graphql';const ensureOdd = (value) => {if (!Number.isFinite(value)) {throw new Error(`Scalar "Odd" cannot represent "${value}" since it is not a finite number.`,);}if (value % 2 === 0) {throw new Error(`Scalar "Odd" cannot represent "${value}" since it is even.`,);}return value;};const OddType = new GraphQLScalarType({name: 'Odd',coerceOutputValue: (value) => {return ensureOdd(value);},coerceInputValue: (value) => {return ensureOdd(value);},valueToLiteral: (value) => {return { kind: Kind.INT, value: String(ensureOdd(value)) };},});
constructor
constructor(config: Readonly<GraphQLScalarTypeConfig<TInternal, TExternal>>);Creates a GraphQLScalarType instance.
Parameter config
Configuration describing this object.
Example 1
import { Kind, parse } from 'graphql/language';import { GraphQLScalarType } from 'graphql/type';const document = parse(`"Odd integer values."scalar Odd @specifiedBy(url: "https://example.com/odd")extend scalar Odd @specifiedBy(url: "https://example.com/odd-v2")`);const Odd = new GraphQLScalarType({name: 'Odd',description: 'Odd integer values.',specifiedByURL: 'https://example.com/odd',coerceOutputValue: (value) => {if (typeof value !== 'number' || value % 2 === 0) {throw new TypeError('Odd can only produce odd numbers.');}return value;},coerceInputValue: (value) => {if (typeof value !== 'number' || value % 2 === 0) {throw new TypeError('Odd can only accept odd numbers.');}return value;},coerceInputLiteral: (ast) => {if (ast.kind !== Kind.INT) {throw new TypeError('Odd can only accept integer literals.');}const value = Number(ast.value);if (value % 2 === 0) {throw new TypeError('Odd can only accept odd integer literals.');}return value;},valueToLiteral: (value) => {return { kind: Kind.INT, value: String(ensureOdd(value)) };},extensions: { numeric: true },astNode: document.definitions[0],extensionASTNodes: [document.definitions[1]],});Odd.description; // => 'Odd integer values.'Odd.specifiedByURL; // => 'https://example.com/odd'Odd.coerceOutputValue(3); // => 3Odd.coerceInputValue(5); // => 5Odd.extensions; // => { numeric: true }
property [Symbol.toStringTag]
readonly [Symbol.toStringTag]: string;Returns the value used by
Object.prototype.toString.Returns
The built-in string tag for this object.
property astNode
astNode: ScalarTypeDefinitionNode;AST node from which this schema element was built, if available.
property coerceInputLiteral
coerceInputLiteral: GraphQLScalarInputLiteralCoercer<TInternal>;Coercer used to convert GraphQL scalar input literals.
property coerceInputValue
coerceInputValue: GraphQLScalarInputValueCoercer<TInternal>;Coercer used to convert externally provided scalar input values.
property coerceOutputValue
coerceOutputValue: GraphQLScalarOutputValueCoercer<TExternal>;Coercer used to convert internal scalar values for response output.
property description
description: string;Human-readable description for this schema element, if provided.
property extensionASTNodes
extensionASTNodes: readonly ScalarTypeExtensionNode[];AST extension nodes applied to this schema element.
property extensions
extensions: Readonly<GraphQLScalarTypeExtensions>;Custom extension fields reserved for users.
property name
name: string;The GraphQL name for this schema element.
property parseLiteral
parseLiteral: GraphQLScalarLiteralParser<TInternal>;Deprecated legacy parser used to convert externally provided input literals. Use
replaceVariables()andcoerceInputLiteral()instead.Deprecated
use
replaceVariables()andcoerceInputLiteral()instead,parseLiteral()will be removed in v18
property parseValue
parseValue: GraphQLScalarValueParser<TInternal>;Deprecated legacy parser used to convert externally provided input values. Use
coerceInputValue()instead.Deprecated
use
coerceInputValue()instead,parseValue()will be removed in v18
property serialize
serialize: GraphQLScalarSerializer<TExternal>;Deprecated legacy serializer used to convert internal values for response output. Use
coerceOutputValue()instead.Deprecated
use
coerceOutputValue()instead,serialize()will be removed in v18
property specifiedByURL
specifiedByURL: string;URL identifying the behavior specified for this custom scalar.
property valueToLiteral
valueToLiteral: GraphQLScalarValueToLiteral;Converter used to produce GraphQL literals from runtime input values.
method toConfig
toConfig: () => GraphQLScalarTypeNormalizedConfig<TInternal, TExternal>;Returns a normalized configuration object for this object.
Returns
A configuration object that can be used to recreate this object.
Example 1
import { GraphQLScalarType } from 'graphql/type';const Url = new GraphQLScalarType({name: 'Url',description: 'An absolute URL string.',specifiedByURL: 'https://url.spec.whatwg.org/',});const config = Url.toConfig();const UrlCopy = new GraphQLScalarType(config);config.name; // => 'Url'config.specifiedByURL; // => 'https://url.spec.whatwg.org/'UrlCopy.name; // => Url.name
method toJSON
toJSON: () => string;Returns the JSON representation used when this object is serialized.
Returns
The JSON-serializable representation.
Example 1
import { GraphQLScalarType } from 'graphql/type';const DateTime = new GraphQLScalarType({ name: 'DateTime' });DateTime.toJSON(); // => 'DateTime'JSON.stringify({ type: DateTime }); // => '{"type":"DateTime"}'
method toString
toString: () => string;Returns the schema coordinate identifying this scalar type.
Returns
The schema coordinate for this scalar type.
Example 1
import { GraphQLScalarType } from 'graphql/type';const DateTime = new GraphQLScalarType({ name: 'DateTime' });DateTime.toString(); // => 'DateTime'String(DateTime); // => 'DateTime'
class GraphQLSchema
class GraphQLSchema {}Schema Definition
A Schema is created by supplying the root types of each type of operation, query and mutation (optional). A schema definition is then supplied to the validator and executor.
Example 1
const MyAppQueryRootType = new GraphQLObjectType({name: 'Query',fields: {greeting: { type: GraphQLString },},});const MyAppMutationRootType = new GraphQLObjectType({name: 'Mutation',fields: {setGreeting: { type: GraphQLString },},});const MyAppSchema = new GraphQLSchema({query: MyAppQueryRootType,mutation: MyAppMutationRootType,});Example 2
When the schema is constructed, by default only the types that are reachable by traversing the root types are included, other types must be explicitly referenced.
const characterInterface = new GraphQLInterfaceType({name: 'Character',fields: {name: { type: GraphQLString },},});const humanType = new GraphQLObjectType({name: 'Human',interfaces: [characterInterface],fields: {name: { type: GraphQLString },},});const droidType = new GraphQLObjectType({name: 'Droid',interfaces: [characterInterface],fields: {name: { type: GraphQLString },},});const schema = new GraphQLSchema({query: new GraphQLObjectType({name: 'Query',fields: {hero: { type: characterInterface },},}),// Since this schema references only the `Character` interface it's// necessary to explicitly list the types that implement it if// you want them to be included in the final schema.types: [humanType, droidType],});Example 3
If an array of
directivesare provided to GraphQLSchema, that will be the exact list of directives represented and allowed. Ifdirectivesis not provided then a default set of the specified directives (e.g.@includeand@skip) will be used. If you wish to provide *additional* directives to these specified directives, you must explicitly declare them.const MyAppSchema = new GraphQLSchema({query: MyAppQueryRootType,directives: specifiedDirectives.concat([myCustomDirective]),});
constructor
constructor(config: Readonly<GraphQLSchemaConfig>);Creates a GraphQLSchema instance.
Parameter config
Configuration describing this object.
Example 1
// Create a schema with the required query root.import { GraphQLObjectType, GraphQLSchema, GraphQLString } from 'graphql/type';const Query = new GraphQLObjectType({name: 'Query',fields: {greeting: {type: GraphQLString,resolve: () => 'Hello',},},});const schema = new GraphQLSchema({description: 'The application schema.',query: Query,});schema.getQueryType(); // => Queryschema.description; // => 'The application schema.'Example 2
// This variant configures every schema option, including directives and extensions.import { DirectiveLocation, parse } from 'graphql/language';import {GraphQLBoolean,GraphQLDirective,GraphQLObjectType,GraphQLSchema,GraphQLString,} from 'graphql/type';const Query = new GraphQLObjectType({name: 'Query',fields: { greeting: { type: GraphQLString } },});const Mutation = new GraphQLObjectType({name: 'Mutation',fields: { setGreeting: { type: GraphQLString } },});const Subscription = new GraphQLObjectType({name: 'Subscription',fields: { greetingChanged: { type: GraphQLString } },});const AuditEvent = new GraphQLObjectType({name: 'AuditEvent',fields: { message: { type: GraphQLString } },});const authDirective = new GraphQLDirective({name: 'auth',locations: [DirectiveLocation.FIELD_DEFINITION],args: { required: { type: GraphQLBoolean } },});const schemaDocument = parse(`schema {query: Querymutation: Mutationsubscription: Subscription}extend schema @auth`);const schema = new GraphQLSchema({description: 'Operations exposed by the application.',query: Query,mutation: Mutation,subscription: Subscription,types: [AuditEvent],directives: [authDirective],extensions: { owner: 'platform' },astNode: schemaDocument.definitions[0],extensionASTNodes: [schemaDocument.definitions[1]],assumeValid: true,});schema.getMutationType(); // => Mutationschema.getSubscriptionType(); // => Subscriptionschema.getType('AuditEvent'); // => AuditEventschema.getDirective('auth'); // => authDirectiveschema.extensions; // => { owner: 'platform' }
property [Symbol.toStringTag]
readonly [Symbol.toStringTag]: string;Returns the value used by
Object.prototype.toString.Returns
The built-in string tag for this object.
property assumeValid
assumeValid: boolean;Whether this schema instance skips validation checks.
property astNode
astNode: SchemaDefinitionNode;AST node from which this schema element was built, if available.
property description
description: string;Human-readable description for this schema element, if provided.
property extensionASTNodes
extensionASTNodes: readonly SchemaExtensionNode[];AST extension nodes applied to this schema element.
property extensions
extensions: Readonly<GraphQLSchemaExtensions>;Custom extension fields reserved for users.
method getDirective
getDirective: (name: string) => Maybe<GraphQLDirective>;Returns the current directive definition.
Parameter name
The GraphQL name to look up.
Returns
The current directive definition, if known.
Example 1
import { buildSchema } from 'graphql/utilities';const schema = buildSchema(`directive @upper on FIELD_DEFINITIONtype Query {greeting: String @upper}`);schema.getDirective('upper')?.name; // => 'upper'schema.getDirective('missing'); // => undefined
method getDirectives
getDirectives: () => ReadonlyArray<GraphQLDirective>;Returns directives available in this schema.
Returns
Directives available in this schema.
Example 1
import { buildSchema } from 'graphql/utilities';const schema = buildSchema(`directive @upper on FIELD_DEFINITIONtype Query {greeting: String @upper}`);schema.getDirectives().map((directive) => directive.name); // => ['include', 'skip', 'deprecated', 'specifiedBy', 'oneOf', 'upper']
method getField
getField: ( parentType: GraphQLCompositeType, fieldName: string) => GraphQLField<unknown, unknown> | undefined;This method looks up the field on the given type definition. It has special casing for the three introspection fields,
__schema,__typeand__typename.__typenameis special because it can always be queried as a field, even in situations where no other fields are allowed, like on a Union.__schemaand__typecould get automatically added to the query type, but that would require mutating type definitions, which would cause issues.Parameter parentType
Composite type to look up the field on.
Parameter fieldName
Field name to look up.
Returns
The field definition, including supported introspection fields.
Example 1
import { buildSchema } from 'graphql/utilities';const schema = buildSchema(`type Query {greeting: String}`);const queryType = schema.getQueryType();schema.getField(queryType, 'greeting')?.name; // => 'greeting'schema.getField(queryType, '__typename')?.name; // => '__typename'schema.getField(queryType, 'missing'); // => undefined
method getImplementations
getImplementations: (interfaceType: GraphQLInterfaceType) => { objects: ReadonlyArray<GraphQLObjectType>; interfaces: ReadonlyArray<GraphQLInterfaceType>;};Returns objects and interfaces that implement an interface type.
Parameter interfaceType
Interface type to inspect.
Returns
Object and interface implementations of the interface.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertInterfaceType } from 'graphql/type';const schema = buildSchema(`interface Resource {url: String!}interface Image implements Resource {url: String!width: Int}type Photo implements Resource & Image {url: String!width: Int}type Query {resource: Resource}`);const Resource = assertInterfaceType(schema.getType('Resource'));const implementations = schema.getImplementations(Resource);implementations.interfaces.map((type) => type.name); // => ['Image']implementations.objects.map((type) => type.name); // => ['Photo']
method getMutationType
getMutationType: () => Maybe<GraphQLObjectType>;Returns the root object type for mutation operations.
Returns
The mutation root type, if this schema defines one.
Example 1
import { buildSchema } from 'graphql/utilities';const schema = buildSchema(`type Query {greeting: String}type Mutation {setGreeting(value: String!): String}`);schema.getMutationType()?.name; // => 'Mutation'
method getPossibleTypes
getPossibleTypes: ( abstractType: GraphQLAbstractType) => ReadonlyArray<GraphQLObjectType>;Returns object types that may be returned for an abstract type.
Parameter abstractType
Interface or union type to inspect.
Returns
Object types that may satisfy the abstract type.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertInterfaceType, assertUnionType } from 'graphql/type';const schema = buildSchema(`interface Node {id: ID!}type User implements Node {id: ID!}type Organization implements Node {id: ID!}union SearchResult = User | Organizationtype Query {node: Nodesearch: [SearchResult]}`);const Node = assertInterfaceType(schema.getType('Node'));const SearchResult = assertUnionType(schema.getType('SearchResult'));schema.getPossibleTypes(Node).map((type) => type.name); // => ['User', 'Organization']schema.getPossibleTypes(SearchResult).map((type) => type.name); // => ['User', 'Organization']
method getQueryType
getQueryType: () => Maybe<GraphQLObjectType>;Returns the root object type for query operations.
Returns
The query root type, if this schema defines one.
Example 1
import { buildSchema } from 'graphql/utilities';const schema = buildSchema(`type Query {greeting: String}`);schema.getQueryType()?.name; // => 'Query'
method getRootType
getRootType: (operation: OperationTypeNode) => Maybe<GraphQLObjectType>;Returns the root object type for the requested operation kind.
Parameter operation
Operation kind to resolve.
Returns
The root object type for the operation kind, if this schema defines one.
Example 1
import { OperationTypeNode } from 'graphql/language';import { buildSchema } from 'graphql/utilities';const schema = buildSchema(`type Query {greeting: String}type Mutation {setGreeting(value: String!): String}`);schema.getRootType(OperationTypeNode.QUERY)?.name; // => 'Query'schema.getRootType(OperationTypeNode.MUTATION)?.name; // => 'Mutation'schema.getRootType(OperationTypeNode.SUBSCRIPTION); // => undefined
method getSubscriptionType
getSubscriptionType: () => Maybe<GraphQLObjectType>;Returns the root object type for subscription operations.
Returns
The subscription root type, if this schema defines one.
Example 1
import { buildSchema } from 'graphql/utilities';const schema = buildSchema(`type Query {greeting: String}type Subscription {greetings: String}`);schema.getSubscriptionType()?.name; // => 'Subscription'
method getType
getType: (name: string) => GraphQLNamedType | undefined;Returns the named type with the provided name.
Parameter name
The GraphQL name to look up.
Returns
The named schema type, if one exists.
Example 1
import { buildSchema } from 'graphql/utilities';const schema = buildSchema(`type User {name: String}type Query {viewer: User}`);schema.getType('User')?.toString(); // => 'User'schema.getType('Missing'); // => undefined
method getTypeMap
getTypeMap: () => TypeMap;Returns all named types known to this schema.
Returns
A map of schema types keyed by type name.
Example 1
import { buildSchema } from 'graphql/utilities';const schema = buildSchema(`type User {name: String}type Query {viewer: User}`);const typeMap = schema.getTypeMap();typeMap.User.name; // => 'User'typeMap.Query.name; // => 'Query'typeMap.String.name; // => 'String'
method isSubType
isSubType: ( abstractType: GraphQLAbstractType, maybeSubType: GraphQLObjectType | GraphQLInterfaceType) => boolean;Returns whether one type is a possible runtime subtype of an abstract type.
Parameter abstractType
Interface or union type to inspect.
Parameter maybeSubType
Object or interface type to test as a possible subtype.
Returns
True when the subtype may satisfy the abstract type.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertInterfaceType, assertObjectType } from 'graphql/type';const schema = buildSchema(`interface Node {id: ID!}type User implements Node {id: ID!}type Review {body: String}type Query {node: Nodereview: Review}`);const Node = assertInterfaceType(schema.getType('Node'));const User = assertObjectType(schema.getType('User'));const Review = assertObjectType(schema.getType('Review'));schema.isSubType(Node, User); // => trueschema.isSubType(Node, Review); // => false
method toConfig
toConfig: () => GraphQLSchemaNormalizedConfig;Returns a normalized configuration object for this object.
The returned config preserves the original
assumeValidflag so the schema can be recreated with the same validation behavior.Returns
A configuration object that can be used to recreate this object.
Example 1
import { buildSchema } from 'graphql/utilities';import { GraphQLSchema } from 'graphql/type';const schema = buildSchema(`type Query {greeting: String}`);const config = schema.toConfig();const schemaCopy = new GraphQLSchema(config);config.query?.name; // => 'Query'schemaCopy.getQueryType()?.name; // => 'Query'
class GraphQLUnionType
class GraphQLUnionType<TSource = any, TContext = any> implements GraphQLSchemaElement {}Union Type Definition
When a field can return one of a heterogeneous set of types, a Union type is used to describe what types are possible as well as providing a function to determine which type is actually used when the field is resolved.
Example 1
const PetType = new GraphQLUnionType({name: 'Pet',types: [DogType, CatType],resolveType: (value) => {if (value instanceof Dog) {return DogType;}if (value instanceof Cat) {return CatType;}},});
constructor
constructor(config: Readonly<GraphQLUnionTypeConfig<TSource, TContext>>);Creates a GraphQLUnionType instance.
Parameter config
Configuration describing this object.
Example 1
import { parse } from 'graphql/language';import {GraphQLObjectType,GraphQLString,GraphQLUnionType,} from 'graphql/type';const document = parse(`union Media = Photo | Videoextend union Media = Audio`);const Photo = new GraphQLObjectType({name: 'Photo',fields: { url: { type: GraphQLString } },});const Video = new GraphQLObjectType({name: 'Video',fields: { url: { type: GraphQLString } },});const Media = new GraphQLUnionType({name: 'Media',description: 'Media that can appear in a search result.',types: [Photo, Video],resolveType: (value) => {return typeof value === 'object' && value != null && 'duration' in value? 'Video': 'Photo';},extensions: { searchable: true },astNode: document.definitions[0],extensionASTNodes: [document.definitions[1]],});Media.description; // => 'Media that can appear in a search result.'Media.getTypes().map((type) => type.name); // => ['Photo', 'Video']Media.extensions; // => { searchable: true }
property [Symbol.toStringTag]
readonly [Symbol.toStringTag]: string;Returns the value used by
Object.prototype.toString.Returns
The built-in string tag for this object.
property astNode
astNode: UnionTypeDefinitionNode;AST node from which this schema element was built, if available.
property description
description: string;Human-readable description for this schema element, if provided.
property extensionASTNodes
extensionASTNodes: readonly UnionTypeExtensionNode[];AST extension nodes applied to this schema element.
property extensions
extensions: Readonly<GraphQLUnionTypeExtensions>;Custom extension fields reserved for users.
property name
name: string;The GraphQL name for this schema element.
property resolveType
resolveType: GraphQLTypeResolver<TSource, TContext>;Function that resolves the concrete object type for this abstract type.
method getTypes
getTypes: () => ReadonlyArray<GraphQLObjectType>;Returns the object types included in this union.
Returns
The union member object types.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertUnionType } from 'graphql/type';const schema = buildSchema(`type Photo {url: String!}type Video {url: String!}union Media = Photo | Videotype Query {media: [Media]}`);const Media = assertUnionType(schema.getType('Media'));Media.getTypes().map((type) => type.name); // => ['Photo', 'Video']
method toConfig
toConfig: () => GraphQLUnionTypeNormalizedConfig<TSource, TContext>;Returns a normalized configuration object for this object.
Returns
A configuration object that can be used to recreate this object.
Example 1
import {GraphQLObjectType,GraphQLString,GraphQLUnionType,} from 'graphql/type';const Photo = new GraphQLObjectType({name: 'Photo',fields: { url: { type: GraphQLString } },});const Video = new GraphQLObjectType({name: 'Video',fields: { url: { type: GraphQLString } },});const Media = new GraphQLUnionType({name: 'Media',types: [Photo, Video],});const config = Media.toConfig();const MediaCopy = new GraphQLUnionType(config);MediaCopy.getTypes().map((type) => type.name); // => ['Photo', 'Video']
method toJSON
toJSON: () => string;Returns the JSON representation used when this object is serialized.
Returns
The JSON-serializable representation.
Example 1
import {GraphQLObjectType,GraphQLString,GraphQLUnionType,} from 'graphql/type';const Photo = new GraphQLObjectType({name: 'Photo',fields: { url: { type: GraphQLString } },});const SearchResult = new GraphQLUnionType({name: 'SearchResult',types: [Photo],});SearchResult.toJSON(); // => 'SearchResult'JSON.stringify({ type: SearchResult }); // => '{"type":"SearchResult"}'
method toString
toString: () => string;Returns the schema coordinate identifying this union type.
Returns
The schema coordinate for this union type.
Example 1
import { buildSchema } from 'graphql/utilities';import { assertUnionType } from 'graphql/type';const schema = buildSchema(`type Photo {url: String!}union SearchResult = Phototype Query {search: [SearchResult]}`);const SearchResult = assertUnionType(schema.getType('SearchResult'));SearchResult.toString(); // => 'SearchResult'
class Lexer
class Lexer implements LexerInterface {}Given a Source object, creates a Lexer for that source. A Lexer is a stateful stream generator in that every time it is advanced, it returns the next token in the Source. Assuming the source lexes, the final Token emitted by the lexer will be of kind EOF, after which the lexer will repeatedly return the same EOF token whenever called.
constructor
constructor(source: Source);Creates a Lexer instance.
Parameter source
Source document used to derive error locations.
Example 1
import { Lexer, Source, TokenKind } from 'graphql/language';const lexer = new Lexer(new Source('{ hello }'));lexer.token.kind; // => TokenKind.SOFlexer.advance().kind; // => TokenKind.BRACE_Llexer.advance().value; // => 'hello'lexer.advance().kind; // => TokenKind.BRACE_R
property [Symbol.toStringTag]
readonly [Symbol.toStringTag]: string;Returns the value used by
Object.prototype.toString.Returns
The built-in string tag for this object.
property lastToken
lastToken: Token;Most recent non-ignored token returned by the lexer.
property line
line: number;The (1-indexed) line containing the current token.
property lineStart
lineStart: number;Character offset where the current line starts.
property source
source: Source;Source document used to derive error locations.
property token
token: Token;Current non-ignored token at the lexer cursor.
method advance
advance: () => Token;Advances the token stream to the next non-ignored token.
Returns
The next non-ignored token.
Example 1
import { Lexer, Source } from 'graphql/language';const lexer = new Lexer(new Source('{ hello }'));const token = lexer.advance();token.kind; // => '{'lexer.token; // => token
method lookahead
lookahead: () => Token;Looks ahead and returns the next non-ignored token, but does not change the state of Lexer.
Returns
The next non-ignored token without advancing the lexer.
Example 1
import { Lexer, Source } from 'graphql/language';const lexer = new Lexer(new Source('{ hello }'));const token = lexer.lookahead();token.kind; // => '{'lexer.token.kind; // => '<SOF>'
class Location
class Location {}Contains a range of UTF-8 character offsets and token references that identify the region of the source from which the AST derived.
constructor
constructor(startToken: Token, endToken: Token, source: Source);Creates a Location instance.
Parameter startToken
The start token.
Parameter endToken
The end token.
Parameter source
Source document used to derive error locations.
Example 1
import { Location, Source, Token, TokenKind } from 'graphql/language';const source = new Source('{ hello }');const startToken = new Token(TokenKind.BRACE_L, 0, 1, 1, 1);const endToken = new Token(TokenKind.BRACE_R, 8, 9, 1, 9);const location = new Location(startToken, endToken, source);location.start; // => 0location.end; // => 9location.source.body; // => '{ hello }'
property [Symbol.toStringTag]
readonly [Symbol.toStringTag]: string;Returns the value used by
Object.prototype.toString.Returns
The built-in string tag for this object.
property end
readonly end: number;The character offset at which this Node ends.
property endToken
readonly endToken: Token;The Token at which this Node ends.
property source
readonly source: Source;The Source document the AST represents.
property start
readonly start: number;The character offset at which this Node begins.
property startToken
readonly startToken: Token;The Token at which this Node begins.
method toJSON
toJSON: () => { start: number; end: number };Returns a JSON representation of this location.
Returns
The JSON-serializable representation.
Example 1
import { parse } from 'graphql/language';const document = parse('{ hello }');const location = document.loc?.toJSON();location; // => { start: 0, end: 9 }
class Source
class Source {}A representation of source input to GraphQL. The
nameandlocationOffsetparameters are optional, but they are useful for clients who store GraphQL documents in source files. For example, if the GraphQL input starts at line 40 in a file namedFoo.graphql, it might be useful fornameto be"Foo.graphql"and location to be{ line: 40, column: 1 }. Thelineandcolumnproperties inlocationOffsetare 1-indexed.
constructor
constructor(body: string, name?: string, locationOffset?: Location);Creates a Source instance.
Parameter body
The GraphQL source text.
Parameter name
Name used in diagnostics for this source.
Parameter locationOffset
One-indexed line and column where this source begins.
Example 1
import { Source } from 'graphql/language';const source = new Source('type Query { greeting: String }', 'schema.graphql', {line: 10,column: 1,});source.body; // => 'type Query { greeting: String }'source.name; // => 'schema.graphql'source.locationOffset; // => { line: 10, column: 1 }
property [Symbol.toStringTag]
readonly [Symbol.toStringTag]: string;Returns the value used by
Object.prototype.toString.Returns
The built-in string tag for this object.
property body
body: string;The GraphQL source text.
property locationOffset
locationOffset: Location;One-indexed line and column where this source begins.
property name
name: string;Name used in diagnostics for this source, such as a file path or request name.
class Token
class Token {}Represents a range of characters represented by a lexical token within a Source.
constructor
constructor( kind: TokenKind, start: number, end: number, line: number, column: number, value?: string);Creates a Token instance.
Parameter kind
Token kind produced by lexical analysis.
Parameter start
Character offset where this token begins.
Parameter end
Character offset where this token ends.
Parameter line
One-indexed line number where this token begins.
Parameter column
One-indexed column number where this token begins.
Parameter value
Interpreted value for non-punctuation tokens.
Example 1
import { Token, TokenKind } from 'graphql/language';const token = new Token(TokenKind.NAME, 2, 7, 1, 3, 'hello');token.kind; // => TokenKind.NAMEtoken.value; // => 'hello'token.toJSON(); // => { kind: 'Name', value: 'hello', line: 1, column: 3 }
property [Symbol.toStringTag]
readonly [Symbol.toStringTag]: string;Returns the value used by
Object.prototype.toString.Returns
The built-in string tag for this object.
property column
readonly column: number;The 1-indexed column number at which this Token begins.
property end
readonly end: number;The character offset at which this Node ends.
property kind
readonly kind: TokenKind;The kind of Token.
property line
readonly line: number;The 1-indexed line number on which this Token appears.
property next
readonly next: Token;Next token in the token stream, including ignored tokens.
property prev
readonly prev: Token;Tokens exist as nodes in a double-linked-list amongst all tokens including ignored tokens. is always the first node and the last.
property start
readonly start: number;The character offset at which this Node begins.
property value
readonly value: string;For non-punctuation tokens, represents the interpreted value of the token.
Note: is undefined for punctuation tokens, but typed as string for convenience in the parser.
method toJSON
toJSON: () => { kind: TokenKind; value?: string; line: number; column: number };Returns a JSON representation of this token.
Returns
The JSON-serializable representation.
Example 1
import { Lexer, Source } from 'graphql/language';const lexer = new Lexer(new Source('{ hello }'));const token = lexer.advance().toJSON();token; // => { kind: '{', value: undefined, line: 1, column: 1 }
class TypeInfo
class TypeInfo {}TypeInfo is a utility class which, given a GraphQL schema, can keep track of the current field and type definitions at any point in a GraphQL document AST during a recursive descent by calling
enter(node)andleave(node).
constructor
constructor( schema: GraphQLSchema, initialType?: GraphQLType, fragmentSignatures?: (fragmentName: string) => Maybe<FragmentSignature>);Creates a TypeInfo instance.
Parameter schema
Schema used for type lookups.
Parameter initialType
Optional type to use at the start of traversal.
Parameter fragmentSignatures
Fragment signatures available during traversal.
Example 1
// Track field types during a visitWithTypeInfo traversal.import { parse, visit } from 'graphql/language';import { buildSchema } from 'graphql/utilities';import { TypeInfo, visitWithTypeInfo } from 'graphql/utilities';const schema = buildSchema(`type Query {greeting: String}`);const typeInfo = new TypeInfo(schema);const seenTypes = [];visit(parse('{ greeting }'),visitWithTypeInfo(typeInfo, {Field: () => {seenTypes.push(String(typeInfo.getType()));},}),);seenTypes; // => ['String']Example 2
// This variant starts from an initial type and supplies fragment signatures.import { Kind, parse } from 'graphql/language';import { buildSchema, TypeInfo } from 'graphql/utilities';const schema = buildSchema(`type Query {greeting(name: String): String}`);const fragmentDocument = parse('fragment GreetingFields($name: String) on Query { greeting(name: $name) }',{ experimentalFragmentArguments: true },);const fragmentDefinition = fragmentDocument.definitions[0];const variableDefinition = fragmentDefinition.variableDefinitions[0];const typeInfo = new TypeInfo(schema, schema.getQueryType(), (name) =>name === 'GreetingFields'? {definition: fragmentDefinition,variableDefinitions: new Map([['name', variableDefinition]]),}: undefined,);typeInfo.enter({kind: Kind.SELECTION_SET,selections: [],});typeInfo.enter({kind: Kind.FRAGMENT_SPREAD,name: { kind: Kind.NAME, value: 'GreetingFields' },arguments: [],directives: [],});String(typeInfo.getParentType()); // => 'Query'typeInfo.getFragmentSignature()?.definition.name.value; // => 'GreetingFields'
property [Symbol.toStringTag]
readonly [Symbol.toStringTag]: string;Returns the value used by
Object.prototype.toString.Returns
The built-in string tag for this object.
method enter
enter: (node: ASTNode) => void;Updates this TypeInfo instance for an entered AST node.
Parameter node
AST node being entered.
Returns
Nothing.
Example 1
import { Kind, parse } from 'graphql/language';import { buildSchema, TypeInfo } from 'graphql/utilities';const schema = buildSchema(`type Query {greeting: String}`);const document = parse('{ greeting }');const operation = document.definitions[0];const selectionSet = operation.selectionSet;const field = selectionSet.selections[0];const typeInfo = new TypeInfo(schema);typeInfo.enter(operation);typeInfo.enter(selectionSet);typeInfo.enter(field);field.kind; // => Kind.FIELDtypeInfo.getParentType()?.name; // => 'Query'String(typeInfo.getType()); // => 'String'
method getArgument
getArgument: () => Maybe<GraphQLArgument>;Returns the current argument definition.
Returns
The current argument definition, if known.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';const schema = buildSchema(`type Query {reviews(limit: Int = 10): [String]}`);const typeInfo = new TypeInfo(schema);let argumentName;visit(parse('{ reviews(limit: 5) }'),visitWithTypeInfo(typeInfo, {Argument: () => {argumentName = typeInfo.getArgument()?.name;},}),);argumentName; // => 'limit'
method getDefaultValue
getDefaultValue: () => unknown;Returns the default input representation for the current input position.
Returns
The current default input, if one is available.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';const schema = buildSchema(`type Query {reviews(limit: Int = 10): [String]}`);const typeInfo = new TypeInfo(schema);let defaultLimit;visit(parse('{ reviews(limit: 5) }'),visitWithTypeInfo(typeInfo, {Argument: () => {defaultLimit = typeInfo.getDefaultValue();},}),);defaultLimit; // => { literal: { kind: 'IntValue', value: '10' } }
method getDirective
getDirective: () => Maybe<GraphQLDirective>;Returns the current directive definition.
Returns
The current directive definition, if known.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';const schema = buildSchema(`type Query {greeting: String}`);const typeInfo = new TypeInfo(schema);let directiveName;visit(parse('{ greeting @include(if: true) }'),visitWithTypeInfo(typeInfo, {Directive: () => {directiveName = typeInfo.getDirective()?.name;},}),);directiveName; // => 'include'
method getEnumValue
getEnumValue: () => Maybe<GraphQLEnumValue>;Returns the current enum value definition.
Returns
The current enum value definition, if known.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';const schema = buildSchema(`enum Sort {NEWESTOLDEST}type Query {reviews(sort: Sort = NEWEST): [String]}`);const typeInfo = new TypeInfo(schema);let enumValueName;visit(parse('{ reviews(sort: OLDEST) }'),visitWithTypeInfo(typeInfo, {EnumValue: () => {enumValueName = typeInfo.getEnumValue()?.name;},}),);enumValueName; // => 'OLDEST'
method getFieldDef
getFieldDef: () => Maybe<GraphQLField<unknown, unknown>>;Returns the current field definition.
Returns
The current field definition, if known.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';const schema = buildSchema(`type Query {greeting: String}`);const typeInfo = new TypeInfo(schema);let fieldName;visit(parse('{ greeting }'),visitWithTypeInfo(typeInfo, {Field: () => {fieldName = typeInfo.getFieldDef()?.name;},}),);fieldName; // => 'greeting'
method getFragmentArgument
getFragmentArgument: () => Maybe<VariableDefinitionNode>;Returns the current fragment argument definition.
Returns
The variable definition for the current fragment argument.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';const schema = buildSchema(`type Query {greeting(name: String): String}`);const document = parse(`{...GreetingFields(name: "Ada")}fragment GreetingFields($name: String) on Query {greeting(name: $name)}`,{ experimentalFragmentArguments: true },);const typeInfo = new TypeInfo(schema);let argumentName;visit(document,visitWithTypeInfo(typeInfo, {FragmentArgument: () => {argumentName = typeInfo.getFragmentArgument()?.variable.name.value;},}),);argumentName; // => 'name'
method getFragmentSignature
getFragmentSignature: () => Maybe<FragmentSignature>;Returns the current fragment signature.
Returns
The fragment signature for the current fragment definition.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';const schema = buildSchema(`type Query {greeting: String}`);const document = parse(`{...GreetingFields}fragment GreetingFields on Query {greeting}`,{ experimentalFragmentArguments: true },);const typeInfo = new TypeInfo(schema);let fragmentName;visit(document,visitWithTypeInfo(typeInfo, {FragmentSpread: () => {fragmentName = typeInfo.getFragmentSignature()?.definition.name.value;},}),);fragmentName; // => 'GreetingFields'
method getFragmentSignatureByName
getFragmentSignatureByName: () => ( fragmentName: string) => Maybe<FragmentSignature>;Returns the function used to look up fragment signatures by name.
Returns
A function that maps fragment names to fragment signatures.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';const schema = buildSchema(`type Query {greeting: String}`);const document = parse(`{...GreetingFields}fragment GreetingFields on Query {greeting}`,{ experimentalFragmentArguments: true },);const typeInfo = new TypeInfo(schema);let fragmentName;visit(document,visitWithTypeInfo(typeInfo, {Document: () => {const getFragmentSignature = typeInfo.getFragmentSignatureByName();fragmentName =getFragmentSignature('GreetingFields')?.definition.name.value;},}),);fragmentName; // => 'GreetingFields'
method getInputType
getInputType: () => Maybe<GraphQLInputType>;Returns the current input type at this point in traversal.
Returns
The current input type, if known.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';const schema = buildSchema(`type Query {reviews(stars: Int!, sort: Sort = NEWEST): [String]}enum Sort {NEWESTOLDEST}`);const typeInfo = new TypeInfo(schema);const inputTypes = {};visit(parse('{ reviews(stars: 5, sort: OLDEST) }'),visitWithTypeInfo(typeInfo, {Argument: (node) => {inputTypes[node.name.value] = String(typeInfo.getInputType());},}),);inputTypes; // => { stars: 'Int!', sort: 'Sort' }
method getParentInputType
getParentInputType: () => Maybe<GraphQLInputType>;Returns the parent input type for the current input position.
Returns
The parent input type, if known.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';const schema = buildSchema(`input ReviewFilter {stars: Int!}type Query {reviews(filter: ReviewFilter): [String]}`);const typeInfo = new TypeInfo(schema);const parentInputTypes = {};visit(parse('{ reviews(filter: { stars: 5 }) }'),visitWithTypeInfo(typeInfo, {ObjectField: (node) => {parentInputTypes[node.name.value] = String(typeInfo.getParentInputType());},}),);parentInputTypes; // => { stars: 'ReviewFilter' }
method getParentType
getParentType: () => Maybe<GraphQLCompositeType>;Returns the current parent composite type.
Returns
The current parent composite type, if known.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';const schema = buildSchema(`type Query {viewer: User}type User {name: String}`);const typeInfo = new TypeInfo(schema);const parentTypes = {};visit(parse('{ viewer { name } }'),visitWithTypeInfo(typeInfo, {Field: (node) => {parentTypes[node.name.value] = String(typeInfo.getParentType());},}),);parentTypes; // => { viewer: 'Query', name: 'User' }
method getType
getType: () => Maybe<GraphQLOutputType>;Returns the current output type at this point in traversal.
Returns
The current output type, if known.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';const schema = buildSchema(`type Query {viewer: User}type User {name: String}`);const typeInfo = new TypeInfo(schema);const fieldTypes = {};visit(parse('{ viewer { name } }'),visitWithTypeInfo(typeInfo, {Field: (node) => {fieldTypes[node.name.value] = String(typeInfo.getType());},}),);fieldTypes; // => { viewer: 'User', name: 'String' }
method leave
leave: (node: ASTNode) => void;Updates this TypeInfo instance for a left AST node.
Parameter node
AST node being entered.
Returns
Nothing.
Example 1
import { parse } from 'graphql/language';import { buildSchema, TypeInfo } from 'graphql/utilities';const schema = buildSchema(`type Query {greeting: String}`);const document = parse('{ greeting }');const operation = document.definitions[0];const selectionSet = operation.selectionSet;const field = selectionSet.selections[0];const typeInfo = new TypeInfo(schema);typeInfo.enter(operation);typeInfo.enter(selectionSet);typeInfo.enter(field);String(typeInfo.getType()); // => 'String'typeInfo.leave(field);typeInfo.getType(); // => undefined
class ValidationContext
class ValidationContext extends ASTValidationContext {}Validation context passed to query validation rules.
constructor
constructor( schema: GraphQLSchema, ast: DocumentNode, typeInfo: TypeInfo, onError: (error: GraphQLError) => void, hideSuggestions?: boolean);Creates a ValidationContext instance.
Parameter schema
Schema used to validate the document.
Parameter ast
Document AST being validated.
Parameter typeInfo
TypeInfo instance used to track traversal state.
Parameter onError
Callback invoked for each validation error.
Parameter hideSuggestions
Whether suggestion text should be omitted from errors.
Example 1
import { parse } from 'graphql/language';import { GraphQLError } from 'graphql/error';import { buildSchema, TypeInfo } from 'graphql/utilities';import { ValidationContext } from 'graphql/validation';const schema = buildSchema(`type Query {greeting: String}`);const document = parse('{ greeting }');const errors = [];const context = new ValidationContext(schema,document,new TypeInfo(schema),(error) => errors.push(error),);context.reportError(new GraphQLError('Example validation error.'));context.getSchema(); // => schemaerrors[0].message; // => 'Example validation error.'
property [Symbol.toStringTag]
readonly [Symbol.toStringTag]: string;Returns the value used by
Object.prototype.toString.Returns
The built-in string tag for this object.
property hideSuggestions
readonly hideSuggestions: boolean;Returns whether validation error suggestions are hidden.
Returns
True when suggestion text should be omitted from errors.
method getArgument
getArgument: () => Maybe<GraphQLArgument>;Returns the current argument definition.
Returns
The current argument definition, if known.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';import { ValidationContext } from 'graphql/validation';const schema = buildSchema(`type Query {reviews(limit: Int): [String]}`);const document = parse('{ reviews(limit: 5) }');const typeInfo = new TypeInfo(schema);const context = new ValidationContext(schema, document, typeInfo, () => {});let argumentName;visit(document,visitWithTypeInfo(typeInfo, {Argument: () => {argumentName = context.getArgument()?.name;},}),);argumentName; // => 'limit'
method getDirective
getDirective: () => Maybe<GraphQLDirective>;Returns the current directive definition.
Returns
The current directive definition, if known.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';import { ValidationContext } from 'graphql/validation';const schema = buildSchema(`type Query {greeting: String}`);const document = parse('{ greeting @include(if: true) }');const typeInfo = new TypeInfo(schema);const context = new ValidationContext(schema, document, typeInfo, () => {});let directiveName;visit(document,visitWithTypeInfo(typeInfo, {Directive: () => {directiveName = context.getDirective()?.name;},}),);directiveName; // => 'include'
method getEnumValue
getEnumValue: () => Maybe<GraphQLEnumValue>;Returns the current enum value definition.
Returns
The current enum value definition, if known.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';import { ValidationContext } from 'graphql/validation';const schema = buildSchema(`enum Sort {NEWESTOLDEST}type Query {reviews(sort: Sort): [String]}`);const document = parse('{ reviews(sort: OLDEST) }');const typeInfo = new TypeInfo(schema);const context = new ValidationContext(schema, document, typeInfo, () => {});let enumValueName;visit(document,visitWithTypeInfo(typeInfo, {EnumValue: () => {enumValueName = context.getEnumValue()?.name;},}),);enumValueName; // => 'OLDEST'
method getFieldDef
getFieldDef: () => Maybe<GraphQLField<unknown, unknown>>;Returns the current field definition.
Returns
The current field definition, if known.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';import { ValidationContext } from 'graphql/validation';const schema = buildSchema(`type Query {greeting: String}`);const document = parse('{ greeting }');const typeInfo = new TypeInfo(schema);const context = new ValidationContext(schema, document, typeInfo, () => {});let fieldName;visit(document,visitWithTypeInfo(typeInfo, {Field: () => {fieldName = context.getFieldDef()?.name;},}),);fieldName; // => 'greeting'
method getFragmentSignature
getFragmentSignature: () => Maybe<FragmentSignature>;Returns the fragment signature at the current traversal position.
Returns
The current fragment signature, if one is active.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';import { ValidationContext } from 'graphql/validation';const schema = buildSchema(`type Query {greeting: String}`);const document = parse(`{...GreetingFields}fragment GreetingFields on Query {greeting}`,{ experimentalFragmentArguments: true },);const typeInfo = new TypeInfo(schema);const context = new ValidationContext(schema, document, typeInfo, () => {});let fragmentName;visit(document,visitWithTypeInfo(typeInfo, {FragmentSpread: () => {fragmentName = context.getFragmentSignature()?.definition.name.value;},}),);fragmentName; // => 'GreetingFields'
method getFragmentSignatureByName
getFragmentSignatureByName: () => ( fragmentName: string) => Maybe<FragmentSignature>;Returns the function used to look up fragment signatures by name.
Returns
A function that maps fragment names to fragment signatures.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';import { ValidationContext } from 'graphql/validation';const schema = buildSchema(`type Query {greeting: String}`);const document = parse(`{...GreetingFields}fragment GreetingFields on Query {greeting}`,{ experimentalFragmentArguments: true },);const typeInfo = new TypeInfo(schema);const context = new ValidationContext(schema, document, typeInfo, () => {});let fragmentName;visit(document,visitWithTypeInfo(typeInfo, {Document: () => {const getFragmentSignature = context.getFragmentSignatureByName();fragmentName =getFragmentSignature('GreetingFields')?.definition.name.value;},}),);fragmentName; // => 'GreetingFields'
method getInputType
getInputType: () => Maybe<GraphQLInputType>;Returns the current input type at this point in traversal.
Returns
The current input type, if known.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';import { ValidationContext } from 'graphql/validation';const schema = buildSchema(`type Query {reviews(limit: Int): [String]}`);const document = parse('{ reviews(limit: 5) }');const typeInfo = new TypeInfo(schema);const context = new ValidationContext(schema, document, typeInfo, () => {});let inputTypeName;visit(document,visitWithTypeInfo(typeInfo, {Argument: () => {inputTypeName = String(context.getInputType());},}),);inputTypeName; // => 'Int'
method getParentInputType
getParentInputType: () => Maybe<GraphQLInputType>;Returns the parent input type for the current input position.
Returns
The parent input type, if known.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';import { ValidationContext } from 'graphql/validation';const schema = buildSchema(`input ReviewFilter {stars: Int}type Query {reviews(filter: ReviewFilter): [String]}`);const document = parse('{ reviews(filter: { stars: 5 }) }');const typeInfo = new TypeInfo(schema);const context = new ValidationContext(schema, document, typeInfo, () => {});let parentInputTypeName;visit(document,visitWithTypeInfo(typeInfo, {ObjectField: () => {parentInputTypeName = String(context.getParentInputType());},}),);parentInputTypeName; // => 'ReviewFilter'
method getParentType
getParentType: () => Maybe<GraphQLCompositeType>;Returns the current parent composite type.
Returns
The current parent composite type, if known.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';import { ValidationContext } from 'graphql/validation';const schema = buildSchema(`type Query {greeting: String}`);const document = parse('{ greeting }');const typeInfo = new TypeInfo(schema);const context = new ValidationContext(schema, document, typeInfo, () => {});let parentTypeName;visit(document,visitWithTypeInfo(typeInfo, {Field: () => {parentTypeName = context.getParentType()?.name;},}),);parentTypeName; // => 'Query'
method getRecursiveVariableUsages
getRecursiveVariableUsages: ( operation: OperationDefinitionNode) => ReadonlyArray<VariableUsage>;Returns variable usages for an operation, including variables used by referenced fragments.
Parameter operation
Operation definition to inspect.
Returns
Variable usages reachable from the operation.
Example 1
import { parse } from 'graphql/language';import { buildSchema, TypeInfo } from 'graphql/utilities';import { ValidationContext } from 'graphql/validation';const schema = buildSchema(`type Query {viewer: User}type User {name(prefix: String): String}`);const document = parse(`query ($prefix: String) {viewer {...UserName}}fragment UserName on User {name(prefix: $prefix)}`);const operation = document.definitions[0];const context = new ValidationContext(schema,document,new TypeInfo(schema),() => {},);const usages = context.getRecursiveVariableUsages(operation);usages.map((usage) => usage.node.name.value); // => ['prefix']
method getSchema
getSchema: () => GraphQLSchema;Returns the schema being used by this validation context.
Returns
The schema being validated against.
Example 1
import { parse } from 'graphql/language';import { buildSchema, TypeInfo } from 'graphql/utilities';import { ValidationContext } from 'graphql/validation';const schema = buildSchema(`type Query {greeting: String}`);const context = new ValidationContext(schema,parse('{ greeting }'),new TypeInfo(schema),() => {},);context.getSchema().getQueryType()?.name; // => 'Query'
method getType
getType: () => Maybe<GraphQLOutputType>;Returns the current output type at this point in traversal.
Returns
The current output type, if known.
Example 1
import { parse, visit } from 'graphql/language';import { buildSchema, TypeInfo, visitWithTypeInfo } from 'graphql/utilities';import { ValidationContext } from 'graphql/validation';const schema = buildSchema(`type Query {greeting: String}`);const document = parse('{ greeting }');const typeInfo = new TypeInfo(schema);const context = new ValidationContext(schema, document, typeInfo, () => {});let typeName;visit(document,visitWithTypeInfo(typeInfo, {Field: () => {typeName = String(context.getType());},}),);typeName; // => 'String'
method getVariableUsages
getVariableUsages: (node: NodeWithSelectionSet) => ReadonlyArray<VariableUsage>;Returns variable usages found directly within this node.
Parameter node
The AST node to inspect or visit.
Returns
Variable usages found directly within this node.
Example 1
import { parse } from 'graphql/language';import { buildSchema, TypeInfo } from 'graphql/utilities';import { ValidationContext } from 'graphql/validation';const schema = buildSchema(`type Query {greeting(name: String): String}`);const document = parse('query ($name: String) { greeting(name: $name) }');const operation = document.definitions[0];const context = new ValidationContext(schema,document,new TypeInfo(schema),() => {},);const usages = context.getVariableUsages(operation);usages[0].node.name.value; // => 'name'String(usages[0].type); // => 'String'
Interfaces
interface ArgumentCoordinateNode
interface ArgumentCoordinateNode {}A schema coordinate that refers to a field or directive argument.
property argumentName
readonly argumentName: NameNode;The argument name referenced by this schema coordinate.
property fieldName
readonly fieldName: NameNode;The field name referenced by this schema coordinate.
property kind
readonly kind: KindTypeMap['ARGUMENT_COORDINATE'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
interface ArgumentNode
interface ArgumentNode {}An argument supplied to a field or directive.
property kind
readonly kind: KindTypeMap['ARGUMENT'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
property value
readonly value: ValueNode;Parsed value represented by this node.
interface AsyncWorkFinishedInfo
interface AsyncWorkFinishedInfo {}Information passed to hooks after asynchronous execution work has finished.
property validatedExecutionArgs
validatedExecutionArgs: ValidatedExecutionArgs;Validated execution arguments for the operation that finished async work.
interface BooleanValueNode
interface BooleanValueNode {}A boolean value literal.
property kind
readonly kind: KindTypeMap['BOOLEAN'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property value
readonly value: boolean;Parsed value represented by this node.
interface BreakingChange
interface BreakingChange {}Description of a schema change that may break existing operations.
property description
description: string;Human-readable description of the breaking schema change.
property type
type: BreakingChangeType;Specific kind of breaking schema change.
interface BuildSchemaOptions
interface BuildSchemaOptions extends GraphQLSchemaValidationOptions {}Options used when building a schema from SDL or a parsed SDL document.
property assumeValidSDL
assumeValidSDL?: boolean | undefined;Set to true to assume the SDL is valid.
Default: false
interface ConstArgumentNode
interface ConstArgumentNode {}An argument node whose value is guaranteed to be constant.
property kind
readonly kind: KindTypeMap['ARGUMENT'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
property value
readonly value: ConstValueNode;Parsed value represented by this node.
interface ConstDirectiveNode
interface ConstDirectiveNode {}A directive whose arguments are all constant values.
property arguments
readonly arguments?: ReadonlyArray<ConstArgumentNode> | undefined;Arguments supplied to this field, directive, or coordinate.
property kind
readonly kind: KindTypeMap['DIRECTIVE'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
interface ConstListValueNode
interface ConstListValueNode {}A list value literal whose elements are all constant values.
property kind
readonly kind: KindTypeMap['LIST'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property values
readonly values: ReadonlyArray<ConstValueNode>;Values contained in this enum, list, or input-object definition.
interface ConstObjectFieldNode
interface ConstObjectFieldNode {}A field inside a constant input object value literal.
property kind
readonly kind: KindTypeMap['OBJECT_FIELD'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
property value
readonly value: ConstValueNode;Parsed value represented by this node.
interface ConstObjectValueNode
interface ConstObjectValueNode {}An input object value literal whose fields are all constant values.
property fields
readonly fields: ReadonlyArray<ConstObjectFieldNode>;Fields declared by this object, interface, input object, or literal.
property kind
readonly kind: KindTypeMap['OBJECT'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
interface DangerousChange
interface DangerousChange {}Description of a schema change that may be dangerous for existing operations.
property description
description: string;Human-readable description of the dangerous schema change.
property type
type: DangerousChangeType;Specific kind of dangerous schema change.
interface DirectiveArgumentCoordinateNode
interface DirectiveArgumentCoordinateNode {}A schema coordinate that refers to a directive argument.
property argumentName
readonly argumentName: NameNode;The argument name referenced by this schema coordinate.
property kind
readonly kind: KindTypeMap['DIRECTIVE_ARGUMENT_COORDINATE'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
interface DirectiveCoordinateNode
interface DirectiveCoordinateNode {}A schema coordinate that refers to a directive.
property kind
readonly kind: KindTypeMap['DIRECTIVE_COORDINATE'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
interface DirectiveDefinitionNode
interface DirectiveDefinitionNode {}A directive definition in a type-system document.
property arguments
readonly arguments?: ReadonlyArray<InputValueDefinitionNode> | undefined;Arguments supplied to this field, directive, or coordinate.
property description
readonly description?: StringValueNode | undefined;The optional GraphQL description associated with this definition.
property directives
readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property kind
readonly kind: KindTypeMap['DIRECTIVE_DEFINITION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property locations
readonly locations: ReadonlyArray<NameNode>;Locations where this directive may be applied.
property name
readonly name: NameNode;Name node identifying this AST node.
property repeatable
readonly repeatable: boolean;Whether this directive may appear more than once at the same location.
interface DirectiveExtensionNode
interface DirectiveExtensionNode {}A directive extension.
property directives
readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property kind
readonly kind: KindTypeMap['DIRECTIVE_EXTENSION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
interface DirectiveNode
interface DirectiveNode {}A directive applied to an executable or type-system location.
property arguments
readonly arguments?: ReadonlyArray<ArgumentNode> | undefined;Arguments supplied to this field, directive, or coordinate.
property kind
readonly kind: KindTypeMap['DIRECTIVE'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
interface DocumentNode
interface DocumentNode {}The root AST node for a parsed GraphQL document.
property definitions
readonly definitions: ReadonlyArray<DefinitionNode>;Top-level executable and type-system definitions in this document.
property kind
readonly kind: KindTypeMap['DOCUMENT'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property tokenCount
readonly tokenCount?: number | undefined;The number of lexical tokens parsed for this document, if token counting was enabled.
interface EnumTypeDefinitionNode
interface EnumTypeDefinitionNode {}An enum type definition in a type-system document.
property description
readonly description?: StringValueNode | undefined;The optional GraphQL description associated with this definition.
property directives
readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property kind
readonly kind: KindTypeMap['ENUM_TYPE_DEFINITION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
property values
readonly values?: ReadonlyArray<EnumValueDefinitionNode> | undefined;Values contained in this enum, list, or input-object definition.
interface EnumTypeExtensionNode
interface EnumTypeExtensionNode {}An enum type extension.
property directives
readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property kind
readonly kind: KindTypeMap['ENUM_TYPE_EXTENSION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
property values
readonly values?: ReadonlyArray<EnumValueDefinitionNode> | undefined;Values contained in this enum, list, or input-object definition.
interface EnumValueDefinitionNode
interface EnumValueDefinitionNode {}An enum value definition.
property description
readonly description?: StringValueNode | undefined;The optional GraphQL description associated with this definition.
property directives
readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property kind
readonly kind: KindTypeMap['ENUM_VALUE_DEFINITION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
interface EnumValueNode
interface EnumValueNode {}An enum value literal.
property kind
readonly kind: KindTypeMap['ENUM'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property value
readonly value: string;Parsed value represented by this node.
interface ExecutionArgs
interface ExecutionArgs {}Arguments accepted by execute and executeSync.
property abortSignal
abortSignal?: Maybe<AbortSignal>;AbortSignal used to cancel execution.
property contextValue
contextValue?: unknown;Application context value passed to every resolver.
property document
document: DocumentNode;The parsed GraphQL document to execute.
property enableEarlyExecution
enableEarlyExecution?: Maybe<boolean>;Whether incremental execution may begin eligible work early.
property fieldResolver
fieldResolver?: Maybe<GraphQLFieldResolver<any, any>>;Resolver used when a field does not define its own resolver.
property hideSuggestions
hideSuggestions?: Maybe<boolean>;Whether suggestion text should be omitted from request errors.
property hooks
hooks?: Maybe<ExecutionHooks>;Execution hooks invoked during this operation.
property operationName
operationName?: Maybe<string>;Name of the operation to execute when the document contains multiple operations.
property options
options?: { /** * Set the maximum number of errors allowed for coercing (defaults to 50). * * @internal */ maxCoercionErrors?: number;};Additional execution options.
property rootValue
rootValue?: unknown;Initial root value passed to the operation.
property schema
schema: GraphQLSchema;The schema used for validation or execution.
property subscribeFieldResolver
subscribeFieldResolver?: Maybe<GraphQLFieldResolver<any, any>>;Resolver used for the root subscription field.
property typeResolver
typeResolver?: Maybe<GraphQLTypeResolver<any, any>>;Resolver used when an abstract type does not define its own resolver.
property variableValues
variableValues?: Maybe<{ readonly [variable: string]: unknown;}>;Runtime variable values keyed by variable name.
interface ExecutionHooks
interface ExecutionHooks {}Optional hooks invoked during GraphQL execution.
property asyncWorkFinished
asyncWorkFinished?: (info: AsyncWorkFinishedInfo) => void;Called after all tracked asynchronous execution work has settled.
interface ExecutionResult
interface ExecutionResult<TData = ObjMap<unknown>, TExtensions = ObjMap<unknown>> {}Represents the response produced by executing a GraphQL operation.
property data
data?: TData | null;Data returned by execution, or null when execution could not produce data.
property errors
errors?: ReadonlyArray<GraphQLError>;Errors raised while parsing, validating, or executing the operation.
property extensions
extensions?: TExtensions;Additional non-standard metadata included in the execution result.
interface ExperimentalIncrementalExecutionResults
interface ExperimentalIncrementalExecutionResults< TInitialData = ObjMap<unknown>, TDeferredData = ObjMap<unknown>, TStreamItem = unknown, TExtensions = ObjMap<unknown>> {}Results for an operation that produced incremental payloads.
property initialResult
initialResult: InitialIncrementalExecutionResult<TInitialData, TExtensions>;Initial execution result delivered before subsequent incremental payloads.
property subsequentResults
subsequentResults: AsyncGenerator< SubsequentIncrementalExecutionResult< TDeferredData, TStreamItem, TExtensions >, void, void>;Async stream of incremental payloads delivered after the initial result.
interface FieldDefinitionNode
interface FieldDefinitionNode {}A field definition declared by an object or interface type.
property arguments
readonly arguments?: ReadonlyArray<InputValueDefinitionNode> | undefined;Arguments supplied to this field, directive, or coordinate.
property description
readonly description?: StringValueNode | undefined;The optional GraphQL description associated with this definition.
property directives
readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property kind
readonly kind: KindTypeMap['FIELD_DEFINITION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
property type
readonly type: TypeNode;The GraphQL type reference or runtime type for this element.
interface FieldNode
interface FieldNode {}A field selected in an executable GraphQL document.
property alias
readonly alias?: NameNode | undefined;The response-key alias for this field, if one was supplied.
property arguments
readonly arguments?: ReadonlyArray<ArgumentNode> | undefined;Arguments supplied to this field, directive, or coordinate.
property directives
readonly directives?: ReadonlyArray<DirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property kind
readonly kind: KindTypeMap['FIELD'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
property selectionSet
readonly selectionSet?: SelectionSetNode | undefined;Selections made by this operation, field, or fragment.
interface FloatValueNode
interface FloatValueNode {}A floating-point value literal.
property kind
readonly kind: KindTypeMap['FLOAT'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property value
readonly value: string;Parsed value represented by this node.
interface FormattedExecutionResult
interface FormattedExecutionResult< TData = ObjMap<unknown>, TExtensions = ObjMap<unknown>> {}A JSON-serializable GraphQL execution result.
property data
data?: TData | null;Data returned by execution, or null when execution could not produce data.
property errors
errors?: ReadonlyArray<GraphQLFormattedError>;Errors raised while parsing, validating, or executing the operation.
property extensions
extensions?: TExtensions;Additional non-standard metadata included in the formatted result.
interface FormattedExperimentalIncrementalExecutionResults
interface FormattedExperimentalIncrementalExecutionResults< TInitial = ObjMap<unknown>, TDeferredData = ObjMap<unknown>, TStreamItem = unknown, TExtensions = ObjMap<unknown>> {}JSON-serializable form of incremental execution results.
property initialResult
initialResult: FormattedInitialIncrementalExecutionResult<TInitial, TExtensions>;Formatted initial execution result.
property subsequentResults
subsequentResults: AsyncGenerator< FormattedSubsequentIncrementalExecutionResult< TDeferredData, TStreamItem, TExtensions >, void, void>;Async stream of formatted incremental payloads.
interface FormattedIncrementalDeferResult
interface FormattedIncrementalDeferResult< TDeferredData = ObjMap<unknown>, TExtensions = ObjMap<unknown>> {}JSON-serializable form of a deferred fragment payload.
property data
data: TDeferredData;Formatted data produced by the deferred fragment.
property errors
errors?: ReadonlyArray<GraphQLFormattedError>;Formatted errors raised while executing the deferred fragment.
property extensions
extensions?: TExtensions;Additional non-standard metadata included in this formatted payload.
property id
id: string;Identifier matching this payload to a pending deferred fragment.
property subPath
subPath?: ReadonlyArray<string | number>;Path from the deferred fragment location to this payload.
interface FormattedIncrementalStreamResult
interface FormattedIncrementalStreamResult< TStreamItem = Array<unknown>, TExtensions = ObjMap<unknown>> {}JSON-serializable form of a streamed list payload.
property errors
errors?: ReadonlyArray<GraphQLFormattedError>;Formatted errors raised while producing streamed items.
property extensions
extensions?: TExtensions;Additional non-standard metadata included in this formatted payload.
property id
id: string;Identifier matching this payload to a pending stream.
property items
items: ReadonlyArray<TStreamItem>;Formatted streamed list items delivered by this payload.
property subPath
subPath?: ReadonlyArray<string | number>;Path from the streamed field location to these items.
interface FormattedInitialIncrementalExecutionResult
interface FormattedInitialIncrementalExecutionResult< TInitialData = ObjMap<unknown>, TExtensions = ObjMap<unknown>> extends FormattedExecutionResult<TInitialData, TExtensions> {}JSON-serializable form of an initial incremental execution result.
property data
data: TInitialData;Formatted data produced by the initial execution payload.
property extensions
extensions?: TExtensions;Additional non-standard metadata included in the formatted initial result.
property hasNext
hasNext: boolean;Indicates whether subsequent incremental payloads will follow.
property pending
pending: ReadonlyArray<PendingResult>;Formatted list of incremental payloads still pending after the initial result.
interface FormattedLegacyExperimentalIncrementalExecutionResults
interface FormattedLegacyExperimentalIncrementalExecutionResults< TInitialData = ObjMap<unknown>, TDeferredData = ObjMap<unknown>, TStreamItem = unknown, TExtensions = ObjMap<unknown>> {}JSON-serializable form of legacy incremental execution results.
property initialResult
initialResult: FormattedLegacyInitialIncrementalExecutionResult< TInitialData, TExtensions>;Formatted initial execution result.
property subsequentResults
subsequentResults: AsyncGenerator< FormattedLegacySubsequentIncrementalExecutionResult< TDeferredData, TStreamItem, TExtensions >, void, void>;Async stream of formatted legacy incremental payloads.
interface FormattedLegacyIncrementalDeferResult
interface FormattedLegacyIncrementalDeferResult< TDeferredData = ObjMap<unknown>, TExtensions = ObjMap<unknown>> extends FormattedExecutionResult<TDeferredData, TExtensions> {}JSON-serializable form of a legacy deferred fragment payload.
interface FormattedLegacyIncrementalStreamResult
interface FormattedLegacyIncrementalStreamResult< TStreamItem = unknown, TExtensions = ObjMap<unknown>> {}JSON-serializable form of a legacy streamed list payload.
property errors
errors?: ReadonlyArray<GraphQLFormattedError>;Formatted errors raised while producing streamed items.
property extensions
extensions?: TExtensions;Additional non-standard metadata included in this formatted payload.
property items
items: ReadonlyArray<TStreamItem> | null;Formatted streamed list items delivered by this payload.
property label
label?: string;Label from the
@streamdirective.
property path
path: ReadonlyArray<string | number>;Response path to the first streamed list item in this formatted payload.
interface FormattedLegacyInitialIncrementalExecutionResult
interface FormattedLegacyInitialIncrementalExecutionResult< TInitialData = ObjMap<unknown>, TExtensions = ObjMap<unknown>> extends FormattedExecutionResult<TInitialData, TExtensions> {}JSON-serializable form of a legacy initial incremental execution result.
property data
data: TInitialData;Formatted data produced by the initial execution payload.
property extensions
extensions?: TExtensions;Additional non-standard metadata included in the formatted initial result.
property hasNext
hasNext: true;Indicates that subsequent legacy incremental payloads will follow.
interface FormattedLegacySubsequentIncrementalExecutionResult
interface FormattedLegacySubsequentIncrementalExecutionResult< TDeferredData = ObjMap<unknown>, TStreamItem = unknown, TExtensions = ObjMap<unknown>> {}JSON-serializable form of a legacy subsequent incremental execution payload.
property extensions
extensions?: TExtensions;Additional non-standard metadata included in this formatted payload.
property hasNext
hasNext: boolean;Indicates whether more legacy incremental payloads will follow.
property incremental
incremental?: ReadonlyArray< FormattedLegacyIncrementalResult<TDeferredData, TStreamItem, TExtensions>>;Formatted deferred or streamed payloads delivered by this response.
interface FormattedSubsequentIncrementalExecutionResult
interface FormattedSubsequentIncrementalExecutionResult< TDeferredData = ObjMap<unknown>, TStreamItem = unknown, TExtensions = ObjMap<unknown>> {}JSON-serializable form of a subsequent incremental execution payload.
property completed
completed?: ReadonlyArray<FormattedCompletedResult>;Formatted incremental payloads that completed with this response.
property extensions
extensions?: TExtensions;Additional non-standard metadata included in this formatted payload.
property hasNext
hasNext: boolean;Indicates whether more incremental payloads will follow.
property incremental
incremental?: ReadonlyArray< FormattedIncrementalResult<TDeferredData, TStreamItem, TExtensions>>;Formatted deferred or streamed payloads delivered by this response.
property pending
pending?: ReadonlyArray<PendingResult>;Formatted incremental payloads that became pending with this response.
interface FragmentArgumentNode
interface FragmentArgumentNode {}Variable definition declared by a fragment argument.
property kind
readonly kind: KindTypeMap['FRAGMENT_ARGUMENT'];AST node kind for a fragment argument.
property loc
readonly loc?: Location | undefined;Source location for this fragment argument.
property name
readonly name: NameNode;Variable name declared by this fragment argument.
property value
readonly value: ValueNode;Default value literal for this fragment argument, if provided.
interface FragmentDefinitionNode
interface FragmentDefinitionNode {}A reusable fragment definition declared in an executable document.
property description
readonly description?: StringValueNode | undefined;The optional GraphQL description associated with this definition.
property directives
readonly directives?: ReadonlyArray<DirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property kind
readonly kind: KindTypeMap['FRAGMENT_DEFINITION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
property selectionSet
readonly selectionSet: SelectionSetNode;Selections made by this operation, field, or fragment.
property typeCondition
readonly typeCondition: NamedTypeNode;The type condition that limits where this fragment applies.
property variableDefinitions
readonly variableDefinitions?: ReadonlyArray<VariableDefinitionNode> | undefined;Experimental variable definitions declared by this fragment definition.
interface FragmentSpreadNode
interface FragmentSpreadNode {}A named fragment spread, such as
...userFields.
property arguments
readonly arguments?: ReadonlyArray<FragmentArgumentNode> | undefined;Argument values supplied to the referenced fragment.
property directives
readonly directives?: ReadonlyArray<DirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property kind
readonly kind: KindTypeMap['FRAGMENT_SPREAD'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
interface GraphQLArgs
interface GraphQLArgs extends ParseOptions, ValidationOptions, Omit<ExecutionArgs, 'document'> {}Describes the input object accepted by
graphqlandgraphqlSync.These arguments describe the full parse, validate, and execute lifecycle for a GraphQL request. They include parser options, validation options, execution options, and an optional harness for replacing pipeline stages.
graphqlandgraphqlSyncdo not support incremental delivery (@deferand@stream); useexperimentalExecuteIncrementallyafter parsing and validating when incremental delivery is required.
property harness
harness?: GraphQLHarness | undefined;Custom parse, validate, execute, and subscribe functions for this request pipeline.
property rules
rules?: ReadonlyArray<ValidationRule> | undefined;Validation rules to use instead of the specified rules.
property source
source: string | Source;A GraphQL language-formatted string or source object representing the requested operation.
interface GraphQLArgumentConfig
interface GraphQLArgumentConfig {}Configuration used to define a GraphQL argument.
property astNode
astNode?: Maybe<InputValueDefinitionNode>;AST node from which this schema element was built, if available.
property default
default?: GraphQLDefaultInput | undefined;Default value represented as either a runtime value or a GraphQL literal.
property defaultValue
defaultValue?: unknown;Deprecated legacy default value for this argument. Use
defaultinstead.Deprecated
use
defaultinstead,defaultValuewill be removed in v18
property deprecationReason
deprecationReason?: Maybe<string>;Reason this element is deprecated, if one was provided.
property description
description?: Maybe<string>;Human-readable description for this schema element, if provided.
property extensions
extensions?: Maybe<Readonly<GraphQLArgumentExtensions>>;Custom extension fields reserved for users.
property type
type: GraphQLInputType;The GraphQL type reference or runtime type for this element.
interface GraphQLArgumentExtensions
interface GraphQLArgumentExtensions {}Custom extensions
Remarks
Use a unique identifier name for your extension, for example the name of your library or project. Do not use a shortened identifier as this increases the risk of conflicts. We recommend you add at most one extension field, an object which can contain all the values you need.
index signature
[attributeName: string | symbol]: unknown;interface GraphQLChannelContextByName
interface GraphQLChannelContextByName {}Mapping from tracing channel name to the context type published on it.
property 'graphql:execute:rootSelectionSet'
'graphql:execute:rootSelectionSet': GraphQLExecuteRootSelectionSetContext;Context published on
graphql:execute:rootSelectionSet.
property 'graphql:execute:variableCoercion'
'graphql:execute:variableCoercion': GraphQLExecuteVariableCoercionContext;Context published on
graphql:execute:variableCoercion.
property 'graphql:execute'
'graphql:execute': GraphQLExecuteContext;Context published on
graphql:execute.
property 'graphql:parse'
'graphql:parse': GraphQLParseContext;Context published on
graphql:parse.
property 'graphql:resolve'
'graphql:resolve': GraphQLResolveContext;Context published on
graphql:resolve.
property 'graphql:subscribe'
'graphql:subscribe': GraphQLSubscribeContext;Context published on
graphql:subscribe.
property 'graphql:validate'
'graphql:validate': GraphQLValidateContext;Context published on
graphql:validate.
interface GraphQLChannels
interface GraphQLChannels {}The collection of tracing channels GraphQL.js emits on. Application performance monitoring (APM) tools subscribe to these by name on their own
node:diagnostics_channelimport; both paths land on the same channel instance becausetracingChannel(name)is cached by name.
property execute
execute: MinimalTracingChannel<GraphQLExecuteContext>;Tracing channel for
graphql:execute.
property executeRootSelectionSet
executeRootSelectionSet: MinimalTracingChannel<GraphQLExecuteRootSelectionSetContext>;Tracing channel for
graphql:execute:rootSelectionSet.
property executeVariableCoercion
executeVariableCoercion: MinimalTracingChannel<GraphQLExecuteVariableCoercionContext>;Tracing channel for
graphql:execute:variableCoercion.
property parse
parse: MinimalTracingChannel<GraphQLParseContext>;Tracing channel for
graphql:parse.
property resolve
resolve: MinimalTracingChannel<GraphQLResolveContext>;Tracing channel for
graphql:resolve.
property subscribe
subscribe: MinimalTracingChannel<GraphQLSubscribeContext>;Tracing channel for
graphql:subscribe.
property validate
validate: MinimalTracingChannel<GraphQLValidateContext>;Tracing channel for
graphql:validate.
interface GraphQLDirectiveConfig
interface GraphQLDirectiveConfig {}Configuration used to construct a GraphQLDirective.
property args
args?: Maybe<ObjMap<GraphQLArgumentConfig>>;Arguments accepted by this field or directive.
property astNode
astNode?: Maybe<DirectiveDefinitionNode>;AST node from which this schema element was built, if available.
property deprecationReason
deprecationReason?: Maybe<string>;Reason this element is deprecated, if one was provided.
property description
description?: Maybe<string>;Human-readable description for this schema element, if provided.
property extensionASTNodes
extensionASTNodes?: Maybe<ReadonlyArray<DirectiveExtensionNode>>;AST extension nodes applied to this schema element.
property extensions
extensions?: Maybe<Readonly<GraphQLDirectiveExtensions>>;Custom extension fields reserved for users.
property isRepeatable
isRepeatable?: Maybe<boolean>;Whether this directive may appear more than once at the same location.
property locations
locations: ReadonlyArray<DirectiveLocation>;Locations where this directive may be applied.
property name
name: string;The GraphQL name for this schema element.
interface GraphQLDirectiveExtensions
interface GraphQLDirectiveExtensions {}Custom extensions
Remarks
Use a unique identifier name for your extension, for example the name of your library or project. Do not use a shortened identifier as this increases the risk of conflicts. We recommend you add at most one extension field, an object which can contain all the values you need.
index signature
[attributeName: string | symbol]: unknown;interface GraphQLEnumTypeConfig
interface GraphQLEnumTypeConfig {}Configuration used to construct a GraphQLEnumType.
property astNode
astNode?: Maybe<EnumTypeDefinitionNode>;AST node from which this schema element was built, if available.
property description
description?: Maybe<string>;Human-readable description for this schema element, if provided.
property extensionASTNodes
extensionASTNodes?: Maybe<ReadonlyArray<EnumTypeExtensionNode>>;AST extension nodes applied to this schema element.
property extensions
extensions?: Maybe<Readonly<GraphQLEnumTypeExtensions>>;Custom extension fields reserved for users.
property name
name: string;The GraphQL name for this schema element.
property values
values: ThunkObjMap<GraphQLEnumValueConfig>;Values contained in this enum, list, or input-object definition.
interface GraphQLEnumTypeExtensions
interface GraphQLEnumTypeExtensions {}Custom extensions
Remarks
Use a unique identifier name for your extension, for example the name of your library or project. Do not use a shortened identifier as this increases the risk of conflicts. We recommend you add at most one extension field, an object which can contain all the values you need.
index signature
[attributeName: string | symbol]: unknown;interface GraphQLEnumValueConfig
interface GraphQLEnumValueConfig {}Configuration used to define a GraphQL enum value.
property astNode
astNode?: Maybe<EnumValueDefinitionNode>;AST node from which this schema element was built, if available.
property deprecationReason
deprecationReason?: Maybe<string>;Reason this element is deprecated, if one was provided.
property description
description?: Maybe<string>;Human-readable description for this schema element, if provided.
property extensions
extensions?: Maybe<Readonly<GraphQLEnumValueExtensions>>;Custom extension fields reserved for users.
property value
value?: any;Parsed value represented by this node.
interface GraphQLEnumValueExtensions
interface GraphQLEnumValueExtensions {}Custom extensions
Remarks
Use a unique identifier name for your extension, for example the name of your library or project. Do not use a shortened identifier as this increases the risk of conflicts. We recommend you add at most one extension field, an object which can contain all the values you need.
index signature
[attributeName: string | symbol]: unknown;interface GraphQLErrorExtensions
interface GraphQLErrorExtensions {}Custom extensions
Remarks
Use a unique identifier name for your extension, for example the name of your library or project. Do not use a shortened identifier as this increases the risk of conflicts. We recommend you add at most one extension field, an object which can contain all the values you need.
index signature
[attributeName: string]: unknown;interface GraphQLErrorOptions
interface GraphQLErrorOptions {}Options used to construct a GraphQLError.
property cause
cause?: unknown;Cause of this GraphQLError, if one exists.
property extensions
extensions?: Maybe<GraphQLErrorExtensions>;Extension fields to include in the formatted result.
property nodes
nodes?: ReadonlyArray<ASTNode> | ASTNode | null | undefined;AST node or nodes associated with this error.
property originalError
originalError?: Maybe< Error & { readonly extensions?: unknown; }>;Original error that caused this GraphQLError, if one exists. Deprecated in favor of
causeto better align with JavaScript standards.Deprecated
Prefer
causeinstead.
property path
path?: Maybe<ReadonlyArray<string | number>>;Response path where this error occurred during execution.
property positions
positions?: Maybe<ReadonlyArray<number>>;Character offsets in the source document associated with this error.
property source
source?: Maybe<Source>;Source document used to derive error locations.
interface GraphQLExecuteContext
interface GraphQLExecuteContext {}Context published on
graphql:execute.Returned results may contain GraphQL errors collected during execution.
property document
document: DocumentNode;Parsed document being executed.
property error
error?: unknown;Error thrown or rejected while executing, when execution fails abruptly.
property operationName
operationName: string | undefined;Selected operation name, if one is available.
property operationType
operationType: OperationTypeNode | undefined;Selected operation type, if one is available.
property rawVariableValues
rawVariableValues: Maybe<{ readonly [variable: string]: unknown;}>;Raw variable values provided by the caller before coercion.
property result
result?: ExecutionResult | ExperimentalIncrementalExecutionResults;Execution result returned by execution, including GraphQL errors.
property schema
schema: GraphQLSchema;Schema used for execution.
interface GraphQLExecuteRootSelectionSetContext
interface GraphQLExecuteRootSelectionSetContext {}Context published on
graphql:execute:rootSelectionSet.Returned results may contain GraphQL errors collected during execution.
property document
document: DocumentNode;Parsed document being executed.
property error
error?: unknown;Error thrown or rejected while executing the root selection set.
property operation
operation: OperationDefinitionNode;Operation definition selected for execution.
property operationName
operationName: string | undefined;Selected operation name, if one is available.
property operationType
operationType: OperationTypeNode;Selected operation type.
property rawVariableValues
rawVariableValues: Maybe<{ readonly [variable: string]: unknown;}>;Raw variable values provided by the caller before coercion.
property result
result?: ExecutionResult | ExperimentalIncrementalExecutionResults;Execution result returned from the root selection set, including GraphQL errors.
property schema
schema: GraphQLSchema;Schema used for execution.
interface GraphQLExecuteVariableCoercionContext
interface GraphQLExecuteVariableCoercionContext {}Context published on
graphql:execute:variableCoercion.Coercion runs synchronously while execution arguments are validated, so only the
start/end(and, on an abrupt throw,error) lifecycle fires. Ordinary variable coercion failures are returned onresult.errors; when execution is invoked through APIs such asexecute()orsubscribe(), they surface as GraphQL result errors rather than as the tracingerrorlifecycle event.
property document
document: DocumentNode;Parsed document being executed.
property error
error?: unknown;Error thrown while coercing variables, when coercion fails abruptly.
property operation
operation: OperationDefinitionNode;Operation definition whose variables are being coerced.
property operationName
operationName: string | undefined;Selected operation name, if one is available.
property operationType
operationType: OperationTypeNode;Selected operation type.
property rawVariableValues
rawVariableValues: Maybe<{ readonly [variable: string]: unknown;}>;Raw variable values provided by the caller before coercion.
property result
result?: | { variableValues: VariableValues; } | { errors: ReadonlyArray<GraphQLError>; };Coerced variable values or coercion errors returned by coercion.
property schema
schema: GraphQLSchema;Schema used for variable coercion.
interface GraphQLFieldConfig
interface GraphQLFieldConfig<TSource, TContext, TArgs = any> {}Configuration used to define a GraphQL field.
property args
args?: GraphQLFieldConfigArgumentMap | undefined;Arguments accepted by this field or directive.
property astNode
astNode?: Maybe<FieldDefinitionNode>;AST node from which this schema element was built, if available.
property deprecationReason
deprecationReason?: Maybe<string>;Reason this element is deprecated, if one was provided.
property description
description?: Maybe<string>;Human-readable description for this schema element, if provided.
property extensions
extensions?: Maybe<Readonly<GraphQLFieldExtensions<TSource, TContext, TArgs>>>;Custom extension fields reserved for users.
property resolve
resolve?: GraphQLFieldResolver<TSource, TContext, TArgs> | undefined;Resolver function used to produce this field value.
property subscribe
subscribe?: GraphQLFieldResolver<TSource, TContext, TArgs> | undefined;Resolver function used to create a subscription event stream for this field.
property type
type: GraphQLOutputType;The GraphQL type reference or runtime type for this element.
interface GraphQLFieldExtensions
interface GraphQLFieldExtensions<_TSource, _TContext, _TArgs = any> {}Custom extensions
Remarks
Use a unique identifier name for your extension, for example the name of your library or project. Do not use a shortened identifier as this increases the risk of conflicts. We recommend you add at most one extension field, an object which can contain all the values you need. We've provided these template arguments because this is an open type and you may find them useful.
index signature
[attributeName: string | symbol]: unknown;interface GraphQLFormattedError
interface GraphQLFormattedError {}See: https://spec.graphql.org/draft/#sec-Errors
property extensions
readonly extensions?: GraphQLFormattedErrorExtensions;Reserved for implementors to extend the protocol however they see fit, and hence there are no additional restrictions on its contents.
property locations
readonly locations?: ReadonlyArray<SourceLocation>;If an error can be associated to a particular point in the requested GraphQL document, it should contain a list of locations.
property message
readonly message: string;A short, human-readable summary of the problem that **SHOULD NOT** change from occurrence to occurrence of the problem, except for purposes of localization.
property path
readonly path?: ReadonlyArray<string | number>;If an error can be associated to a particular field in the GraphQL result, it _must_ contain an entry with the key
paththat details the path of the response field which experienced the error. This allows clients to identify whether a null result is intentional or caused by a runtime error.
interface GraphQLFormattedErrorExtensions
interface GraphQLFormattedErrorExtensions {}Custom formatted extensions
Remarks
Use a unique identifier name for your extension, for example the name of your library or project. Do not use a shortened identifier as this increases the risk of conflicts. We recommend you add at most one extension field, an object which can contain all the values you need.
index signature
[attributeName: string]: unknown;interface GraphQLHarness
interface GraphQLHarness {}Overrides for the parse, validate, execute, and subscribe stages used by the high-level
graphqlandgraphqlSyncrequest pipeline.
property execute
execute: GraphQLExecuteFn;Executes a valid operation.
property parse
parse: GraphQLParseFn;Parses GraphQL source text into a document AST.
property subscribe
subscribe: GraphQLSubscribeFn;Creates a response stream for a subscription operation.
property validate
validate: GraphQLValidateFn;Validates a document AST against a schema.
interface GraphQLInputFieldConfig
interface GraphQLInputFieldConfig {}Configuration used to define a GraphQL input field.
property astNode
astNode?: Maybe<InputValueDefinitionNode>;AST node from which this schema element was built, if available.
property default
default?: GraphQLDefaultInput | undefined;Default value represented as either a runtime value or a GraphQL literal.
property defaultValue
defaultValue?: unknown;Deprecated legacy default value for this input field. Use
defaultinstead.Deprecated
use
defaultinstead,defaultValuewill be removed in v18
property deprecationReason
deprecationReason?: Maybe<string>;Reason this element is deprecated, if one was provided.
property description
description?: Maybe<string>;Human-readable description for this schema element, if provided.
property extensions
extensions?: Maybe<Readonly<GraphQLInputFieldExtensions>>;Custom extension fields reserved for users.
property type
type: GraphQLInputType;The GraphQL type reference or runtime type for this element.
interface GraphQLInputFieldExtensions
interface GraphQLInputFieldExtensions {}Custom extensions
Remarks
Use a unique identifier name for your extension, for example the name of your library or project. Do not use a shortened identifier as this increases the risk of conflicts. We recommend you add at most one extension field, an object which can contain all the values you need.
index signature
[attributeName: string | symbol]: unknown;interface GraphQLInputObjectTypeConfig
interface GraphQLInputObjectTypeConfig {}Configuration used to construct a GraphQLInputObjectType.
property astNode
astNode?: Maybe<InputObjectTypeDefinitionNode>;AST node from which this schema element was built, if available.
property description
description?: Maybe<string>;Human-readable description for this schema element, if provided.
property extensionASTNodes
extensionASTNodes?: Maybe<ReadonlyArray<InputObjectTypeExtensionNode>>;AST extension nodes applied to this schema element.
property extensions
extensions?: Maybe<Readonly<GraphQLInputObjectTypeExtensions>>;Custom extension fields reserved for users.
property fields
fields: ThunkObjMap<GraphQLInputFieldConfig>;Fields declared by this object, interface, input object, or literal.
property isOneOf
isOneOf?: boolean;Whether this input object uses the experimental OneOf input object semantics.
property name
name: string;The GraphQL name for this schema element.
interface GraphQLInputObjectTypeExtensions
interface GraphQLInputObjectTypeExtensions {}Custom extensions
Remarks
Use a unique identifier name for your extension, for example the name of your library or project. Do not use a shortened identifier as this increases the risk of conflicts. We recommend you add at most one extension field, an object which can contain all the values you need.
index signature
[attributeName: string | symbol]: unknown;interface GraphQLInterfaceTypeConfig
interface GraphQLInterfaceTypeConfig<TSource, TContext> {}Configuration used to construct a GraphQLInterfaceType.
property astNode
astNode?: Maybe<InterfaceTypeDefinitionNode>;AST node from which this schema element was built, if available.
property description
description?: Maybe<string>;Human-readable description for this schema element, if provided.
property extensionASTNodes
extensionASTNodes?: Maybe<ReadonlyArray<InterfaceTypeExtensionNode>>;AST extension nodes applied to this schema element.
property extensions
extensions?: Maybe<Readonly<GraphQLInterfaceTypeExtensions>>;Custom extension fields reserved for users.
property fields
fields: ThunkObjMap<GraphQLFieldConfig<TSource, TContext>>;Fields declared by this object, interface, input object, or literal.
property interfaces
interfaces?: ThunkReadonlyArray<GraphQLInterfaceType> | undefined;Interfaces implemented by this object or interface type.
property name
name: string;The GraphQL name for this schema element.
property resolveType
resolveType?: Maybe<GraphQLTypeResolver<TSource, TContext>>;Optionally provide a custom type resolver function. If one is not provided, the default implementation will call
isTypeOfon each implementing Object type.
interface GraphQLInterfaceTypeExtensions
interface GraphQLInterfaceTypeExtensions {}Custom extensions
Remarks
Use a unique identifier name for your extension, for example the name of your library or project. Do not use a shortened identifier as this increases the risk of conflicts. We recommend you add at most one extension field, an object which can contain all the values you need.
index signature
[attributeName: string | symbol]: unknown;interface GraphQLObjectTypeConfig
interface GraphQLObjectTypeConfig<TSource, TContext, TAbstract = unknown> {}Configuration used to construct a GraphQLObjectType.
property astNode
astNode?: Maybe<ObjectTypeDefinitionNode>;AST node from which this schema element was built, if available.
property description
description?: Maybe<string>;Human-readable description for this schema element, if provided.
property extensionASTNodes
extensionASTNodes?: Maybe<ReadonlyArray<ObjectTypeExtensionNode>>;AST extension nodes applied to this schema element.
property extensions
extensions?: Maybe<Readonly<GraphQLObjectTypeExtensions<TSource, TContext>>>;Custom extension fields reserved for users.
property fields
fields: ThunkObjMap<GraphQLFieldConfig<TSource, TContext>>;Fields declared by this object, interface, input object, or literal.
property interfaces
interfaces?: ThunkReadonlyArray<GraphQLInterfaceType> | undefined;Interfaces implemented by this object or interface type.
property isTypeOf
isTypeOf?: Maybe<GraphQLIsTypeOfFn<TAbstract, TContext>>;Predicate used to determine whether a runtime value belongs to this object type.
property name
name: string;The GraphQL name for this schema element.
interface GraphQLObjectTypeExtensions
interface GraphQLObjectTypeExtensions<_TSource = any, _TContext = any> {}Custom extensions
Remarks
Use a unique identifier name for your extension, for example the name of your library or project. Do not use a shortened identifier as this increases the risk of conflicts. We recommend you add at most one extension field, an object which can contain all the values you need. We've provided these template arguments because this is an open type and you may find them useful.
index signature
[attributeName: string | symbol]: unknown;interface GraphQLParseContext
interface GraphQLParseContext {}Context published on the sync-only
graphql:parsechannel.
interface GraphQLResolveContext
interface GraphQLResolveContext {}Context published on
graphql:resolve.Resolver throws and rejections publish the
errorlifecycle event here. The same failure may also be formatted into the enclosing execution or subscription result.
property alias
alias: string;Response alias for the field being resolved.
property args
args: ObjMap<unknown>;Argument values passed to the resolver.
property error
error?: unknown;Error thrown or rejected by the resolver, when resolution fails.
property fieldName
fieldName: string;Field name being resolved.
property fieldPath
fieldPath: string;Response path for the field being resolved.
property fieldType
fieldType: string;Return type string for the field being resolved.
property isDefaultResolver
isDefaultResolver: boolean;Whether the field is using the default resolver.
property parentType
parentType: string;Parent type name for the field being resolved.
property result
result?: unknown;Value returned by the resolver, when resolution succeeds.
interface GraphQLResolveInfo
interface GraphQLResolveInfo {}Information about the currently executing GraphQL field.
property fieldName
readonly fieldName: string;The field name referenced by this schema coordinate.
property fieldNodes
readonly fieldNodes: ReadonlyArray<FieldNode>;AST field nodes that contributed to the current field execution.
property fragments
readonly fragments: ObjMap<FragmentDefinitionNode>;Fragment definitions in the operation document keyed by fragment name.
property getAbortSignal
readonly getAbortSignal: () => AbortSignal | undefined;Returns the AbortSignal supplied for this execution, if any.
property getAsyncHelpers
readonly getAsyncHelpers: () => GraphQLResolveInfoHelpers;Returns helper functions for tracking asynchronous resolver work.
property operation
readonly operation: OperationDefinitionNode;The operation selected for execution.
property parentType
readonly parentType: GraphQLObjectType;Object type that owns the current field.
property path
readonly path: Path;Response path where this error occurred during execution.
property returnType
readonly returnType: GraphQLOutputType;GraphQL output type declared for the current field.
property rootValue
readonly rootValue: unknown;Initial root value passed to the operation.
property schema
readonly schema: GraphQLSchema;The schema used for validation or execution.
property variableValues
readonly variableValues: VariableValues;Coerced variable values and source metadata for this operation. Resolver code that needs runtime variable values should read
variableValues.coerced.
interface GraphQLResolveInfoHelpers
interface GraphQLResolveInfoHelpers {}Utilities available from resolver info for tracking asynchronous work.
property promiseAll
readonly promiseAll: <T>( values: ReadonlyArray<PromiseLike<T> | T>) => Promise<Array<T>>;Promise.all wrapper that allows rejected branches to be tracked as execution async work.
Intended use: return or await this promise from resolver work. Un-awaited async side effects are an anti-pattern:
const { promiseAll } = info.getAsyncHelpers(); promiseAll([someAsyncWork(), someOtherAsyncWork()]).catch(() => undefined);
In that anti-pattern, tracking starts only after rejection (on a later microtask), so this work is not guaranteed to delay
hooks.asyncWorkFinished.Use
track(...)for un-awaited async side effects:const { track } = info.getAsyncHelpers(); track([ someAsyncWork().catch(() => undefined), someOtherAsyncWork().catch(() => undefined) ]);
property track
readonly track: (maybePromises: ReadonlyArray<unknown>) => void;Tracks asynchronous work that should delay execution completion hooks.
interface GraphQLScalarTypeConfig
interface GraphQLScalarTypeConfig<TInternal, TExternal> {}Configuration used to construct a GraphQLScalarType.
property astNode
astNode?: Maybe<ScalarTypeDefinitionNode>;AST node from which this schema element was built, if available.
property coerceInputLiteral
coerceInputLiteral?: GraphQLScalarInputLiteralCoercer<TInternal> | undefined;Coerces an externally provided const literal value to use as an input.
property coerceInputValue
coerceInputValue?: GraphQLScalarInputValueCoercer<TInternal> | undefined;Coerces an externally provided value to use as an input.
property coerceOutputValue
coerceOutputValue?: GraphQLScalarOutputValueCoercer<TExternal> | undefined;Coerces an internal value to include in a response.
property description
description?: Maybe<string>;Human-readable description for this schema element, if provided.
property extensionASTNodes
extensionASTNodes?: Maybe<ReadonlyArray<ScalarTypeExtensionNode>>;AST extension nodes applied to this schema element.
property extensions
extensions?: Maybe<Readonly<GraphQLScalarTypeExtensions>>;Custom extension fields reserved for users.
property name
name: string;The GraphQL name for this schema element.
property parseLiteral
parseLiteral?: GraphQLScalarLiteralParser<TInternal> | undefined;Deprecated legacy parser used to convert externally provided input literals. Use
replaceVariables()andcoerceInputLiteral()instead.Deprecated
use
replaceVariables()andcoerceInputLiteral()instead,parseLiteral()will be removed in v18
property parseValue
parseValue?: GraphQLScalarValueParser<TInternal> | undefined;Deprecated legacy parser used to convert externally provided input values. Use
coerceInputValue()instead.Deprecated
use
coerceInputValue()instead,parseValue()will be removed in v18
property serialize
serialize?: GraphQLScalarSerializer<TExternal> | undefined;Deprecated legacy serializer used to convert internal values for response output. Use
coerceOutputValue()instead.Deprecated
use
coerceOutputValue()instead,serialize()will be removed in v18
property specifiedByURL
specifiedByURL?: Maybe<string>;URL identifying the behavior specified for this custom scalar.
property valueToLiteral
valueToLiteral?: GraphQLScalarValueToLiteral | undefined;Translates an externally provided value to a literal (AST).
interface GraphQLScalarTypeExtensions
interface GraphQLScalarTypeExtensions {}Custom extensions
Remarks
Use a unique identifier name for your extension, for example the name of your library or project. Do not use a shortened identifier as this increases the risk of conflicts. We recommend you add at most one extension field, an object which can contain all the values you need.
index signature
[attributeName: string | symbol]: unknown;interface GraphQLSchemaConfig
interface GraphQLSchemaConfig extends GraphQLSchemaValidationOptions {}Configuration used to construct a GraphQLSchema.
property astNode
astNode?: Maybe<SchemaDefinitionNode>;AST node from which this schema element was built, if available.
property description
description?: Maybe<string>;Human-readable description for this schema element, if provided.
property directives
directives?: Maybe<ReadonlyArray<GraphQLDirective>>;Directives available in this schema or applied to this AST node.
property extensionASTNodes
extensionASTNodes?: Maybe<ReadonlyArray<SchemaExtensionNode>>;AST extension nodes applied to this schema element.
property extensions
extensions?: Maybe<Readonly<GraphQLSchemaExtensions>>;Custom extension fields reserved for users.
property mutation
mutation?: Maybe<GraphQLObjectType>;Root object type for mutation operations.
property query
query?: Maybe<GraphQLObjectType>;Root object type for query operations.
property subscription
subscription?: Maybe<GraphQLObjectType>;Root object type for subscription operations.
property types
types?: Maybe<ReadonlyArray<GraphQLNamedType>>;Object types that belong to this union type.
interface GraphQLSchemaExtensions
interface GraphQLSchemaExtensions {}Custom extensions
Remarks
Use a unique identifier name for your extension, for example the name of your library or project. Do not use a shortened identifier as this increases the risk of conflicts. We recommend you add at most one extension field, an object which can contain all the values you need.
index signature
[attributeName: string | symbol]: unknown;interface GraphQLSubscribeContext
interface GraphQLSubscribeContext {}Context published on
graphql:subscribe.Subscription source resolver errors and invalid source stream results are returned on
resultas ExecutionResult errors; they do not publish theerrorlifecycle event unless subscription setup fails abruptly before GraphQL can form a result.
property document
document: DocumentNode;Parsed subscription document.
property error
error?: unknown;Error thrown or rejected while subscribing, when setup fails abruptly.
property operationName
operationName: string | undefined;Selected operation name, if one is available.
property operationType
operationType: OperationTypeNode | undefined;Selected operation type, if one is available.
property rawVariableValues
rawVariableValues: Maybe<{ readonly [variable: string]: unknown;}>;Raw variable values provided by the caller before coercion.
property result
result?: AsyncGenerator<ExecutionResult, void, void> | ExecutionResult;Subscription response stream, or an ExecutionResult containing GraphQL errors.
property schema
schema: GraphQLSchema;Schema used for subscription execution.
interface GraphQLUnionTypeConfig
interface GraphQLUnionTypeConfig<TSource, TContext> {}Configuration used to construct a GraphQLUnionType.
property astNode
astNode?: Maybe<UnionTypeDefinitionNode>;AST node from which this schema element was built, if available.
property description
description?: Maybe<string>;Human-readable description for this schema element, if provided.
property extensionASTNodes
extensionASTNodes?: Maybe<ReadonlyArray<UnionTypeExtensionNode>>;AST extension nodes applied to this schema element.
property extensions
extensions?: Maybe<Readonly<GraphQLUnionTypeExtensions>>;Custom extension fields reserved for users.
property name
name: string;The GraphQL name for this schema element.
property resolveType
resolveType?: Maybe<GraphQLTypeResolver<TSource, TContext>>;Optionally provide a custom type resolver function. If one is not provided, the default implementation will call
isTypeOfon each implementing Object type.
property types
types: ThunkReadonlyArray<GraphQLObjectType>;Object types that belong to this union type.
interface GraphQLUnionTypeExtensions
interface GraphQLUnionTypeExtensions {}Custom extensions
Remarks
Use a unique identifier name for your extension, for example the name of your library or project. Do not use a shortened identifier as this increases the risk of conflicts. We recommend you add at most one extension field, an object which can contain all the values you need.
index signature
[attributeName: string | symbol]: unknown;interface GraphQLValidateContext
interface GraphQLValidateContext {}Context published on the sync-only
graphql:validatechannel.
property document
document: DocumentNode;Parsed document being validated.
property error
error?: unknown;Error thrown while validating, when validation fails abruptly.
property result
result?: ReadonlyArray<GraphQLError>;Validation errors returned by validation.
property schema
schema: GraphQLSchema;Schema used for validation.
interface IncrementalDeferResult
interface IncrementalDeferResult< TDeferredData = ObjMap<unknown>, TExtensions = ObjMap<unknown>> {}Incremental payload produced by a deferred fragment.
property data
data: TDeferredData;Data produced by the deferred fragment.
property errors
errors?: ReadonlyArray<GraphQLError>;Errors raised while executing the deferred fragment.
property extensions
extensions?: TExtensions;Additional non-standard metadata included in this payload.
property id
id: string;Identifier matching this payload to a pending deferred fragment.
property subPath
subPath?: ReadonlyArray<string | number>;Path from the deferred fragment location to this payload.
interface IncrementalStreamResult
interface IncrementalStreamResult< TStreamItem = unknown, TExtensions = ObjMap<unknown>> {}Incremental payload produced by a streamed list field.
property errors
errors?: ReadonlyArray<GraphQLError>;Errors raised while producing streamed items.
property extensions
extensions?: TExtensions;Additional non-standard metadata included in this payload.
property id
id: string;Identifier matching this payload to a pending stream.
property items
items: ReadonlyArray<TStreamItem>;Streamed list items delivered by this payload.
property subPath
subPath?: ReadonlyArray<string | number>;Path from the streamed field location to these items.
interface InitialIncrementalExecutionResult
interface InitialIncrementalExecutionResult< TData = ObjMap<unknown>, TExtensions = ObjMap<unknown>> extends ExecutionResult<TData, TExtensions> {}Initial execution result for an operation that produced incremental payloads.
property data
data: TData;Data produced by the initial execution payload.
property extensions
extensions?: TExtensions;Additional non-standard metadata included in the initial result.
property hasNext
hasNext: true;Indicates that subsequent incremental payloads will follow.
property pending
pending: ReadonlyArray<PendingResult>;Incremental payloads that are still pending after the initial result.
interface InlineFragmentNode
interface InlineFragmentNode {}An inline fragment spread with an optional type condition.
property directives
readonly directives?: ReadonlyArray<DirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property kind
readonly kind: KindTypeMap['INLINE_FRAGMENT'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property selectionSet
readonly selectionSet: SelectionSetNode;Selections made by this operation, field, or fragment.
property typeCondition
readonly typeCondition?: NamedTypeNode | undefined;The type condition that limits where this fragment applies.
interface InputObjectTypeDefinitionNode
interface InputObjectTypeDefinitionNode {}An input object type definition in a type-system document.
property description
readonly description?: StringValueNode | undefined;The optional GraphQL description associated with this definition.
property directives
readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property fields
readonly fields?: ReadonlyArray<InputValueDefinitionNode> | undefined;Fields declared by this object, interface, input object, or literal.
property kind
readonly kind: KindTypeMap['INPUT_OBJECT_TYPE_DEFINITION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
interface InputObjectTypeExtensionNode
interface InputObjectTypeExtensionNode {}An input object type extension.
property directives
readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property fields
readonly fields?: ReadonlyArray<InputValueDefinitionNode> | undefined;Fields declared by this object, interface, input object, or literal.
property kind
readonly kind: KindTypeMap['INPUT_OBJECT_TYPE_EXTENSION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
interface InputValueDefinitionNode
interface InputValueDefinitionNode {}An argument or input-field definition.
property defaultValue
readonly defaultValue?: ConstValueNode | undefined;Default value used when no explicit value is supplied.
property description
readonly description?: StringValueNode | undefined;The optional GraphQL description associated with this definition.
property directives
readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property kind
readonly kind: KindTypeMap['INPUT_VALUE_DEFINITION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
property type
readonly type: TypeNode;The GraphQL type reference or runtime type for this element.
interface InterfaceTypeDefinitionNode
interface InterfaceTypeDefinitionNode {}An interface type definition in a type-system document.
property description
readonly description?: StringValueNode | undefined;The optional GraphQL description associated with this definition.
property directives
readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property fields
readonly fields?: ReadonlyArray<FieldDefinitionNode> | undefined;Fields declared by this object, interface, input object, or literal.
property interfaces
readonly interfaces?: ReadonlyArray<NamedTypeNode> | undefined;Interfaces implemented by this object or interface type.
property kind
readonly kind: KindTypeMap['INTERFACE_TYPE_DEFINITION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
interface InterfaceTypeExtensionNode
interface InterfaceTypeExtensionNode {}An interface type extension.
property directives
readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property fields
readonly fields?: ReadonlyArray<FieldDefinitionNode> | undefined;Fields declared by this object, interface, input object, or literal.
property interfaces
readonly interfaces?: ReadonlyArray<NamedTypeNode> | undefined;Interfaces implemented by this object or interface type.
property kind
readonly kind: KindTypeMap['INTERFACE_TYPE_EXTENSION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
interface IntrospectionDirective
interface IntrospectionDirective {}The introspection representation of a directive.
property args
readonly args: ReadonlyArray<IntrospectionInputValue>;Arguments accepted by this field or directive.
property deprecationReason
readonly deprecationReason?: Maybe<string>;Reason this element is deprecated, if one was provided.
property description
readonly description?: Maybe<string>;Human-readable description for this schema element, if provided.
property isDeprecated
readonly isDeprecated?: boolean;Whether this field, argument, enum value, or input value is deprecated.
property isRepeatable
readonly isRepeatable?: boolean;Whether this directive may appear more than once at the same location.
property locations
readonly locations: ReadonlyArray<DirectiveLocation>;Locations where this directive may be applied.
property name
readonly name: string;The GraphQL name for this schema element.
interface IntrospectionEnumType
interface IntrospectionEnumType {}The introspection representation of an enum type.
property description
readonly description?: Maybe<string>;Human-readable description for this schema element, if provided.
property enumValues
readonly enumValues: ReadonlyArray<IntrospectionEnumValue>;Values declared by this enum type.
property kind
readonly kind: typeof TypeKind.ENUM;The introspection kind discriminator for this type reference or type.
property name
readonly name: string;The GraphQL name for this schema element.
interface IntrospectionEnumValue
interface IntrospectionEnumValue {}The introspection representation of an enum value.
property deprecationReason
readonly deprecationReason: Maybe<string>;Reason this element is deprecated, if one was provided.
property description
readonly description?: Maybe<string>;Human-readable description for this schema element, if provided.
property isDeprecated
readonly isDeprecated: boolean;Whether this field, argument, enum value, or input value is deprecated.
property name
readonly name: string;The GraphQL name for this schema element.
interface IntrospectionField
interface IntrospectionField {}The introspection representation of a field.
property args
readonly args: ReadonlyArray<IntrospectionInputValue>;Arguments accepted by this field or directive.
property deprecationReason
readonly deprecationReason: Maybe<string>;Reason this element is deprecated, if one was provided.
property description
readonly description?: Maybe<string>;Human-readable description for this schema element, if provided.
property isDeprecated
readonly isDeprecated: boolean;Whether this field, argument, enum value, or input value is deprecated.
property name
readonly name: string;The GraphQL name for this schema element.
property type
readonly type: IntrospectionOutputTypeRef;The GraphQL type reference or runtime type for this element.
interface IntrospectionInputObjectType
interface IntrospectionInputObjectType {}The introspection representation of an input object type.
property description
readonly description?: Maybe<string>;Human-readable description for this schema element, if provided.
property inputFields
readonly inputFields: ReadonlyArray<IntrospectionInputValue>;Input fields declared by this input object type.
property isOneOf
readonly isOneOf: boolean;Whether this input object uses the experimental OneOf input object semantics.
property kind
readonly kind: typeof TypeKind.INPUT_OBJECT;The introspection kind discriminator for this type reference or type.
property name
readonly name: string;The GraphQL name for this schema element.
interface IntrospectionInputValue
interface IntrospectionInputValue {}The introspection representation of an argument or input field.
property defaultValue
readonly defaultValue: Maybe<string>;Default value used when no explicit value is supplied.
property deprecationReason
readonly deprecationReason?: Maybe<string>;Reason this element is deprecated, if one was provided.
property description
readonly description?: Maybe<string>;Human-readable description for this schema element, if provided.
property isDeprecated
readonly isDeprecated?: boolean;Whether this field, argument, enum value, or input value is deprecated.
property name
readonly name: string;The GraphQL name for this schema element.
property type
readonly type: IntrospectionInputTypeRef;The GraphQL type reference or runtime type for this element.
interface IntrospectionInterfaceType
interface IntrospectionInterfaceType {}The introspection representation of an interface type.
property description
readonly description?: Maybe<string>;Human-readable description for this schema element, if provided.
property fields
readonly fields: ReadonlyArray<IntrospectionField>;Fields declared by this object, interface, input object, or literal.
property interfaces
readonly interfaces: ReadonlyArray< IntrospectionNamedTypeRef<IntrospectionInterfaceType>>;Interfaces implemented by this object or interface type.
property kind
readonly kind: typeof TypeKind.INTERFACE;The introspection kind discriminator for this type reference or type.
property name
readonly name: string;The GraphQL name for this schema element.
property possibleTypes
readonly possibleTypes: ReadonlyArray< IntrospectionNamedTypeRef<IntrospectionObjectType>>;Object types that may be returned for this abstract type.
interface IntrospectionListTypeRef
interface IntrospectionListTypeRef< T extends IntrospectionTypeRef = IntrospectionTypeRef> {}The introspection representation of a list type reference.
interface IntrospectionNamedTypeRef
interface IntrospectionNamedTypeRef< T extends IntrospectionType = IntrospectionType> {}The introspection representation of a named type reference.
interface IntrospectionNonNullTypeRef
interface IntrospectionNonNullTypeRef< T extends IntrospectionTypeRef = IntrospectionTypeRef> {}The introspection representation of a non-null type reference.
interface IntrospectionObjectType
interface IntrospectionObjectType {}The introspection representation of an object type.
property description
readonly description?: Maybe<string>;Human-readable description for this schema element, if provided.
property fields
readonly fields: ReadonlyArray<IntrospectionField>;Fields declared by this object, interface, input object, or literal.
property interfaces
readonly interfaces: ReadonlyArray< IntrospectionNamedTypeRef<IntrospectionInterfaceType>>;Interfaces implemented by this object or interface type.
property kind
readonly kind: typeof TypeKind.OBJECT;The introspection kind discriminator for this type reference or type.
property name
readonly name: string;The GraphQL name for this schema element.
interface IntrospectionOptions
interface IntrospectionOptions {}Options controlling which fields are included in the introspection query.
property descriptions
descriptions?: boolean;Whether to include descriptions in the introspection result. Default: true
property directiveIsRepeatable
directiveIsRepeatable?: boolean;Whether to include
isRepeatableflag on directives. Default: false
property experimentalDirectiveDeprecation
experimentalDirectiveDeprecation?: boolean;Whether target GraphQL server supports deprecation of directives. Default: false
property inputValueDeprecation
inputValueDeprecation?: boolean;Whether target GraphQL server support deprecation of input values. Default: false
property oneOf
oneOf?: boolean;Whether target GraphQL server supports
@oneOfinput objects. Default: false
property schemaDescription
schemaDescription?: boolean;Whether to include
descriptionfield on schema. Default: false
property specifiedByUrl
specifiedByUrl?: boolean;Whether to include
specifiedByURLin the introspection result. Default: false
property typeDepth
typeDepth?: number;How deep to recurse into nested types, larger values will result in more accurate results, but have a higher load on the server. Some servers might restrict the maximum query depth or complexity. If that's the case, try decreasing this value.
Default: 9
interface IntrospectionQuery
interface IntrospectionQuery {}The result shape returned by a full introspection query.
interface IntrospectionScalarType
interface IntrospectionScalarType {}The introspection representation of a scalar type.
property description
readonly description?: Maybe<string>;Human-readable description for this schema element, if provided.
property kind
readonly kind: typeof TypeKind.SCALAR;The introspection kind discriminator for this type reference or type.
property name
readonly name: string;The GraphQL name for this schema element.
property specifiedByURL
readonly specifiedByURL?: Maybe<string>;URL identifying the behavior specified for this custom scalar.
interface IntrospectionSchema
interface IntrospectionSchema {}The introspection representation of a GraphQL schema.
property description
readonly description?: Maybe<string>;Human-readable description for this schema element, if provided.
property directives
readonly directives: ReadonlyArray<IntrospectionDirective>;Directives available in this schema or applied to this AST node.
property mutationType
readonly mutationType: Maybe<IntrospectionNamedTypeRef<IntrospectionObjectType>>;The root object type used for mutation operations, if supported.
property queryType
readonly queryType: IntrospectionNamedTypeRef<IntrospectionObjectType>;The root object type used for query operations.
property subscriptionType
readonly subscriptionType: Maybe< IntrospectionNamedTypeRef<IntrospectionObjectType>>;The root object type used for subscription operations, if supported.
property types
readonly types: ReadonlyArray<IntrospectionType>;Object types that belong to this union type.
interface IntrospectionUnionType
interface IntrospectionUnionType {}The introspection representation of a union type.
property description
readonly description?: Maybe<string>;Human-readable description for this schema element, if provided.
property kind
readonly kind: typeof TypeKind.UNION;The introspection kind discriminator for this type reference or type.
property name
readonly name: string;The GraphQL name for this schema element.
property possibleTypes
readonly possibleTypes: ReadonlyArray< IntrospectionNamedTypeRef<IntrospectionObjectType>>;Object types that may be returned for this abstract type.
interface IntValueNode
interface IntValueNode {}An integer value literal.
property kind
readonly kind: KindTypeMap['INT'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property value
readonly value: string;Parsed value represented by this node.
interface LegacyExperimentalIncrementalExecutionResults
interface LegacyExperimentalIncrementalExecutionResults< TInitialData = ObjMap<unknown>, TDeferredData = ObjMap<unknown>, TStreamItem = unknown, TExtensions = ObjMap<unknown>> {}Results for an operation that produced legacy incremental payloads.
property initialResult
initialResult: LegacyInitialIncrementalExecutionResult< TInitialData, TExtensions>;Initial execution result delivered before subsequent legacy incremental payloads.
property subsequentResults
subsequentResults: AsyncGenerator< LegacySubsequentIncrementalExecutionResult< TDeferredData, TStreamItem, TExtensions >, void, void>;Async stream of legacy incremental payloads delivered after the initial result.
interface LegacyIncrementalDeferResult
interface LegacyIncrementalDeferResult< TDeferredData = ObjMap<unknown>, TExtensions = ObjMap<unknown>> extends ExecutionResult<TDeferredData, TExtensions> {}Legacy incremental payload produced by a deferred fragment.
The payload location is identified directly by
pathand optionallabelinstead of by anidfrom a pending entry.
interface LegacyIncrementalStreamResult
interface LegacyIncrementalStreamResult< TStreamItem = unknown, TExtensions = ObjMap<unknown>> {}Legacy incremental payload produced by a streamed list field.
property errors
errors?: ReadonlyArray<GraphQLError>;Errors raised while producing streamed items.
property extensions
extensions?: TExtensions;Additional non-standard metadata included in this payload.
property items
items: ReadonlyArray<TStreamItem> | null;Streamed list items delivered by this payload.
property label
label?: string;Label from the
@streamdirective.
property path
path: ReadonlyArray<string | number>;Response path to the first streamed list item in this payload.
interface LegacyInitialIncrementalExecutionResult
interface LegacyInitialIncrementalExecutionResult< TInitialData = ObjMap<unknown>, TExtensions = ObjMap<unknown>> extends ExecutionResult<TInitialData, TExtensions> {}Initial execution result for an operation that produced legacy incremental payloads.
Unlike
InitialIncrementalExecutionResult, the legacy initial result does not include apendinglist. Subsequent payloads identify their location directly withpathand optionallabelfields.
property data
data: TInitialData;Data produced by the initial execution payload.
property extensions
extensions?: TExtensions;Additional non-standard metadata included in the initial result.
property hasNext
hasNext: true;Indicates that subsequent legacy incremental payloads will follow.
interface LegacySubsequentIncrementalExecutionResult
interface LegacySubsequentIncrementalExecutionResult< TDeferredData = ObjMap<unknown>, TStreamItem = unknown, TExtensions = ObjMap<unknown>> {}Subsequent payload produced by legacy incremental execution.
Legacy subsequent payloads may contain deferred fragment data, streamed list items, or only
hasNext: falseto complete the response stream.
property extensions
extensions?: TExtensions;Additional non-standard metadata included in this payload.
property hasNext
hasNext: boolean;Indicates whether more legacy incremental payloads will follow.
property incremental
incremental?: ReadonlyArray< LegacyIncrementalResult<TDeferredData, TStreamItem, TExtensions>>;Deferred or streamed payloads delivered by this response.
interface ListTypeNode
interface ListTypeNode {}A list type reference.
property kind
readonly kind: KindTypeMap['LIST_TYPE'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property type
readonly type: TypeNode;The GraphQL type reference or runtime type for this element.
interface ListValueNode
interface ListValueNode {}A list value literal.
property kind
readonly kind: KindTypeMap['LIST'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property values
readonly values: ReadonlyArray<ValueNode>;Values contained in this enum, list, or input-object definition.
interface MemberCoordinateNode
interface MemberCoordinateNode {}A schema coordinate that refers to a member of a named type.
property kind
readonly kind: KindTypeMap['MEMBER_COORDINATE'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location;The source location for this AST node, if location tracking was enabled.
property memberName
readonly memberName: NameNode;The member name referenced by this schema coordinate.
property name
readonly name: NameNode;Name node identifying this AST node.
interface NamedTypeNode
interface NamedTypeNode {}A named type reference.
property kind
readonly kind: KindTypeMap['NAMED_TYPE'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
interface NameNode
interface NameNode {}An identifier in a GraphQL document.
property kind
readonly kind: KindTypeMap['NAME'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property value
readonly value: string;Parsed value represented by this node.
interface NonNullTypeNode
interface NonNullTypeNode {}A non-null type reference.
property kind
readonly kind: KindTypeMap['NON_NULL_TYPE'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property type
readonly type: NamedTypeNode | ListTypeNode;The GraphQL type reference or runtime type for this element.
interface NullValueNode
interface NullValueNode {}A null value literal.
interface ObjectFieldNode
interface ObjectFieldNode {}A field inside an input object value literal.
property kind
readonly kind: KindTypeMap['OBJECT_FIELD'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
property value
readonly value: ValueNode;Parsed value represented by this node.
interface ObjectTypeDefinitionNode
interface ObjectTypeDefinitionNode {}An object type definition in a type-system document.
property description
readonly description?: StringValueNode | undefined;The optional GraphQL description associated with this definition.
property directives
readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property fields
readonly fields?: ReadonlyArray<FieldDefinitionNode> | undefined;Fields declared by this object, interface, input object, or literal.
property interfaces
readonly interfaces?: ReadonlyArray<NamedTypeNode> | undefined;Interfaces implemented by this object or interface type.
property kind
readonly kind: KindTypeMap['OBJECT_TYPE_DEFINITION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
interface ObjectTypeExtensionNode
interface ObjectTypeExtensionNode {}An object type extension.
property directives
readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property fields
readonly fields?: ReadonlyArray<FieldDefinitionNode> | undefined;Fields declared by this object, interface, input object, or literal.
property interfaces
readonly interfaces?: ReadonlyArray<NamedTypeNode> | undefined;Interfaces implemented by this object or interface type.
property kind
readonly kind: KindTypeMap['OBJECT_TYPE_EXTENSION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
interface ObjectValueNode
interface ObjectValueNode {}An input object value literal.
property fields
readonly fields: ReadonlyArray<ObjectFieldNode>;Fields declared by this object, interface, input object, or literal.
property kind
readonly kind: KindTypeMap['OBJECT'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
interface OperationDefinitionNode
interface OperationDefinitionNode {}A query, mutation, or subscription operation definition.
property description
readonly description?: StringValueNode | undefined;The optional GraphQL description associated with this definition.
property directives
readonly directives?: ReadonlyArray<DirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property kind
readonly kind: KindTypeMap['OPERATION_DEFINITION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name?: NameNode | undefined;Name node identifying this AST node.
property operation
readonly operation: OperationTypeNode;The operation selected for execution.
property selectionSet
readonly selectionSet: SelectionSetNode;Selections made by this operation, field, or fragment.
property variableDefinitions
readonly variableDefinitions?: ReadonlyArray<VariableDefinitionNode> | undefined;Variable definitions declared by this operation or fragment.
interface OperationTypeDefinitionNode
interface OperationTypeDefinitionNode {}A root operation type declaration inside a schema definition or extension.
property kind
readonly kind: KindTypeMap['OPERATION_TYPE_DEFINITION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property operation
readonly operation: OperationTypeNode;The operation selected for execution.
property type
readonly type: NamedTypeNode;The GraphQL type reference or runtime type for this element.
interface ParseOptions
interface ParseOptions {}Configuration options to control parser behavior
property experimentalFragmentArguments
experimentalFragmentArguments?: boolean | undefined;EXPERIMENTAL:
If enabled, the parser will understand and parse fragment variable definitions and arguments on fragment spreads. Fragment variable definitions will be represented in the
variableDefinitionsfield of the FragmentDefinitionNode. Fragment spread arguments will be represented in theargumentsfield of FragmentSpreadNode.Example 1
{t { ...A(var: true) }}fragment A($var: Boolean = false) on T {...B(x: $var)}
property maxTokens
maxTokens?: number | undefined;Parser CPU and memory usage is linear to the number of tokens in a document however in extreme cases it becomes quadratic due to memory exhaustion. Parsing happens before validation so even invalid queries can burn lots of CPU time and memory. To prevent this you can set a maximum number of tokens allowed within a document.
property noLocation
noLocation?: boolean | undefined;By default, the parser creates AST nodes that know the location in the source that they correspond to. This configuration flag disables that behavior for performance or testing.
interface ResponsePath
interface Path {}Represents a linked response path from a field back to the root response.
property key
readonly key: string | number;The field name or list index for this response path segment.
property prev
readonly prev: Path | undefined;The previous segment in the linked response path, or undefined at the root.
property typename
readonly typename: string | undefined;The runtime object type name associated with this path segment, if known.
interface SafeChange
interface SafeChange {}Description of a schema change that is considered safe for existing operations.
property description
description: string;Human-readable description of the safe schema change.
property type
type: SafeChangeType;Specific kind of safe schema change.
interface ScalarTypeDefinitionNode
interface ScalarTypeDefinitionNode {}A scalar type definition in a type-system document.
property description
readonly description?: StringValueNode | undefined;The optional GraphQL description associated with this definition.
property directives
readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property kind
readonly kind: KindTypeMap['SCALAR_TYPE_DEFINITION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
interface ScalarTypeExtensionNode
interface ScalarTypeExtensionNode {}A scalar type extension.
property directives
readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property kind
readonly kind: KindTypeMap['SCALAR_TYPE_EXTENSION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
interface SchemaDefinitionNode
interface SchemaDefinitionNode {}A schema definition in a type-system document.
property description
readonly description?: StringValueNode | undefined;The optional GraphQL description associated with this definition.
property directives
readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property kind
readonly kind: KindTypeMap['SCHEMA_DEFINITION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property operationTypes
readonly operationTypes: ReadonlyArray<OperationTypeDefinitionNode>;Root operation types declared by this schema definition or extension.
interface SchemaExtensionNode
interface SchemaExtensionNode {}A schema extension in a type-system document.
property directives
readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property kind
readonly kind: KindTypeMap['SCHEMA_EXTENSION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property operationTypes
readonly operationTypes?: ReadonlyArray<OperationTypeDefinitionNode> | undefined;Root operation types declared by this schema definition or extension.
interface SelectionSetNode
interface SelectionSetNode {}A set of fields and fragments selected from an object, interface, or union.
property kind
kind: KindTypeMap['SELECTION_SET'];The discriminator identifying the concrete AST or introspection kind.
property loc
loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property selections
selections: ReadonlyArray<SelectionNode>;Fields and fragments contained in this selection set.
interface SourceLocation
interface SourceLocation {}Represents a location in a Source.
interface StringValueNode
interface StringValueNode {}A string value literal.
property block
readonly block?: boolean | undefined;Whether this string was parsed from block string syntax.
property kind
readonly kind: KindTypeMap['STRING'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property value
readonly value: string;Parsed value represented by this node.
interface SubscriptionOperationDefinitionNode
interface SubscriptionOperationDefinitionNode extends OperationDefinitionNode {}A narrowed OperationDefinitionNode for subscription operations. Subscription operations go through a distinct execution pipeline (source event stream + per-event execution), so narrowing the operation type allows functions in that pipeline to accept only valid input.
property operation
readonly operation: (typeof OperationTypeNode)['SUBSCRIPTION'];Subscription operation kind for this definition.
interface SubsequentIncrementalExecutionResult
interface SubsequentIncrementalExecutionResult< TDeferredData = ObjMap<unknown>, TStreamItem = unknown, TExtensions = ObjMap<unknown>> {}Subsequent payload produced by incremental execution.
property completed
completed?: ReadonlyArray<CompletedResult>;Incremental payloads that completed with this response.
property extensions
extensions?: TExtensions;Additional non-standard metadata included in this payload.
property hasNext
hasNext: boolean;Indicates whether more incremental payloads will follow.
property incremental
incremental?: ReadonlyArray< IncrementalResult<TDeferredData, TStreamItem, TExtensions>>;Deferred or streamed payloads delivered by this response.
property pending
pending?: ReadonlyArray<PendingResult>;Incremental payloads that became pending with this response.
interface TypeCoordinateNode
interface TypeCoordinateNode {}A schema coordinate that refers to a named type.
property kind
readonly kind: KindTypeMap['TYPE_COORDINATE'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
interface TypedQueryDocumentNode
interface TypedQueryDocumentNode< TResponseData = { [key: string]: any; }, TRequestVariables = { [key: string]: any; }> extends DocumentNode {}Wrapper type that contains DocumentNode and types that can be deduced from it.
property definitions
readonly definitions: ReadonlyArray<ExecutableDefinitionNode>;Top-level executable and type-system definitions in this document.
interface UnionTypeDefinitionNode
interface UnionTypeDefinitionNode {}A union type definition in a type-system document.
property description
readonly description?: StringValueNode | undefined;The optional GraphQL description associated with this definition.
property directives
readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property kind
readonly kind: KindTypeMap['UNION_TYPE_DEFINITION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
property types
readonly types?: ReadonlyArray<NamedTypeNode> | undefined;Object types that belong to this union type.
interface UnionTypeExtensionNode
interface UnionTypeExtensionNode {}A union type extension.
property directives
readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property kind
readonly kind: KindTypeMap['UNION_TYPE_EXTENSION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
property types
readonly types?: ReadonlyArray<NamedTypeNode> | undefined;Object types that belong to this union type.
interface ValidatedExecutionArgs
interface ValidatedExecutionArgs {}Data that must be available at all points during query execution.
Namely, schema of the type system that is currently executing, and the fragments defined in the query document
property contextValue
contextValue: unknown;Application context value passed to every resolver.
property document
document: DocumentNode;Parsed GraphQL document being executed.
property enableEarlyExecution
enableEarlyExecution: boolean;Whether incremental execution may begin eligible work early.
property errorPropagation
errorPropagation: boolean;Whether execution should use error propagation.
property externalAbortSignal
externalAbortSignal: AbortSignal | undefined;External signal that may abort execution.
property fieldResolver
fieldResolver: GraphQLFieldResolver<any, any>;Resolver used for fields without an explicit resolver.
property fragmentDefinitions
fragmentDefinitions: ObjMap<FragmentDefinitionNode>;Fragment definitions keyed by fragment name.
property fragments
fragments: ObjMap<FragmentDetails>;Fragment details keyed by fragment name.
property hideSuggestions
hideSuggestions: boolean;Whether suggestion text should be omitted from execution errors.
property hooks
hooks: ExecutionHooks | undefined;Execution hooks supplied by the caller.
property operation
operation: OperationDefinitionNode;Operation definition selected for execution.
property rawVariableValues
rawVariableValues: Maybe<{ readonly [variable: string]: unknown;}>;Raw variable values provided by the caller before coercion.
property rootValue
rootValue: unknown;Root value passed to the operation.
property schema
schema: GraphQLSchema;Schema used for execution.
property subscribeFieldResolver
subscribeFieldResolver: GraphQLFieldResolver<any, any>;Resolver used for subscription fields without an explicit subscribe resolver.
property typeResolver
typeResolver: GraphQLTypeResolver<any, any>;Resolver used for abstract types without an explicit type resolver.
property variableValues
variableValues: VariableValues;Operation variable values with source metadata and coerced runtime values.
interface ValidatedSubscriptionArgs
interface ValidatedSubscriptionArgs extends ValidatedExecutionArgs {}Validated execution arguments for a subscription operation.
property operation
operation: SubscriptionOperationDefinitionNode;Subscription operation definition selected for execution.
interface ValidationOptions
interface ValidationOptions {}Options used when validating a GraphQL document. Validation
property hideSuggestions
hideSuggestions?: Maybe<boolean>;Whether suggestion text should be omitted from validation errors.
property maxErrors
maxErrors?: number;Maximum number of validation errors before validation stops.
interface VariableDefinitionNode
interface VariableDefinitionNode {}A variable declaration in an operation or experimental fragment definition.
property defaultValue
readonly defaultValue?: ConstValueNode | undefined;Default value used when no explicit value is supplied.
property description
readonly description?: StringValueNode | undefined;The optional GraphQL description associated with this definition.
property directives
readonly directives?: ReadonlyArray<ConstDirectiveNode> | undefined;Directives available in this schema or applied to this AST node.
property kind
readonly kind: KindTypeMap['VARIABLE_DEFINITION'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property type
readonly type: TypeNode;The GraphQL type reference or runtime type for this element.
property variable
readonly variable: VariableNode;The variable being defined or referenced.
interface VariableNode
interface VariableNode {}A variable reference, such as
$id.
property kind
readonly kind: KindTypeMap['VARIABLE'];The discriminator identifying the concrete AST or introspection kind.
property loc
readonly loc?: Location | undefined;The source location for this AST node, if location tracking was enabled.
property name
readonly name: NameNode;Name node identifying this AST node.
interface VariableValues
interface VariableValues {}Coerced variable values prepared for execution.
The
coercedmap contains runtime values keyed by variable name. Thesourcesmap records whether each value came from request input, an operation default, or a fragment-variable default so utilities can preserve defaults when replacing variables in literals.
Type Aliases
type ASTKindToNode
type ASTKindToNode = { [NodeT in ASTNode as NodeT['kind']]: NodeT;};Utility type listing all nodes indexed by their kind.
type ASTNode
type ASTNode = | NameNode | DocumentNode | OperationDefinitionNode | VariableDefinitionNode | VariableNode | SelectionSetNode | FieldNode | ArgumentNode | FragmentArgumentNode | FragmentSpreadNode | InlineFragmentNode | FragmentDefinitionNode | IntValueNode | FloatValueNode | StringValueNode | BooleanValueNode | NullValueNode | EnumValueNode | ListValueNode | ObjectValueNode | ObjectFieldNode | DirectiveNode | NamedTypeNode | ListTypeNode | NonNullTypeNode | SchemaDefinitionNode | OperationTypeDefinitionNode | ScalarTypeDefinitionNode | ObjectTypeDefinitionNode | FieldDefinitionNode | InputValueDefinitionNode | InterfaceTypeDefinitionNode | UnionTypeDefinitionNode | EnumTypeDefinitionNode | EnumValueDefinitionNode | InputObjectTypeDefinitionNode | DirectiveDefinitionNode | SchemaExtensionNode | ScalarTypeExtensionNode | ObjectTypeExtensionNode | InterfaceTypeExtensionNode | UnionTypeExtensionNode | EnumTypeExtensionNode | InputObjectTypeExtensionNode | DirectiveExtensionNode | TypeCoordinateNode | MemberCoordinateNode | ArgumentCoordinateNode | DirectiveCoordinateNode | DirectiveArgumentCoordinateNode;The list of all possible AST node types.
type ASTVisitFn
type ASTVisitFn<TVisitedNode extends ASTNode> = ( /** Current node being visited. */ node: TVisitedNode, /** Index or key for this node within the parent node or array. */ key: string | number | undefined, /** Parent immediately above this node, which may be an array. */ parent: ASTNode | ReadonlyArray<ASTNode> | undefined, /** Key path from the root node to this node. */ path: ReadonlyArray<string | number>, /** * All nodes and arrays visited before reaching this node's parent. * These correspond to array indices in `path`. * Note: ancestors includes arrays that contain the visited node's parent. */ ancestors: ReadonlyArray<ASTNode | ReadonlyArray<ASTNode>>) => any;A visitor is composed of visit functions called for each node during traversal.
type ASTVisitor
type ASTVisitor = EnterLeaveVisitor<ASTNode> | KindVisitor;A visitor defines the callbacks called during AST traversal.
type ASTVisitorKeyMap
type ASTVisitorKeyMap = { [NodeT in ASTNode as NodeT['kind']]?: ReadonlyArray<keyof NodeT>;};A visitor key map describes the traversable child properties for each node kind.
type BreakingChangeType
type BreakingChangeType = (typeof BreakingChangeType)[keyof typeof BreakingChangeType];Categories of schema changes that may break existing operations.
type ConstValueNode
type ConstValueNode = | IntValueNode | FloatValueNode | StringValueNode | BooleanValueNode | NullValueNode | EnumValueNode | ConstListValueNode | ConstObjectValueNode;Any value literal that is guaranteed not to contain a variable reference.
type DangerousChangeType
type DangerousChangeType = (typeof DangerousChangeType)[keyof typeof DangerousChangeType];Categories of schema changes that may be dangerous for existing operations.
type DefinitionNode
type DefinitionNode = | ExecutableDefinitionNode | TypeSystemDefinitionNode | TypeSystemExtensionNode;Any top-level definition that may appear in a GraphQL document.
type DirectiveLocation
type DirectiveLocation = (typeof DirectiveLocation)[keyof typeof DirectiveLocation];The set of allowed directive location values.
type ExecutableDefinitionNode
type ExecutableDefinitionNode = OperationDefinitionNode | FragmentDefinitionNode;Any executable definition that may appear in an operation document.
type FormattedIncrementalResult
type FormattedIncrementalResult< TDeferredData = ObjMap<unknown>, TStreamItem = unknown, TExtensions = ObjMap<unknown>> = | FormattedIncrementalDeferResult<TDeferredData, TExtensions> | FormattedIncrementalStreamResult<TStreamItem, TExtensions>;JSON-serializable deferred fragment or streamed list payload.
type FormattedLegacyIncrementalResult
type FormattedLegacyIncrementalResult< TDeferredData = ObjMap<unknown>, TStreamItem = unknown, TExtensions = ObjMap<unknown>> = | FormattedLegacyIncrementalDeferResult<TDeferredData, TExtensions> | FormattedLegacyIncrementalStreamResult<TStreamItem, TExtensions>;JSON-serializable deferred fragment or streamed list payload produced by legacy incremental execution.
type GraphQLAbstractType
type GraphQLAbstractType = GraphQLInterfaceType | GraphQLUnionType;These types may describe the parent context of a selection set.
type GraphQLCompositeType
type GraphQLCompositeType = | GraphQLObjectType | GraphQLInterfaceType | GraphQLUnionType;These types may describe the parent context of a selection set.
type GraphQLDefaultInput
type GraphQLDefaultInput = | { /** Runtime default value. */ value: unknown; /** GraphQL literal default value is not provided in this variant. */ literal?: never; } | { /** GraphQL literal default value. */ literal: ConstValueNode; /** Runtime default value is not provided in this variant. */ value?: never; };Default input represented as either a runtime value or a GraphQL literal.
type GraphQLEnumValueConfigMap
type GraphQLEnumValueConfigMap = ObjMap<GraphQLEnumValueConfig>;A map of enum value names to enum value configuration objects.
type GraphQLExecuteFn
type GraphQLExecuteFn = ( ...args: Parameters<typeof execute>) => ReturnType<typeof execute>;Function used by a GraphQL harness to execute a valid operation.
type GraphQLFieldConfigArgumentMap
type GraphQLFieldConfigArgumentMap = ObjMap<GraphQLArgumentConfig>;A map of argument names to argument configuration objects.
type GraphQLFieldConfigMap
type GraphQLFieldConfigMap<TSource, TContext> = ObjMap< GraphQLFieldConfig<TSource, TContext>>;A map of field names to field configuration objects.
type GraphQLFieldMap
type GraphQLFieldMap<TSource, TContext> = ObjMap<GraphQLField<TSource, TContext>>;A map of field names to resolved field definitions.
type GraphQLFieldResolver
type GraphQLFieldResolver<TSource, TContext, TArgs = any, TResult = unknown> = ( source: TSource, args: TArgs, context: TContext, info: GraphQLResolveInfo) => TResult;Resolves the runtime value for a GraphQL field.
type GraphQLInputFieldConfigMap
type GraphQLInputFieldConfigMap = ObjMap<GraphQLInputFieldConfig>;A map of input field names to input field configuration objects.
type GraphQLInputFieldMap
type GraphQLInputFieldMap = ObjMap<GraphQLInputField>;A map of input field names to resolved input field definitions.
type GraphQLInputType
type GraphQLInputType = | GraphQLNullableInputType | GraphQLNonNull<GraphQLNullableInputType>;These types may be used as input types for arguments and directives.
type GraphQLIsTypeOfFn
type GraphQLIsTypeOfFn<TAbstract, TContext> = ( value: TAbstract, context: TContext, info: GraphQLResolveInfo) => PromiseOrValue<boolean>;Checks whether a runtime value belongs to a GraphQL object type.
type GraphQLLeafType
type GraphQLLeafType = GraphQLScalarType | GraphQLEnumType;These types may describe types which may be leaf values.
type GraphQLNamedInputType
type GraphQLNamedInputType = | GraphQLScalarType | GraphQLEnumType | GraphQLInputObjectType;A named GraphQL type that can be used as an input type.
type GraphQLNamedOutputType
type GraphQLNamedOutputType = | GraphQLScalarType | GraphQLObjectType | GraphQLInterfaceType | GraphQLUnionType | GraphQLEnumType;A named GraphQL type that can be used as an output type.
type GraphQLNamedType
type GraphQLNamedType = GraphQLNamedInputType | GraphQLNamedOutputType;These named types do not include modifiers like List or NonNull.
type GraphQLNullableInputType
type GraphQLNullableInputType = | GraphQLNamedInputType | GraphQLList<GraphQLInputType>;These types may be used as input types for arguments and directives.
type GraphQLNullableOutputType
type GraphQLNullableOutputType = | GraphQLNamedOutputType | GraphQLList<GraphQLOutputType>;These types may be used as output types as the result of fields.
type GraphQLNullableType
type GraphQLNullableType = GraphQLNamedType | GraphQLList<GraphQLType>;These types can all accept null as a value.
type GraphQLOutputType
type GraphQLOutputType = | GraphQLNullableOutputType | GraphQLNonNull<GraphQLNullableOutputType>;These types may be used as output types as the result of fields.
type GraphQLParseFn
type GraphQLParseFn = ( ...args: Parameters<typeof parse>) => PromiseOrValue<ReturnType<typeof parse>>;Function used by a GraphQL harness to parse GraphQL source text.
type GraphQLScalarInputLiteralCoercer
type GraphQLScalarInputLiteralCoercer<TInternal> = ( valueNode: ConstValueNode) => Maybe<TInternal>;Function used to coerce GraphQL scalar input literals.
type GraphQLScalarInputValueCoercer
type GraphQLScalarInputValueCoercer<TInternal> = (inputValue: unknown) => TInternal;Function used to coerce externally provided scalar input values.
type GraphQLScalarLiteralParser
type GraphQLScalarLiteralParser<TInternal> = ( valueNode: ValueNode, variables: Maybe<ObjMap<unknown>>) => Maybe<TInternal>;Deprecated function type that parses a GraphQL value literal as a scalar input value. Use
GraphQLScalarInputLiteralCoercerinstead.Deprecated
Use GraphQLScalarInputLiteralCoercer instead. Will be removed in v18.
type GraphQLScalarOutputValueCoercer
type GraphQLScalarOutputValueCoercer<TExternal> = ( outputValue: unknown) => TExternal;Function used to coerce internal scalar values for response output.
type GraphQLScalarSerializer
type GraphQLScalarSerializer<TExternal> = (outputValue: unknown) => TExternal;Deprecated function type that serializes a runtime value as a scalar output value. Use
GraphQLScalarOutputValueCoercerinstead.Deprecated
Use GraphQLScalarOutputValueCoercer instead. Will be removed in v18.
type GraphQLScalarValueParser
type GraphQLScalarValueParser<TInternal> = (inputValue: unknown) => TInternal;Deprecated function type that parses a runtime input value as a scalar input value. Use
GraphQLScalarInputValueCoercerinstead.Deprecated
Use GraphQLScalarInputValueCoercer instead. Will be removed in v18.
type GraphQLSubscribeFn
type GraphQLSubscribeFn = ( ...args: Parameters<typeof subscribe>) => ReturnType<typeof subscribe>;Function used by a GraphQL harness to create a subscription response stream.
type GraphQLType
type GraphQLType = GraphQLNamedType | GraphQLWrappingType;These are all of the possible kinds of types.
type GraphQLTypeResolver
type GraphQLTypeResolver<TSource, TContext> = ( value: TSource, context: TContext, info: GraphQLResolveInfo, abstractType: GraphQLAbstractType) => PromiseOrValue<string | undefined>;Resolves the concrete object type for an abstract GraphQL type.
type GraphQLValidateFn
type GraphQLValidateFn = ( ...args: Parameters<typeof validate>) => PromiseOrValue<ReturnType<typeof validate>>;Function used by a GraphQL harness to validate a parsed document.
type GraphQLWrappingType
type GraphQLWrappingType = | GraphQLList<GraphQLType> | GraphQLNonNull<GraphQLNullableType>;These types wrap and modify other types
type IncrementalResult
type IncrementalResult< TDeferredData = ObjMap<unknown>, TStreamItem = unknown, TExtensions = ObjMap<unknown>> = | IncrementalDeferResult<TDeferredData, TExtensions> | IncrementalStreamResult<TStreamItem, TExtensions>;Deferred fragment or streamed list payload produced by incremental execution.
type IntrospectionInputType
type IntrospectionInputType = | IntrospectionScalarType | IntrospectionEnumType | IntrospectionInputObjectType;An introspection type that can appear in input position.
type IntrospectionInputTypeRef
type IntrospectionInputTypeRef = | IntrospectionNamedTypeRef<IntrospectionInputType> | IntrospectionListTypeRef<IntrospectionInputTypeRef> | IntrospectionNonNullTypeRef< | IntrospectionNamedTypeRef<IntrospectionInputType> | IntrospectionListTypeRef<IntrospectionInputTypeRef> >;An introspection type reference that can appear in input position.
type IntrospectionOutputType
type IntrospectionOutputType = | IntrospectionScalarType | IntrospectionObjectType | IntrospectionInterfaceType | IntrospectionUnionType | IntrospectionEnumType;An introspection type that can appear in output position.
type IntrospectionOutputTypeRef
type IntrospectionOutputTypeRef = | IntrospectionNamedTypeRef<IntrospectionOutputType> | IntrospectionListTypeRef<IntrospectionOutputTypeRef> | IntrospectionNonNullTypeRef< | IntrospectionNamedTypeRef<IntrospectionOutputType> | IntrospectionListTypeRef<IntrospectionOutputTypeRef> >;An introspection type reference that can appear in output position.
type IntrospectionType
type IntrospectionType = | IntrospectionScalarType | IntrospectionObjectType | IntrospectionInterfaceType | IntrospectionUnionType | IntrospectionEnumType | IntrospectionInputObjectType;Any introspection representation of a GraphQL type.
type IntrospectionTypeRef
type IntrospectionTypeRef = | IntrospectionNamedTypeRef | IntrospectionListTypeRef | IntrospectionNonNullTypeRef< IntrospectionNamedTypeRef | IntrospectionListTypeRef >;Any introspection representation of a type reference.
type Kind
type Kind = (typeof Kind_)[keyof typeof Kind_];The set of allowed kind values for AST nodes.
type LegacyIncrementalResult
type LegacyIncrementalResult< TDeferredData = ObjMap<unknown>, TStreamItem = unknown, TExtensions = ObjMap<unknown>> = | LegacyIncrementalDeferResult<TDeferredData, TExtensions> | LegacyIncrementalStreamResult<TStreamItem, TExtensions>;Deferred fragment or streamed list payload produced by legacy incremental execution.
type OperationTypeNode
type OperationTypeNode = (typeof OperationTypeNode)[keyof typeof OperationTypeNode];The operation types supported by GraphQL executable definitions. Kinds
type ResolvedSchemaElement
type ResolvedSchemaElement = | ResolvedNamedType | ResolvedField | ResolvedInputField | ResolvedEnumValue | ResolvedFieldArgument | ResolvedDirective | ResolvedDirectiveArgument;A schema element resolved from a schema coordinate.
type RootSelectionSetExecutor
type RootSelectionSetExecutor = ( validatedExecutionArgs: ValidatedSubscriptionArgs) => PromiseOrValue<ExecutionResult>;Function used to execute a validated root selection set for a subscription event.
type SafeChangeType
type SafeChangeType = (typeof SafeChangeType)[keyof typeof SafeChangeType];Categories of schema changes that are considered safe for existing operations.
type SchemaChange
type SchemaChange = SafeChange | DangerousChange | BreakingChange;Any schema change detected between two schemas.
type SchemaCoordinateNode
type SchemaCoordinateNode = | TypeCoordinateNode | MemberCoordinateNode | ArgumentCoordinateNode | DirectiveCoordinateNode | DirectiveArgumentCoordinateNode;Any AST node representing a GraphQL schema coordinate.
type SelectionNode
type SelectionNode = FieldNode | FragmentSpreadNode | InlineFragmentNode;Any selection that may appear inside a selection set.
type ThunkObjMap
type ThunkObjMap<T> = (() => ObjMap<T>) | ObjMap<T>;A thunk that resolves to an object map.
type ThunkReadonlyArray
type ThunkReadonlyArray<T> = (() => ReadonlyArray<T>) | ReadonlyArray<T>;Used while defining GraphQL types to allow for circular references in otherwise immutable type definitions.
type TokenKind
type TokenKind = (typeof TokenKind)[keyof typeof TokenKind];An exported enum describing the different kinds of tokens that the lexer emits.
type TypeDefinitionNode
type TypeDefinitionNode = | ScalarTypeDefinitionNode | ObjectTypeDefinitionNode | InterfaceTypeDefinitionNode | UnionTypeDefinitionNode | EnumTypeDefinitionNode | InputObjectTypeDefinitionNode;Any named type definition that may appear in a schema document.
type TypeExtensionNode
type TypeExtensionNode = | ScalarTypeExtensionNode | ObjectTypeExtensionNode | InterfaceTypeExtensionNode | UnionTypeExtensionNode | EnumTypeExtensionNode | InputObjectTypeExtensionNode;Any named type extension that may appear in a schema extension document.
type TypeKind
type TypeKind = (typeof TypeKind)[keyof typeof TypeKind];The introspection enum describing the different kinds of GraphQL types. Introspection
type TypeNode
type TypeNode = NamedTypeNode | ListTypeNode | NonNullTypeNode;Any GraphQL type reference AST node.
type TypeSystemDefinitionNode
type TypeSystemDefinitionNode = | SchemaDefinitionNode | TypeDefinitionNode | DirectiveDefinitionNode;Any type-system definition that may appear in a schema document.
type TypeSystemExtensionNode
type TypeSystemExtensionNode = | SchemaExtensionNode | TypeExtensionNode | DirectiveExtensionNode;Any type-system extension that may appear in a schema extension document.
type ValidationRule
type ValidationRule = (context: ValidationContext) => ASTVisitor;A function that creates an AST visitor for validating a GraphQL document.
type ValueNode
type ValueNode = | VariableNode | IntValueNode | FloatValueNode | StringValueNode | BooleanValueNode | NullValueNode | EnumValueNode | ListValueNode | ObjectValueNode;Any value literal that may appear in an executable GraphQL document.
Namespaces
namespace Kind
module 'language/kinds_.d.ts' {}Kinds
variable ARGUMENT
const ARGUMENT: string;AST kind for argument nodes.
variable ARGUMENT_COORDINATE
const ARGUMENT_COORDINATE: string;AST kind for argument coordinate nodes.
variable BOOLEAN
const BOOLEAN: string;AST kind for boolean value nodes.
variable DIRECTIVE
const DIRECTIVE: string;AST kind for directive nodes.
variable DIRECTIVE_ARGUMENT_COORDINATE
const DIRECTIVE_ARGUMENT_COORDINATE: string;AST kind for directive argument coordinate nodes.
variable DIRECTIVE_COORDINATE
const DIRECTIVE_COORDINATE: string;AST kind for directive coordinate nodes.
variable DIRECTIVE_DEFINITION
const DIRECTIVE_DEFINITION: string;AST kind for directive definition nodes.
variable DIRECTIVE_EXTENSION
const DIRECTIVE_EXTENSION: string;AST kind for directive extension nodes.
variable DOCUMENT
const DOCUMENT: string;AST kind for document nodes.
variable ENUM
const ENUM: string;AST kind for enum value nodes.
variable ENUM_TYPE_DEFINITION
const ENUM_TYPE_DEFINITION: string;AST kind for enum type definition nodes.
variable ENUM_TYPE_EXTENSION
const ENUM_TYPE_EXTENSION: string;AST kind for enum type extension nodes.
variable ENUM_VALUE_DEFINITION
const ENUM_VALUE_DEFINITION: string;AST kind for enum value definition nodes.
variable FIELD
const FIELD: string;AST kind for field selection nodes.
variable FIELD_DEFINITION
const FIELD_DEFINITION: string;AST kind for field definition nodes.
variable FLOAT
const FLOAT: string;AST kind for floating-point value nodes.
variable FRAGMENT_ARGUMENT
const FRAGMENT_ARGUMENT: string;AST kind for fragment argument nodes.
variable FRAGMENT_DEFINITION
const FRAGMENT_DEFINITION: string;AST kind for fragment definition nodes.
variable FRAGMENT_SPREAD
const FRAGMENT_SPREAD: string;AST kind for fragment spread nodes.
variable INLINE_FRAGMENT
const INLINE_FRAGMENT: string;AST kind for inline fragment nodes.
variable INPUT_OBJECT_TYPE_DEFINITION
const INPUT_OBJECT_TYPE_DEFINITION: string;AST kind for input object type definition nodes.
variable INPUT_OBJECT_TYPE_EXTENSION
const INPUT_OBJECT_TYPE_EXTENSION: string;AST kind for input object type extension nodes.
variable INPUT_VALUE_DEFINITION
const INPUT_VALUE_DEFINITION: string;AST kind for input value definition nodes.
variable INT
const INT: string;AST kind for integer value nodes.
variable INTERFACE_TYPE_DEFINITION
const INTERFACE_TYPE_DEFINITION: string;AST kind for interface type definition nodes.
variable INTERFACE_TYPE_EXTENSION
const INTERFACE_TYPE_EXTENSION: string;AST kind for interface type extension nodes.
variable LIST
const LIST: string;AST kind for list value nodes.
variable LIST_TYPE
const LIST_TYPE: string;AST kind for list type reference nodes.
variable MEMBER_COORDINATE
const MEMBER_COORDINATE: string;AST kind for member coordinate nodes.
variable NAME
const NAME: string;AST kind for name nodes.
variable NAMED_TYPE
const NAMED_TYPE: string;AST kind for named type reference nodes.
variable NON_NULL_TYPE
const NON_NULL_TYPE: string;AST kind for non-null type reference nodes.
variable NULL
const NULL: string;AST kind for null value nodes.
variable OBJECT
const OBJECT: string;AST kind for object value nodes.
variable OBJECT_FIELD
const OBJECT_FIELD: string;AST kind for object field nodes.
variable OBJECT_TYPE_DEFINITION
const OBJECT_TYPE_DEFINITION: string;AST kind for object type definition nodes.
variable OBJECT_TYPE_EXTENSION
const OBJECT_TYPE_EXTENSION: string;AST kind for object type extension nodes.
variable OPERATION_DEFINITION
const OPERATION_DEFINITION: string;AST kind for operation definition nodes.
variable OPERATION_TYPE_DEFINITION
const OPERATION_TYPE_DEFINITION: string;AST kind for operation type definition nodes.
variable SCALAR_TYPE_DEFINITION
const SCALAR_TYPE_DEFINITION: string;AST kind for scalar type definition nodes.
variable SCALAR_TYPE_EXTENSION
const SCALAR_TYPE_EXTENSION: string;AST kind for scalar type extension nodes.
variable SCHEMA_DEFINITION
const SCHEMA_DEFINITION: string;AST kind for schema definition nodes.
variable SCHEMA_EXTENSION
const SCHEMA_EXTENSION: string;AST kind for schema extension nodes.
variable SELECTION_SET
const SELECTION_SET: string;AST kind for selection set nodes.
variable STRING
const STRING: string;AST kind for string value nodes.
variable TYPE_COORDINATE
const TYPE_COORDINATE: string;AST kind for type coordinate nodes.
variable UNION_TYPE_DEFINITION
const UNION_TYPE_DEFINITION: string;AST kind for union type definition nodes.
variable UNION_TYPE_EXTENSION
const UNION_TYPE_EXTENSION: string;AST kind for union type extension nodes.
variable VARIABLE
const VARIABLE: string;AST kind for variable reference nodes.
variable VARIABLE_DEFINITION
const VARIABLE_DEFINITION: string;AST kind for variable definition nodes.
type ARGUMENT
type ARGUMENT = typeof ARGUMENT;Type of the
Kind.ARGUMENTAST kind value.
type ARGUMENT_COORDINATE
type ARGUMENT_COORDINATE = typeof ARGUMENT_COORDINATE;Type of the
Kind.ARGUMENT_COORDINATEAST kind value.
type BOOLEAN
type BOOLEAN = typeof BOOLEAN;Type of the
Kind.BOOLEANAST kind value.
type DIRECTIVE
type DIRECTIVE = typeof DIRECTIVE;Type of the
Kind.DIRECTIVEAST kind value.
type DIRECTIVE_ARGUMENT_COORDINATE
type DIRECTIVE_ARGUMENT_COORDINATE = typeof DIRECTIVE_ARGUMENT_COORDINATE;Type of the
Kind.DIRECTIVE_ARGUMENT_COORDINATEAST kind value.
type DIRECTIVE_COORDINATE
type DIRECTIVE_COORDINATE = typeof DIRECTIVE_COORDINATE;Type of the
Kind.DIRECTIVE_COORDINATEAST kind value.
type DIRECTIVE_DEFINITION
type DIRECTIVE_DEFINITION = typeof DIRECTIVE_DEFINITION;Type of the
Kind.DIRECTIVE_DEFINITIONAST kind value.
type DIRECTIVE_EXTENSION
type DIRECTIVE_EXTENSION = typeof DIRECTIVE_EXTENSION;Type of the
Kind.DIRECTIVE_EXTENSIONAST kind value.
type DOCUMENT
type DOCUMENT = typeof DOCUMENT;Type of the
Kind.DOCUMENTAST kind value.
type ENUM
type ENUM = typeof ENUM;Type of the
Kind.ENUMAST kind value.
type ENUM_TYPE_EXTENSION
type ENUM_TYPE_EXTENSION = typeof ENUM_TYPE_EXTENSION;Type of the
Kind.ENUM_TYPE_EXTENSIONAST kind value.
type ENUM_VALUE_DEFINITION
type ENUM_VALUE_DEFINITION = typeof ENUM_VALUE_DEFINITION;Type of the
Kind.ENUM_VALUE_DEFINITIONAST kind value.
type FIELD
type FIELD = typeof FIELD;Type of the
Kind.FIELDAST kind value.
type FIELD_DEFINITION
type FIELD_DEFINITION = typeof FIELD_DEFINITION;Type of the
Kind.FIELD_DEFINITIONAST kind value.
type FLOAT
type FLOAT = typeof FLOAT;Type of the
Kind.FLOATAST kind value.
type FRAGMENT_ARGUMENT
type FRAGMENT_ARGUMENT = typeof FRAGMENT_ARGUMENT;Type of the
Kind.FRAGMENT_ARGUMENTAST kind value.
type FRAGMENT_DEFINITION
type FRAGMENT_DEFINITION = typeof FRAGMENT_DEFINITION;Type of the
Kind.FRAGMENT_DEFINITIONAST kind value.
type FRAGMENT_SPREAD
type FRAGMENT_SPREAD = typeof FRAGMENT_SPREAD;Type of the
Kind.FRAGMENT_SPREADAST kind value.
type INLINE_FRAGMENT
type INLINE_FRAGMENT = typeof INLINE_FRAGMENT;Type of the
Kind.INLINE_FRAGMENTAST kind value.
type INPUT_OBJECT_TYPE_DEFINITION
type INPUT_OBJECT_TYPE_DEFINITION = typeof INPUT_OBJECT_TYPE_DEFINITION;Type of the
Kind.INPUT_OBJECT_TYPE_DEFINITIONAST kind value.
type INPUT_OBJECT_TYPE_EXTENSION
type INPUT_OBJECT_TYPE_EXTENSION = typeof INPUT_OBJECT_TYPE_EXTENSION;Type of the
Kind.INPUT_OBJECT_TYPE_EXTENSIONAST kind value.
type INPUT_VALUE_DEFINITION
type INPUT_VALUE_DEFINITION = typeof INPUT_VALUE_DEFINITION;Type of the
Kind.INPUT_VALUE_DEFINITIONAST kind value.
type INT
type INT = typeof INT;Type of the
Kind.INTAST kind value.
type INTERFACE_TYPE_DEFINITION
type INTERFACE_TYPE_DEFINITION = typeof INTERFACE_TYPE_DEFINITION;Type of the
Kind.INTERFACE_TYPE_DEFINITIONAST kind value.
type INTERFACE_TYPE_EXTENSION
type INTERFACE_TYPE_EXTENSION = typeof INTERFACE_TYPE_EXTENSION;Type of the
Kind.INTERFACE_TYPE_EXTENSIONAST kind value.
type LIST
type LIST = typeof LIST;Type of the
Kind.LISTAST kind value.
type LIST_TYPE
type LIST_TYPE = typeof LIST_TYPE;Type of the
Kind.LIST_TYPEAST kind value.
type MEMBER_COORDINATE
type MEMBER_COORDINATE = typeof MEMBER_COORDINATE;Type of the
Kind.MEMBER_COORDINATEAST kind value.
type NAME
type NAME = typeof NAME;Type of the
Kind.NAMEAST kind value.
type NAMED_TYPE
type NAMED_TYPE = typeof NAMED_TYPE;Type of the
Kind.NAMED_TYPEAST kind value.
type NON_NULL_TYPE
type NON_NULL_TYPE = typeof NON_NULL_TYPE;Type of the
Kind.NON_NULL_TYPEAST kind value.
type NULL
type NULL = typeof NULL;Type of the
Kind.NULLAST kind value.
type OBJECT
type OBJECT = typeof OBJECT;Type of the
Kind.OBJECTAST kind value.
type OBJECT_FIELD
type OBJECT_FIELD = typeof OBJECT_FIELD;Type of the
Kind.OBJECT_FIELDAST kind value.
type OBJECT_TYPE_DEFINITION
type OBJECT_TYPE_DEFINITION = typeof OBJECT_TYPE_DEFINITION;Type of the
Kind.OBJECT_TYPE_DEFINITIONAST kind value.
type OBJECT_TYPE_EXTENSION
type OBJECT_TYPE_EXTENSION = typeof OBJECT_TYPE_EXTENSION;Type of the
Kind.OBJECT_TYPE_EXTENSIONAST kind value.
type OPERATION_DEFINITION
type OPERATION_DEFINITION = typeof OPERATION_DEFINITION;Type of the
Kind.OPERATION_DEFINITIONAST kind value.
type OPERATION_TYPE_DEFINITION
type OPERATION_TYPE_DEFINITION = typeof OPERATION_TYPE_DEFINITION;Type of the
Kind.OPERATION_TYPE_DEFINITIONAST kind value.
type SCALAR_TYPE_DEFINITION
type SCALAR_TYPE_DEFINITION = typeof SCALAR_TYPE_DEFINITION;Type of the
Kind.SCALAR_TYPE_DEFINITIONAST kind value.
type SCALAR_TYPE_EXTENSION
type SCALAR_TYPE_EXTENSION = typeof SCALAR_TYPE_EXTENSION;Type of the
Kind.SCALAR_TYPE_EXTENSIONAST kind value.
type SCHEMA_DEFINITION
type SCHEMA_DEFINITION = typeof SCHEMA_DEFINITION;Type of the
Kind.SCHEMA_DEFINITIONAST kind value.
type SCHEMA_EXTENSION
type SCHEMA_EXTENSION = typeof SCHEMA_EXTENSION;Type of the
Kind.SCHEMA_EXTENSIONAST kind value.
type SELECTION_SET
type SELECTION_SET = typeof SELECTION_SET;Type of the
Kind.SELECTION_SETAST kind value.
type STRING
type STRING = typeof STRING;Type of the
Kind.STRINGAST kind value.
type TYPE_COORDINATE
type TYPE_COORDINATE = typeof TYPE_COORDINATE;Type of the
Kind.TYPE_COORDINATEAST kind value.
type UNION_TYPE_DEFINITION
type UNION_TYPE_DEFINITION = typeof UNION_TYPE_DEFINITION;Type of the
Kind.UNION_TYPE_DEFINITIONAST kind value.
type UNION_TYPE_EXTENSION
type UNION_TYPE_EXTENSION = typeof UNION_TYPE_EXTENSION;Type of the
Kind.UNION_TYPE_EXTENSIONAST kind value.
type VARIABLE
type VARIABLE = typeof VARIABLE;Type of the
Kind.VARIABLEAST kind value.
type VARIABLE_DEFINITION
type VARIABLE_DEFINITION = typeof VARIABLE_DEFINITION;Type of the
Kind.VARIABLE_DEFINITIONAST kind value.
Package Files (107)
- devMode.d.ts
- diagnostics.d.ts
- error/GraphQLError.d.ts
- error/locatedError.d.ts
- error/syntaxError.d.ts
- execution/AbortedGraphQLExecutionError.d.ts
- execution/ExecutionArgs.d.ts
- execution/Executor.d.ts
- execution/execute.d.ts
- execution/incremental/IncrementalExecutor.d.ts
- execution/legacyIncremental/BranchingIncrementalExecutor.d.ts
- execution/legacyIncremental/legacyExecuteIncrementally.d.ts
- execution/values.d.ts
- graphql.d.ts
- harness.d.ts
- index.d.ts
- jsutils/Path.d.ts
- language/ast.d.ts
- language/directiveLocation.d.ts
- language/kinds.d.ts
- language/kinds_.d.ts
- language/lexer.d.ts
- language/location.d.ts
- language/parser.d.ts
- language/predicates.d.ts
- language/printLocation.d.ts
- language/printer.d.ts
- language/source.d.ts
- language/tokenKind.d.ts
- language/visitor.d.ts
- type/assertName.d.ts
- type/definition.d.ts
- type/directives.d.ts
- type/introspection.d.ts
- type/scalars.d.ts
- type/schema.d.ts
- type/validate.d.ts
- utilities/TypeInfo.d.ts
- utilities/astFromValue.d.ts
- utilities/buildASTSchema.d.ts
- utilities/buildClientSchema.d.ts
- utilities/coerceInputValue.d.ts
- utilities/concatAST.d.ts
- utilities/extendSchema.d.ts
- utilities/findSchemaChanges.d.ts
- utilities/getIntrospectionQuery.d.ts
- utilities/getOperationAST.d.ts
- utilities/introspectionFromSchema.d.ts
- utilities/lexicographicSortSchema.d.ts
- utilities/printSchema.d.ts
- utilities/replaceVariables.d.ts
- utilities/resolveSchemaCoordinate.d.ts
- utilities/separateOperations.d.ts
- utilities/stripIgnoredCharacters.d.ts
- utilities/typeComparators.d.ts
- utilities/typeFromAST.d.ts
- utilities/typedQueryDocumentNode.d.ts
- utilities/validateInputValue.d.ts
- utilities/valueFromAST.d.ts
- utilities/valueFromASTUntyped.d.ts
- utilities/valueToLiteral.d.ts
- validation/ValidationContext.d.ts
- validation/rules/DeferStreamDirectiveLabelRule.d.ts
- validation/rules/DeferStreamDirectiveOnRootFieldRule.d.ts
- validation/rules/DeferStreamDirectiveOnValidOperationsRule.d.ts
- validation/rules/ExecutableDefinitionsRule.d.ts
- validation/rules/FieldsOnCorrectTypeRule.d.ts
- validation/rules/FragmentsOnCompositeTypesRule.d.ts
- validation/rules/KnownArgumentNamesRule.d.ts
- validation/rules/KnownDirectivesRule.d.ts
- validation/rules/KnownFragmentNamesRule.d.ts
- validation/rules/KnownOperationTypesRule.d.ts
- validation/rules/KnownTypeNamesRule.d.ts
- validation/rules/LoneAnonymousOperationRule.d.ts
- validation/rules/LoneSchemaDefinitionRule.d.ts
- validation/rules/MaxIntrospectionDepthRule.d.ts
- validation/rules/NoFragmentCyclesRule.d.ts
- validation/rules/NoUndefinedVariablesRule.d.ts
- validation/rules/NoUnusedFragmentsRule.d.ts
- validation/rules/NoUnusedVariablesRule.d.ts
- validation/rules/OverlappingFieldsCanBeMergedRule.d.ts
- validation/rules/PossibleFragmentSpreadsRule.d.ts
- validation/rules/PossibleTypeExtensionsRule.d.ts
- validation/rules/ProvidedRequiredArgumentsRule.d.ts
- validation/rules/ScalarLeafsRule.d.ts
- validation/rules/SingleFieldSubscriptionsRule.d.ts
- validation/rules/StreamDirectiveOnListFieldRule.d.ts
- validation/rules/UniqueArgumentDefinitionNamesRule.d.ts
- validation/rules/UniqueArgumentNamesRule.d.ts
- validation/rules/UniqueDirectiveNamesRule.d.ts
- validation/rules/UniqueDirectivesPerLocationRule.d.ts
- validation/rules/UniqueEnumValueNamesRule.d.ts
- validation/rules/UniqueFieldDefinitionNamesRule.d.ts
- validation/rules/UniqueFragmentNamesRule.d.ts
- validation/rules/UniqueInputFieldNamesRule.d.ts
- validation/rules/UniqueOperationNamesRule.d.ts
- validation/rules/UniqueOperationTypesRule.d.ts
- validation/rules/UniqueTypeNamesRule.d.ts
- validation/rules/UniqueVariableNamesRule.d.ts
- validation/rules/ValuesOfCorrectTypeRule.d.ts
- validation/rules/VariablesAreInputTypesRule.d.ts
- validation/rules/VariablesInAllowedPositionRule.d.ts
- validation/rules/custom/NoDeprecatedCustomRule.d.ts
- validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts
- validation/specifiedRules.d.ts
- validation/validate.d.ts
- version.d.ts
Dependencies (0)
No dependencies.
Dev Dependencies (0)
No dev dependencies.
Peer Dependencies (0)
No peer dependencies.
Badge
To add a badge like this oneto your package's README, use the codes available below.
You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/graphql.
- Markdown[](https://www.jsdocs.io/package/graphql)
- HTML<a href="https://www.jsdocs.io/package/graphql"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>
- Updated .
Package analyzed in 16568 ms. - Missing or incorrect documentation? Open an issue for this package.
