Skip to content

Commit

Permalink
fix nested persisted operation resolution
Browse files Browse the repository at this point in the history
  • Loading branch information
JoviDeCroock committed Jun 7, 2024
1 parent adfa3ce commit e68cd45
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 3 deletions.
5 changes: 5 additions & 0 deletions .changeset/fifty-mangos-doubt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@0no-co/graphqlsp': patch
---

Fix nested fragment resolution during persisted traversal
19 changes: 16 additions & 3 deletions packages/graphqlsp/src/persisted.ts
Original file line number Diff line number Diff line change
Expand Up @@ -166,16 +166,22 @@ export const generateHashForDocument = (
foundFilename,
info
).combinedText;

const parsed = parse(text);
const spreads = new Set();
const spreads = new Set<string>();
visit(parsed, {
FragmentSpread: node => {
spreads.add(node.name.value);
},
});

let resolvedText = text;
[...spreads].forEach(spreadName => {
const visited = new Set();
const traversedSpreads = [...spreads];

let spreadName: string | undefined;
while ((spreadName = traversedSpreads.shift())) {
visited.add(spreadName);
const fragmentDefinition = fragments.find(x => x.name.value === spreadName);
if (!fragmentDefinition) {
info.project.projectService.logger.info(
Expand All @@ -184,8 +190,15 @@ export const generateHashForDocument = (
return;
}

visit(fragmentDefinition, {
FragmentSpread: node => {
if (!visited.has(node.name.value))
traversedSpreads.push(node.name.value);
},
});

resolvedText = `${resolvedText}\n\n${print(fragmentDefinition)}`;
});
}

return createHash('sha256').update(resolvedText).digest('hex');
};
Expand Down

0 comments on commit e68cd45

Please sign in to comment.