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' + ); +};