From a813fc3d85db97f52f3798546509708f29d7968f Mon Sep 17 00:00:00 2001 From: jdecroock Date: Wed, 4 Sep 2024 08:16:06 +0200 Subject: [PATCH] Strip the _unmask directive from fragments during PO generation --- .changeset/friendly-dolls-lick.md | 5 +++++ .../src/commands/generate-persisted/thread.ts | 19 +++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 .changeset/friendly-dolls-lick.md diff --git a/.changeset/friendly-dolls-lick.md b/.changeset/friendly-dolls-lick.md new file mode 100644 index 00000000..c1c60792 --- /dev/null +++ b/.changeset/friendly-dolls-lick.md @@ -0,0 +1,5 @@ +--- +"@gql.tada/cli-utils": patch +--- + +Strip our internal `@_unmask` directive from fragment-definitions during persisted-operations generation diff --git a/packages/cli-utils/src/commands/generate-persisted/thread.ts b/packages/cli-utils/src/commands/generate-persisted/thread.ts index dcf67fdb..92c407b7 100644 --- a/packages/cli-utils/src/commands/generate-persisted/thread.ts +++ b/packages/cli-utils/src/commands/generate-persisted/thread.ts @@ -1,5 +1,5 @@ import ts from 'typescript'; -import { parse, print } from '@0no-co/graphql.web'; +import { Kind, parse, print } from '@0no-co/graphql.web'; import type { FragmentDefinitionNode } from '@0no-co/graphql.web'; import type { GraphQLSPConfig } from '@gql.tada/internal'; @@ -156,7 +156,14 @@ async function* _runPersisted(params: PersistedParams): AsyncIterableIterator(); + for (const definition of parsed.definitions) { + if (definition.kind === Kind.FRAGMENT_DEFINITION && !seen.has(definition)) { + stripUnmaskDirectivesFromDefinition(definition); + } + } + document = print(parsed); } catch (_error) { warnings.push({ message: @@ -172,6 +179,7 @@ async function* _runPersisted(params: PersistedParams): AsyncIterableIterator = { -readonly [K in keyof T]: T[K] }; + +const stripUnmaskDirectivesFromDefinition = (definition: FragmentDefinitionNode) => { + (definition as writable).directives = definition.directives?.filter( + (directive) => directive.name.value !== '_unmask' + ); +};