From 5ee4947bd6ea883df69f2dbf0c573d1b5ea54267 Mon Sep 17 00:00:00 2001 From: Lesley Dreyer Date: Mon, 29 Apr 2024 14:33:42 -0700 Subject: [PATCH] add changeset for previous PR 5973 --- .changeset/weak-bears-move.md | 5 +++++ packages/merge/src/typedefs-mergers/merge-nodes.ts | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 .changeset/weak-bears-move.md diff --git a/.changeset/weak-bears-move.md b/.changeset/weak-bears-move.md new file mode 100644 index 00000000000..70694411641 --- /dev/null +++ b/.changeset/weak-bears-move.md @@ -0,0 +1,5 @@ +--- +"@graphql-tools/merge": patch +--- + +Fix directive merging when directive name is inherited from object prototype (i.e. toString) diff --git a/packages/merge/src/typedefs-mergers/merge-nodes.ts b/packages/merge/src/typedefs-mergers/merge-nodes.ts index 56eab73b03f..36317469438 100644 --- a/packages/merge/src/typedefs-mergers/merge-nodes.ts +++ b/packages/merge/src/typedefs-mergers/merge-nodes.ts @@ -106,14 +106,17 @@ export function mergeGraphQLNodes( break; case Kind.DIRECTIVE_DEFINITION: if (mergedResultMap[name]) { - const isInheritedFromPrototype = name in {}; + const isInheritedFromPrototype = name in {}; // i.e. toString if (isInheritedFromPrototype) { if (!isNode(mergedResultMap[name])) { mergedResultMap[name] = undefined as any; } } } - mergedResultMap[name] = mergeDirective(nodeDefinition, mergedResultMap[name] as any); + mergedResultMap[name] = mergeDirective( + nodeDefinition, + mergedResultMap[name] as DirectiveDefinitionNode, + ); break; } }