diff --git a/.changeset/stale-plums-prove.md b/.changeset/stale-plums-prove.md new file mode 100644 index 00000000..c4a94f1f --- /dev/null +++ b/.changeset/stale-plums-prove.md @@ -0,0 +1,5 @@ +--- +'@0no-co/graphqlsp': patch +--- + +Fixed duplicate fragments in persisted document hash generator diff --git a/packages/graphqlsp/src/persisted.ts b/packages/graphqlsp/src/persisted.ts index c9ba706f..e2629185 100644 --- a/packages/graphqlsp/src/persisted.ts +++ b/packages/graphqlsp/src/persisted.ts @@ -183,12 +183,15 @@ export const generateHashForDocument = ( foundFilename, info ).combinedText; - fragments.forEach(fragmentDefinition => { - text = `${text}\n\n${print(fragmentDefinition)}`; + const deduplicatedFragments = fragments + .map(fragment => print(fragment)) + .filter((fragment, index, array) => array.indexOf(fragment) === index); + + deduplicatedFragments.forEach(fragmentDefinition => { + text = `${text}\n\n${fragmentDefinition}`; }); - return createHash('sha256') - .update(print(parse(text))) - .digest('hex'); + const fullText = print(parse(text)); + return createHash('sha256').update(fullText).digest('hex'); } else { const externalSource = getSource(info, foundFilename)!; const { fragments } = findAllCallExpressions(externalSource, info);