# `known-directives`

✅ The `"extends": "plugin:@graphql-eslint/schema-recommended"` and `"plugin:@graphql-eslint/operations-recommended"` property in a configuration file enables this rule.

- Category: `Schema & Operations`
- Rule name: `@graphql-eslint/known-directives`
- Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
- Requires GraphQL Operations: `false` [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)

A GraphQL document is only valid if all `@directive`s are known by the schema and legally positioned.

> This rule is a wrapper around a `graphql-js` validation function.

## Usage Examples

### Valid

```graphql
# eslint @graphql-eslint/known-directives: ['error', { ignoreClientDirectives: ['client'] }]

{
  product {
    someClientField @client
  }
}
```

## Config Schema

The schema defines the following properties:

### `ignoreClientDirectives` (array, required)

The object is an array with all elements of the type `string`.

Additional restrictions:

* Minimum items: `1`
* Unique items: `true`

## Resources

- [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/KnownDirectivesRule.ts)
- [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/KnownDirectivesRule-test.ts)
