Skip to content

Commit

Permalink
refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
danadajian committed Apr 28, 2024
1 parent b651de7 commit 232af61
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 20 deletions.
6 changes: 3 additions & 3 deletions src/definitions/object.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,12 +94,12 @@ function getDataClassMembers({
const typeMetadata = buildTypeMetadata(fieldNode.type, schema, config);
const shouldOverrideField =
!completableFuture &&
node.interfaces?.some((i) => {
const typeNode = schema.getType(i.name.value);
node.interfaces?.some((interfaceNode) => {
const typeNode = schema.getType(interfaceNode.name.value);
return (
isInterfaceType(typeNode) &&
typeNode.astNode?.fields?.some(
(f) => f.name.value === fieldNode.name.value,
(field) => field.name.value === fieldNode.name.value,
)
);
});
Expand Down
2 changes: 1 addition & 1 deletion src/helpers/dependent-type-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ function getFieldTypeName(fieldType: TypeNode) {

export function getDependentInterfaceNames(node: TypeDefinitionNode) {
return node.kind === Kind.OBJECT_TYPE_DEFINITION
? node.interfaces?.map((i) => i.name.value) ?? []
? node.interfaces?.map((interfaceNode) => interfaceNode.name.value) ?? []
: [];
}

Expand Down
33 changes: 17 additions & 16 deletions src/helpers/input-type-has-matching-output-type.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
import { Kind } from "graphql/index";
import { GraphQLSchema, InputObjectTypeDefinitionNode } from "graphql";
import {
GraphQLSchema,
InputObjectTypeDefinitionNode,
isInputObjectType,
isObjectType,
} from "graphql";
import { getBaseTypeNode } from "@graphql-codegen/visitor-plugin-common";

export function inputTypeHasMatchingOutputType(
Expand All @@ -24,27 +28,24 @@ function typesAreEquivalent(
inputName: string,
schema: GraphQLSchema,
): boolean {
const typeNode = schema.getType(typeName)?.astNode;
const inputNode = schema.getType(inputName)?.astNode;
if (!typeNode && !inputNode) {
const typeNode = schema.getType(typeName);
const inputNode = schema.getType(inputName);
if (!typeNode?.astNode && !inputNode?.astNode) {
return true;
}
if (
typeNode?.kind !== Kind.OBJECT_TYPE_DEFINITION ||
inputNode?.kind !== Kind.INPUT_OBJECT_TYPE_DEFINITION
!isObjectType(typeNode) ||
!isInputObjectType(inputNode) ||
!typeNode.astNode?.fields ||
!inputNode.astNode?.fields ||
typeNode.astNode.fields.length !== inputNode.astNode.fields.length
) {
return false;
}
if (
!typeNode.fields ||
!inputNode.fields ||
typeNode.fields.length !== inputNode.fields.length
) {
return false;
}
return typeNode.fields.every((typeField) => {

return typeNode.astNode.fields.every((typeField) => {
const baseTypeName = getBaseTypeNode(typeField.type).name.value;
const matchingInputField = inputNode.fields?.find(
const matchingInputField = inputNode.astNode?.fields?.find(
(inputField) => inputField.name.value === typeField.name.value,
);
if (!matchingInputField?.type) return false;
Expand Down

0 comments on commit 232af61

Please sign in to comment.