From d62ae9455e934d786e92e97513d362ff83fce12e Mon Sep 17 00:00:00 2001 From: Fela Maslen Date: Fri, 5 Jul 2024 11:17:01 +0100 Subject: [PATCH 1/2] fix: deduplicate fragments when generating persisted document hash --- packages/graphqlsp/src/persisted.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/graphqlsp/src/persisted.ts b/packages/graphqlsp/src/persisted.ts index c9ba706..e262918 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); From ef3f3c101757c4ce12b010d746bae4632bdb4e14 Mon Sep 17 00:00:00 2001 From: Fela Maslen Date: Fri, 5 Jul 2024 11:29:55 +0100 Subject: [PATCH 2/2] chore: changeset --- .changeset/stale-plums-prove.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/stale-plums-prove.md diff --git a/.changeset/stale-plums-prove.md b/.changeset/stale-plums-prove.md new file mode 100644 index 0000000..c4a94f1 --- /dev/null +++ b/.changeset/stale-plums-prove.md @@ -0,0 +1,5 @@ +--- +'@0no-co/graphqlsp': patch +--- + +Fixed duplicate fragments in persisted document hash generator