Skip to content

Commit 5593891

Browse files
authored
fix(known-directives): support ignoreClientDirectives for OperationDefinition (#1080)
1 parent 25049cb commit 5593891

File tree

3 files changed

+22
-6
lines changed

3 files changed

+22
-6
lines changed

.changeset/young-stingrays-invite.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@graphql-eslint/eslint-plugin': patch
3+
---
4+
5+
fix(known-directives): support `ignoreClientDirectives` for `OperationDefinition`

packages/plugin/src/rules/graphql-js-validation.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
validate,
1111
ASTVisitor,
1212
ExecutableDefinitionNode,
13+
DirectiveNode,
1314
} from 'graphql';
1415
import { validateSDL } from 'graphql/validation/validate';
1516
import type { GraphQLESLintRule, GraphQLESLintRuleContext } from '../types';
@@ -231,13 +232,15 @@ export const GRAPHQL_JS_VALIDATIONS: Record<string, GraphQLESLintRule> = Object.
231232
if (ignoreClientDirectives.length === 0) {
232233
return documentNode;
233234
}
235+
236+
const filterDirectives = (node: { directives?: ReadonlyArray<DirectiveNode> }) => ({
237+
...node,
238+
directives: node.directives.filter(directive => !ignoreClientDirectives.includes(directive.name.value)),
239+
});
240+
234241
return visit(documentNode, {
235-
Field(node) {
236-
return {
237-
...node,
238-
directives: node.directives.filter(directive => !ignoreClientDirectives.includes(directive.name.value)),
239-
};
240-
},
242+
Field: filterDirectives,
243+
OperationDefinition: filterDirectives,
241244
});
242245
},
243246
{

packages/plugin/tests/known-directives.spec.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,14 @@ ruleTester.runGraphQLTests<[{ ignoreClientDirectives: string[] }]>('known-direct
3434
`,
3535
options: [{ ignoreClientDirectives: ['rest'] }],
3636
},
37+
{
38+
code: /* GraphQL */ `
39+
query @api {
40+
test
41+
}
42+
`,
43+
options: [{ ignoreClientDirectives: ['api'] }],
44+
},
3745
],
3846
invalid: [
3947
{

0 commit comments

Comments
 (0)