Skip to content

Commit cb6abca

Browse files
authored
validation: improve perf of OverlappingFieldsCanBeMerged (#4520)
This PR changes skips allocating a new empty array for fields without directives and modifies the incremental delivery `hasNoOverlappingStreams` code accordingly. <img width="727" height="132" alt="image" src="https://github.com/user-attachments/assets/68680ab4-0fdc-430f-9e9a-68f275f85b22" />
1 parent a01f596 commit cb6abca

1 file changed

Lines changed: 6 additions & 6 deletions

File tree

src/validation/rules/OverlappingFieldsCanBeMergedRule.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -705,8 +705,8 @@ function findConflict(
705705
}
706706
}
707707

708-
const directives1 = node1.directives ?? [];
709-
const directives2 = node2.directives ?? [];
708+
const directives1 = node1.directives;
709+
const directives2 = node2.directives;
710710
const overlappingStreamReason = hasNoOverlappingStreams(
711711
directives1,
712712
varMap1,
@@ -827,15 +827,15 @@ function stringifyValue(value: ValueNode): string | null {
827827
}
828828

829829
function getStreamDirective(
830-
directives: ReadonlyArray<DirectiveNode>,
830+
directives: ReadonlyArray<DirectiveNode> | undefined,
831831
): DirectiveNode | undefined {
832-
return directives.find((directive) => directive.name.value === 'stream');
832+
return directives?.find((directive) => directive.name.value === 'stream');
833833
}
834834

835835
function hasNoOverlappingStreams(
836-
directives1: ReadonlyArray<DirectiveNode>,
836+
directives1: ReadonlyArray<DirectiveNode> | undefined,
837837
varMap1: Map<string, ValueNode> | undefined,
838-
directives2: ReadonlyArray<DirectiveNode>,
838+
directives2: ReadonlyArray<DirectiveNode> | undefined,
839839
varMap2: Map<string, ValueNode> | undefined,
840840
): string | undefined {
841841
const stream1 = getStreamDirective(directives1);

0 commit comments

Comments
 (0)