UNPKG

graphql

Version:

A Query Language and Runtime which can target any service.

1 lines 59 kB
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/type/validate.ts"],"names":[],"mappings":"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","sourcesContent":["/** @category Validation */\n\nimport { AccumulatorMap } from '../jsutils/AccumulatorMap.ts';\nimport { capitalize } from '../jsutils/capitalize.ts';\nimport { andList } from '../jsutils/formatList.ts';\nimport { inspect } from '../jsutils/inspect.ts';\nimport { invariant } from '../jsutils/invariant.ts';\nimport { isIterableObject } from '../jsutils/isIterableObject.ts';\nimport { isObjectLike } from '../jsutils/isObjectLike.ts';\nimport { keyMap } from '../jsutils/keyMap.ts';\nimport { mapValue } from '../jsutils/mapValue.ts';\nimport type { Maybe } from '../jsutils/Maybe.ts';\nimport type { ObjMap } from '../jsutils/ObjMap.ts';\nimport { printPathArray } from '../jsutils/printPathArray.ts';\n\nimport { GraphQLError } from '../error/GraphQLError.ts';\n\nimport type {\n ASTNode,\n ConstValueNode,\n DirectiveNode,\n InterfaceTypeDefinitionNode,\n InterfaceTypeExtensionNode,\n NamedTypeNode,\n ObjectTypeDefinitionNode,\n ObjectTypeExtensionNode,\n UnionTypeDefinitionNode,\n UnionTypeExtensionNode,\n} from '../language/ast.ts';\nimport { OperationTypeNode } from '../language/ast.ts';\nimport { Kind } from '../language/kinds.ts';\n\nimport { isEqualType, isTypeSubTypeOf } from '../utilities/typeComparators.ts';\nimport {\n validateInputLiteral,\n validateInputValue,\n} from '../utilities/validateInputValue.ts';\n\nimport type {\n GraphQLArgument,\n GraphQLDefaultInput,\n GraphQLEnumType,\n GraphQLInputField,\n GraphQLInputObjectType,\n GraphQLInputType,\n GraphQLInterfaceType,\n GraphQLObjectType,\n GraphQLUnionType,\n} from './definition.ts';\nimport {\n assertLeafType,\n getNamedType,\n isEnumType,\n isInputObjectType,\n isInputType,\n isInterfaceType,\n isListType,\n isNamedType,\n isNonNullType,\n isObjectType,\n isOutputType,\n isRequiredArgument,\n isRequiredInputField,\n isUnionType,\n} from './definition.ts';\nimport { GraphQLDeprecatedDirective, isDirective } from './directives.ts';\nimport { isIntrospectionType } from './introspection.ts';\nimport type { GraphQLSchema } from './schema.ts';\nimport { assertSchema } from './schema.ts';\n\n/**\n * Implements the \"Type Validation\" sub-sections of the specification's\n * \"Type System\" section.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the Schema is valid.\n * @param schema - GraphQL schema to use.\n * @returns Schema validation errors, or an empty array when the schema is valid.\n * @example\n * ```ts\n * import { validateSchema } from 'graphql/type';\n * import { buildSchema } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * type Query {\n * name: String\n * }\n * `);\n * const errors = validateSchema(schema);\n *\n * errors; // => []\n * ```\n */\nexport function validateSchema(\n schema: GraphQLSchema,\n): ReadonlyArray<GraphQLError> {\n // First check to ensure the provided value is in fact a GraphQLSchema.\n assertSchema(schema);\n\n // If this Schema has already been validated, return the previous results.\n if (schema.__validationErrors) {\n return schema.__validationErrors;\n }\n\n // Validate the schema, producing a list of errors.\n const context = new SchemaValidationContext(schema);\n validateRootTypes(context);\n validateDirectives(context);\n validateTypes(context);\n\n // Persist the results of validation before returning to ensure validation\n // does not run multiple times for this schema.\n const errors = context.getErrors();\n schema.__validationErrors = errors;\n return errors;\n}\n\n/**\n * Utility function which asserts a schema is valid by throwing an error if\n * it is invalid.\n * @param schema - GraphQL schema to use.\n * @example\n * ```ts\n * import { assertValidSchema } from 'graphql/type';\n * import { buildSchema } from 'graphql/utilities';\n *\n * const schema = buildSchema(`\n * type Query {\n * name: String\n * }\n * `);\n *\n * assertValidSchema(schema); // does not throw\n * ```\n */\nexport function assertValidSchema(schema: GraphQLSchema): void {\n const errors = validateSchema(schema);\n if (errors.length !== 0) {\n throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n }\n}\n\nclass SchemaValidationContext {\n readonly _errors: Array<GraphQLError>;\n readonly schema: GraphQLSchema;\n\n constructor(schema: GraphQLSchema) {\n this._errors = [];\n this.schema = schema;\n }\n\n reportError(\n message: string,\n nodes?: ReadonlyArray<Maybe<ASTNode>> | Maybe<ASTNode>,\n ): void {\n const _nodes = Array.isArray(nodes)\n ? (nodes.filter(Boolean) as ReadonlyArray<ASTNode>)\n : (nodes as Maybe<ASTNode>);\n this._errors.push(new GraphQLError(message, { nodes: _nodes }));\n }\n\n getErrors(): ReadonlyArray<GraphQLError> {\n return this._errors;\n }\n}\n\nfunction validateRootTypes(context: SchemaValidationContext): void {\n const schema = context.schema;\n\n if (schema.getQueryType() == null) {\n context.reportError('Query root type must be provided.', schema.astNode);\n }\n\n const rootTypesMap = new AccumulatorMap<\n GraphQLObjectType,\n OperationTypeNode\n >();\n for (const operationType of Object.values(OperationTypeNode)) {\n const rootType = schema.getRootType(operationType);\n\n if (rootType != null) {\n if (!isObjectType(rootType)) {\n const operationTypeStr = capitalize(operationType);\n const rootTypeStr = inspect(rootType);\n context.reportError(\n operationType === OperationTypeNode.QUERY\n ? `${operationTypeStr} root type must be Object type, it cannot be ${rootTypeStr}.`\n : `${operationTypeStr} root type must be Object type if provided, it cannot be ${rootTypeStr}.`,\n getOperationTypeNode(schema, operationType) ??\n (rootType as any).astNode,\n );\n } else {\n rootTypesMap.add(rootType, operationType);\n }\n }\n }\n\n for (const [rootType, operationTypes] of rootTypesMap) {\n if (operationTypes.length > 1) {\n const operationList = andList(operationTypes);\n context.reportError(\n `All root types must be different, \"${rootType}\" type is used as ${operationList} root types.`,\n operationTypes.map((operationType) =>\n getOperationTypeNode(schema, operationType),\n ),\n );\n }\n }\n}\n\nfunction getOperationTypeNode(\n schema: GraphQLSchema,\n operation: OperationTypeNode,\n): Maybe<ASTNode> {\n return [schema.astNode, ...schema.extensionASTNodes]\n .flatMap((schemaNode) => schemaNode?.operationTypes ?? [])\n .find((operationNode) => operationNode.operation === operation)?.type;\n}\n\nfunction validateDirectives(context: SchemaValidationContext): void {\n for (const directive of context.schema.getDirectives()) {\n // Ensure all directives are in fact GraphQL directives.\n if (!isDirective(directive)) {\n context.reportError(\n `Expected directive but got: ${inspect(directive)}.`,\n (directive as any)?.astNode,\n );\n continue;\n }\n\n // Ensure they are named correctly.\n validateName(context, directive);\n\n if (directive.locations.length === 0) {\n context.reportError(\n `Directive ${directive} must include 1 or more locations.`,\n directive.astNode,\n );\n }\n\n // Ensure the arguments are valid.\n for (const arg of directive.args) {\n // Ensure they are named correctly.\n validateName(context, arg);\n\n // Ensure the type is an input type.\n if (!isInputType(arg.type)) {\n context.reportError(\n `The type of ${arg} must be Input Type ` +\n `but got: ${inspect(arg.type)}.`,\n arg.astNode,\n );\n }\n\n if (isRequiredArgument(arg) && arg.deprecationReason != null) {\n context.reportError(`Required argument ${arg} cannot be deprecated.`, [\n getDeprecatedDirectiveNode(arg.astNode),\n arg.astNode?.type,\n ]);\n }\n\n validateDefaultValue(context, arg);\n }\n }\n}\n\nfunction validateDefaultValue(\n context: SchemaValidationContext,\n inputValue: GraphQLArgument | GraphQLInputField,\n): void {\n const defaultInput = inputValue.default;\n\n if (!defaultInput) {\n return;\n }\n\n const errors: Array<[GraphQLError, ReadonlyArray<string | number>]> = [];\n validateDefaultInput(defaultInput, inputValue.type, (error, path) => {\n errors.push([error, path]);\n });\n\n if (errors.length === 0) {\n return;\n }\n\n if (!defaultInput.literal) {\n // If there were validation errors, check to see if it can be \"uncoerced\"\n // and then correctly validated. If so, report a clear error with a path\n // to resolution.\n try {\n const uncoercedValue = uncoerceDefaultValue(\n defaultInput.value,\n inputValue.type,\n );\n\n const uncoercedErrors = [];\n validateInputValue(uncoercedValue, inputValue.type, (error, path) => {\n uncoercedErrors.push([error, path]);\n });\n\n if (uncoercedErrors.length === 0) {\n context.reportError(\n `${inputValue} has invalid default value: ${inspect(\n defaultInput.value,\n )}. Did you mean: ${inspect(uncoercedValue)}?`,\n inputValue.astNode?.defaultValue,\n );\n return;\n }\n } catch (_error) {\n // ignore\n }\n }\n\n // Otherwise report the original set of errors.\n for (const [error, path] of errors) {\n context.reportError(\n `${inputValue} has invalid default value${printPathArray(path)}: ${\n error.message\n }`,\n error.nodes ?? inputValue.astNode?.defaultValue,\n );\n }\n}\n\n/** @internal */\nexport function validateDefaultInput(\n defaultInput: GraphQLDefaultInput,\n inputType: GraphQLInputType,\n onError: (error: GraphQLError, path: ReadonlyArray<string | number>) => void,\n hideSuggestions?: Maybe<boolean>,\n): void {\n if (defaultInput.literal) {\n validateInputLiteral(\n defaultInput.literal,\n inputType,\n onError,\n undefined,\n undefined,\n hideSuggestions,\n );\n return;\n }\n validateInputValue(defaultInput.value, inputType, onError, hideSuggestions);\n}\n\n/**\n * Historically GraphQL.js allowed default values to be provided as\n * assumed-coerced \"internal\" values, however default values should be provided\n * as \"external\" pre-coerced values. `uncoerceDefaultValue()` will convert such\n * \"internal\" values to \"external\" values to display as part of validation.\n *\n * This performs the \"opposite\" of `coerceInputValue()`. Given an \"internal\"\n * coerced value, reverse the process to provide an \"external\" uncoerced value.\n *\n * @internal\n */\nfunction uncoerceDefaultValue(value: unknown, type: GraphQLInputType): unknown {\n if (isNonNullType(type)) {\n return uncoerceDefaultValue(value, type.ofType);\n }\n\n if (value === null) {\n return null;\n }\n\n if (isListType(type)) {\n if (isIterableObject(value)) {\n return Array.from(value, (itemValue) =>\n uncoerceDefaultValue(itemValue, type.ofType),\n );\n }\n return [uncoerceDefaultValue(value, type.ofType)];\n }\n\n if (isInputObjectType(type)) {\n invariant(isObjectLike(value));\n const fieldDefs = type.getFields();\n return mapValue(value, (fieldValue, fieldName) => {\n invariant(fieldName in fieldDefs);\n return uncoerceDefaultValue(fieldValue, fieldDefs[fieldName].type);\n });\n }\n\n assertLeafType(type);\n\n // For most leaf types (Scalars, Enums), output value coercion (\"serialize\") is\n // the inverse of input coercion (\"parseValue\") and will produce an\n // \"external\" value. Historically, this method was also used as part of the\n // now-deprecated \"astFromValue\" to perform the same behavior.\n return type.coerceOutputValue(value);\n}\n\nfunction validateName(\n context: SchemaValidationContext,\n node: { readonly name: string; readonly astNode: Maybe<ASTNode> },\n): void {\n // Ensure names are valid, however introspection types opt out.\n if (node.name.startsWith('__')) {\n context.reportError(\n `Name \"${node.name}\" must not begin with \"__\", which is reserved by GraphQL introspection.`,\n node.astNode,\n );\n }\n}\n\nfunction validateTypes(context: SchemaValidationContext): void {\n const validateInputObjectDefaultValueCircularRefs =\n createInputObjectDefaultValueCircularRefsValidator(context);\n const typeMap = context.schema.getTypeMap();\n const finiteValueStates = new Map<\n GraphQLInputObjectType,\n InputObjectFiniteValueState\n >();\n\n for (const type of Object.values(typeMap)) {\n // Ensure all provided types are in fact GraphQL type.\n if (!isNamedType(type)) {\n context.reportError(\n `Expected GraphQL named type but got: ${inspect(type)}.`,\n (type as any).astNode,\n );\n continue;\n }\n\n // Ensure it is named correctly (excluding introspection types).\n if (!isIntrospectionType(type)) {\n validateName(context, type);\n }\n\n if (isObjectType(type)) {\n // Ensure fields are valid\n validateFields(context, type);\n\n // Ensure objects implement the interfaces they claim to.\n validateInterfaces(context, type);\n } else if (isInterfaceType(type)) {\n // Ensure fields are valid.\n validateFields(context, type);\n\n // Ensure interfaces implement the interfaces they claim to.\n validateInterfaces(context, type);\n } else if (isUnionType(type)) {\n // Ensure Unions include valid member types.\n validateUnionMembers(context, type);\n } else if (isEnumType(type)) {\n // Ensure Enums have valid values.\n validateEnumValues(context, type);\n } else if (isInputObjectType(type)) {\n // Ensure Input Object fields are valid.\n validateInputFields(context, type);\n\n initializeInputObjectFiniteValueState(type);\n\n // Ensure Input Objects do not contain invalid default value circular references.\n validateInputObjectDefaultValueCircularRefs(type);\n }\n }\n\n detectInputObjectNonFiniteValues(context, finiteValueStates);\n\n function initializeInputObjectFiniteValueState(\n inputObj: GraphQLInputObjectType,\n ): void {\n finiteValueStates.set(inputObj, {\n inputObj,\n targets: [],\n dependents: [],\n unresolvedTargetCount: 0,\n hasFiniteValue: false,\n });\n }\n}\n\nfunction validateFields(\n context: SchemaValidationContext,\n type: GraphQLObjectType | GraphQLInterfaceType,\n): void {\n const fields = Object.values(type.getFields());\n\n // Objects and Interfaces both must define one or more fields.\n if (fields.length === 0) {\n context.reportError(`Type ${type} must define one or more fields.`, [\n type.astNode,\n ...type.extensionASTNodes,\n ]);\n }\n\n for (const field of fields) {\n // Ensure they are named correctly.\n validateName(context, field);\n\n // Ensure the type is an output type\n if (!isOutputType(field.type)) {\n context.reportError(\n `The type of ${field} must be Output Type ` +\n `but got: ${inspect(field.type)}.`,\n field.astNode?.type,\n );\n }\n\n // Ensure the arguments are valid\n for (const arg of field.args) {\n // Ensure they are named correctly.\n validateName(context, arg);\n\n // Ensure the type is an input type\n if (!isInputType(arg.type)) {\n context.reportError(\n `The type of ${arg} must be Input Type but got: ${inspect(arg.type)}.`,\n arg.astNode?.type,\n );\n }\n\n if (isRequiredArgument(arg) && arg.deprecationReason != null) {\n context.reportError(`Required argument ${arg} cannot be deprecated.`, [\n getDeprecatedDirectiveNode(arg.astNode),\n arg.astNode?.type,\n ]);\n }\n\n validateDefaultValue(context, arg);\n }\n }\n}\n\nfunction validateInterfaces(\n context: SchemaValidationContext,\n type: GraphQLObjectType | GraphQLInterfaceType,\n): void {\n const ifaceTypeNames = new Set<string>();\n for (const iface of type.getInterfaces()) {\n if (!isInterfaceType(iface)) {\n context.reportError(\n `Type ${type} must only implement Interface types, ` +\n `it cannot implement ${inspect(iface)}.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n if (type === iface) {\n context.reportError(\n `Type ${type} cannot implement itself because it would create a circular reference.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n if (ifaceTypeNames.has(iface.name)) {\n context.reportError(\n `Type ${type} can only implement ${iface} once.`,\n getAllImplementsInterfaceNodes(type, iface),\n );\n continue;\n }\n\n ifaceTypeNames.add(iface.name);\n\n validateTypeImplementsAncestors(context, type, iface);\n validateTypeImplementsInterface(context, type, iface);\n }\n}\n\nfunction validateTypeImplementsInterface(\n context: SchemaValidationContext,\n type: GraphQLObjectType | GraphQLInterfaceType,\n iface: GraphQLInterfaceType,\n): void {\n const typeFieldMap = type.getFields();\n\n // Assert each interface field is implemented.\n for (const ifaceField of Object.values(iface.getFields())) {\n const typeField = typeFieldMap[ifaceField.name];\n\n // Assert interface field exists on type.\n if (typeField == null) {\n context.reportError(\n `Interface field ${ifaceField} expected but ${type} does not provide it.`,\n [ifaceField.astNode, type.astNode, ...type.extensionASTNodes],\n );\n continue;\n }\n\n // Assert interface field type is satisfied by type field type, by being\n // a valid subtype. (covariant)\n if (!isTypeSubTypeOf(context.schema, typeField.type, ifaceField.type)) {\n context.reportError(\n `Interface field ${ifaceField} expects type ${ifaceField.type} ` +\n `but ${typeField} is type ${typeField.type}.`,\n [ifaceField.astNode?.type, typeField.astNode?.type],\n );\n }\n\n // Assert each interface field arg is implemented.\n for (const ifaceArg of ifaceField.args) {\n const typeArg = typeField.args.find((arg) => arg.name === ifaceArg.name);\n\n // Assert interface field arg exists on object field.\n if (!typeArg) {\n context.reportError(\n `Interface field argument ${ifaceArg} expected but ${typeField} does not provide it.`,\n [ifaceArg.astNode, typeField.astNode],\n );\n continue;\n }\n\n // Assert interface field arg type matches object field arg type.\n // (invariant)\n // TODO: change to contravariant?\n if (!isEqualType(ifaceArg.type, typeArg.type)) {\n context.reportError(\n `Interface field argument ${ifaceArg} expects type ${ifaceArg.type} ` +\n `but ${typeArg} is type ${typeArg.type}.`,\n [ifaceArg.astNode?.type, typeArg.astNode?.type],\n );\n }\n }\n\n // Assert additional arguments must not be required.\n for (const typeArg of typeField.args) {\n if (isRequiredArgument(typeArg)) {\n const ifaceArg = ifaceField.args.find(\n (arg) => arg.name === typeArg.name,\n );\n if (!ifaceArg) {\n context.reportError(\n `Argument \"${typeArg}\" must not be required type \"${typeArg.type}\" ` +\n `if not provided by the Interface field \"${ifaceField}\".`,\n [typeArg.astNode, ifaceField.astNode],\n );\n }\n }\n }\n\n // Asserts that field is not deprecated unless interface field is\n if (\n typeField.deprecationReason != null &&\n ifaceField.deprecationReason == null\n ) {\n context.reportError(\n `Interface field ${iface.name}.${ifaceField.name} is not deprecated, so ` +\n `implementation field ${type.name}.${typeField.name} must not be deprecated.`,\n [\n getDeprecatedDirectiveNode(typeField.astNode),\n typeField.astNode?.type,\n ],\n );\n }\n }\n}\n\nfunction validateTypeImplementsAncestors(\n context: SchemaValidationContext,\n type: GraphQLObjectType | GraphQLInterfaceType,\n iface: GraphQLInterfaceType,\n): void {\n const ifaceInterfaces = type.getInterfaces();\n for (const transitive of iface.getInterfaces()) {\n if (!ifaceInterfaces.includes(transitive)) {\n context.reportError(\n transitive === type\n ? `Type ${type} cannot implement ${iface} because it would create a circular reference.`\n : `Type ${type} must implement ${transitive} because it is implemented by ${iface}.`,\n [\n ...getAllImplementsInterfaceNodes(iface, transitive),\n ...getAllImplementsInterfaceNodes(type, iface),\n ],\n );\n }\n }\n}\n\nfunction validateUnionMembers(\n context: SchemaValidationContext,\n union: GraphQLUnionType,\n): void {\n const memberTypes = union.getTypes();\n\n if (memberTypes.length === 0) {\n context.reportError(\n `Union type ${union} must define one or more member types.`,\n [union.astNode, ...union.extensionASTNodes],\n );\n }\n\n const includedTypeNames = new Set<string>();\n for (const memberType of memberTypes) {\n if (includedTypeNames.has(memberType.name)) {\n context.reportError(\n `Union type ${union} can only include type ${memberType} once.`,\n getUnionMemberTypeNodes(union, memberType.name),\n );\n continue;\n }\n includedTypeNames.add(memberType.name);\n if (!isObjectType(memberType)) {\n context.reportError(\n `Union type ${union} can only include Object types, ` +\n `it cannot include ${inspect(memberType)}.`,\n getUnionMemberTypeNodes(union, String(memberType)),\n );\n }\n }\n}\n\nfunction validateEnumValues(\n context: SchemaValidationContext,\n enumType: GraphQLEnumType,\n): void {\n const enumValues = enumType.getValues();\n\n if (enumValues.length === 0) {\n context.reportError(\n `Enum type ${enumType} must define one or more values.`,\n [enumType.astNode, ...enumType.extensionASTNodes],\n );\n }\n\n for (const enumValue of enumValues) {\n // Ensure valid name.\n validateName(context, enumValue);\n }\n}\n\nfunction validateInputFields(\n context: SchemaValidationContext,\n inputObj: GraphQLInputObjectType,\n): void {\n const fields = Object.values(inputObj.getFields());\n\n if (fields.length === 0) {\n context.reportError(\n `Input Object type ${inputObj} must define one or more fields.`,\n [inputObj.astNode, ...inputObj.extensionASTNodes],\n );\n }\n\n // Ensure the input fields are valid\n for (const field of fields) {\n // Ensure they are named correctly.\n validateName(context, field);\n\n // Ensure the type is an input type\n if (!isInputType(field.type)) {\n context.reportError(\n `The type of ${field} must be Input Type ` +\n `but got: ${inspect(field.type)}.`,\n field.astNode?.type,\n );\n }\n\n if (isRequiredInputField(field) && field.deprecationReason != null) {\n context.reportError(\n `Required input field ${field} cannot be deprecated.`,\n [getDeprecatedDirectiveNode(field.astNode), field.astNode?.type],\n );\n }\n\n validateDefaultValue(context, field);\n\n if (inputObj.isOneOf) {\n validateOneOfInputObjectField(inputObj, field, context);\n }\n }\n}\n\nfunction validateOneOfInputObjectField(\n type: GraphQLInputObjectType,\n field: GraphQLInputField,\n context: SchemaValidationContext,\n): void {\n if (isNonNullType(field.type)) {\n context.reportError(\n `OneOf input field ${type}.${field.name} must be nullable.`,\n field.astNode?.type,\n );\n }\n\n if (field.default !== undefined || field.defaultValue !== undefined) {\n context.reportError(\n `OneOf input field ${type}.${field.name} cannot have a default value.`,\n field.astNode,\n );\n }\n}\n\ninterface InputObjectFiniteValueTarget {\n field: GraphQLInputField;\n target: GraphQLInputObjectType;\n}\n\ninterface InputObjectFiniteValueState {\n inputObj: GraphQLInputObjectType;\n targets: Array<InputObjectFiniteValueTarget>;\n dependents: Array<InputObjectFiniteValueState>;\n unresolvedTargetCount: number;\n hasFiniteValue: boolean;\n}\n\n// Implements the spec's InputObjectHasUnbreakableCycle algorithm for all Input\n// Objects in one pass by propagating known breakable types through reverse edges.\nfunction detectInputObjectNonFiniteValues(\n context: SchemaValidationContext,\n finiteValueStates: ReadonlyMap<\n GraphQLInputObjectType,\n InputObjectFiniteValueState\n >,\n): void {\n const inputObjectsWithFiniteValues: Array<InputObjectFiniteValueState> = [];\n\n for (const state of finiteValueStates.values()) {\n const inputObj = state.inputObj;\n const fields = Object.values(inputObj.getFields());\n\n for (const field of fields) {\n const target = getFiniteValueTarget(inputObj, field.type);\n if (target === undefined) {\n continue;\n }\n\n state.targets.push({ field, target });\n const targetState = finiteValueStates.get(target);\n if (targetState !== undefined) {\n targetState.dependents.push(state);\n }\n }\n\n if (inputObj.isOneOf) {\n // OneOf Input Objects have an unbreakable cycle if every field leads to an unbreakable cycle.\n if (fields.length === 0 || state.targets.length < fields.length) {\n markInputObjectHasFiniteValue(state);\n }\n } else {\n // Non-OneOf Input Objects have an unbreakable cycle if any non-null field has one.\n state.unresolvedTargetCount = state.targets.length;\n if (state.targets.length === 0) {\n markInputObjectHasFiniteValue(state);\n }\n }\n }\n\n let nextFiniteValueState: InputObjectFiniteValueState | undefined;\n while (\n (nextFiniteValueState = inputObjectsWithFiniteValues.pop()) !== undefined\n ) {\n for (const dependentState of nextFiniteValueState.dependents) {\n if (dependentState.hasFiniteValue) {\n continue;\n }\n\n if (dependentState.inputObj.isOneOf) {\n markInputObjectHasFiniteValue(dependentState);\n continue;\n }\n\n --dependentState.unresolvedTargetCount;\n if (dependentState.unresolvedTargetCount === 0) {\n markInputObjectHasFiniteValue(dependentState);\n }\n }\n }\n\n // Tracks already visited types to ensure that cycles are not redundantly\n // reported.\n const visit