@graphql-eslint/eslint-plugin 3.14.4-alpha-20230111221804-f30b422 → 3.14.4-alpha-20230111225020-02d9c28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -288
- package/cjs/documents.js +2 -105
- package/cjs/graphql-config.js +1 -1
- package/cjs/parser.js +9 -3
- package/cjs/rules/alphabetize.js +1 -1
- package/cjs/rules/description-style.js +1 -1
- package/cjs/rules/graphql-js-validation.js +1 -1
- package/cjs/rules/input-name.js +4 -4
- package/cjs/rules/lone-executable-definition.js +1 -1
- package/cjs/rules/match-document-filename.js +2 -3
- package/cjs/rules/naming-convention.js +1 -1
- package/cjs/rules/no-anonymous-operations.js +1 -1
- package/cjs/rules/no-case-insensitive-enum-values-duplicates.js +1 -1
- package/cjs/rules/no-deprecated.js +1 -1
- package/cjs/rules/no-duplicate-fields.js +1 -1
- package/cjs/rules/no-hashtag-description.js +1 -1
- package/cjs/rules/no-one-place-fragments.js +1 -1
- package/cjs/rules/no-root-type.js +1 -1
- package/cjs/rules/no-scalar-result-type-on-mutation.js +1 -1
- package/cjs/rules/no-typename-prefix.js +1 -1
- package/cjs/rules/no-unreachable-types.js +1 -1
- package/cjs/rules/no-unused-fields.js +1 -1
- package/cjs/rules/relay-arguments.js +4 -4
- package/cjs/rules/relay-connection-types.js +1 -1
- package/cjs/rules/relay-edge-types.js +1 -1
- package/cjs/rules/relay-page-info.js +1 -1
- package/cjs/rules/require-deprecation-date.js +1 -1
- package/cjs/rules/require-deprecation-reason.js +1 -1
- package/cjs/rules/require-description.js +1 -1
- package/cjs/rules/require-field-of-type-query-in-mutation-result.js +1 -1
- package/cjs/rules/require-id-when-available.js +1 -1
- package/cjs/rules/require-nullable-fields-with-oneof.js +1 -1
- package/cjs/rules/require-type-pattern-with-oneof.js +1 -1
- package/cjs/rules/selection-set-depth.js +1 -1
- package/cjs/rules/strict-id-in-types.js +1 -1
- package/cjs/rules/unique-fragment-name.js +1 -1
- package/cjs/rules/unique-operation-name.js +1 -1
- package/cjs/siblings.js +113 -0
- package/cjs/utils.js +3 -2
- package/docs/README.md +1 -85
- package/docs/custom-rules.md +1 -184
- package/docs/deprecated-rules.md +1 -24
- package/docs/parser-options.md +1 -107
- package/docs/parser.md +1 -67
- package/esm/documents.js +2 -105
- package/esm/graphql-config.js +1 -1
- package/esm/parser.js +10 -4
- package/esm/rules/alphabetize.js +1 -1
- package/esm/rules/description-style.js +1 -1
- package/esm/rules/graphql-js-validation.js +1 -1
- package/esm/rules/input-name.js +4 -4
- package/esm/rules/lone-executable-definition.js +1 -1
- package/esm/rules/match-document-filename.js +3 -4
- package/esm/rules/naming-convention.js +1 -1
- package/esm/rules/no-anonymous-operations.js +1 -1
- package/esm/rules/no-case-insensitive-enum-values-duplicates.js +1 -1
- package/esm/rules/no-deprecated.js +1 -1
- package/esm/rules/no-duplicate-fields.js +1 -1
- package/esm/rules/no-hashtag-description.js +1 -1
- package/esm/rules/no-one-place-fragments.js +1 -1
- package/esm/rules/no-root-type.js +1 -1
- package/esm/rules/no-scalar-result-type-on-mutation.js +1 -1
- package/esm/rules/no-typename-prefix.js +1 -1
- package/esm/rules/no-unreachable-types.js +1 -1
- package/esm/rules/no-unused-fields.js +1 -1
- package/esm/rules/relay-arguments.js +4 -4
- package/esm/rules/relay-connection-types.js +1 -1
- package/esm/rules/relay-edge-types.js +1 -1
- package/esm/rules/relay-page-info.js +1 -1
- package/esm/rules/require-deprecation-date.js +1 -1
- package/esm/rules/require-deprecation-reason.js +1 -1
- package/esm/rules/require-description.js +1 -1
- package/esm/rules/require-field-of-type-query-in-mutation-result.js +1 -1
- package/esm/rules/require-id-when-available.js +1 -1
- package/esm/rules/require-nullable-fields-with-oneof.js +1 -1
- package/esm/rules/require-type-pattern-with-oneof.js +1 -1
- package/esm/rules/selection-set-depth.js +1 -1
- package/esm/rules/strict-id-in-types.js +1 -1
- package/esm/rules/unique-fragment-name.js +1 -1
- package/esm/rules/unique-operation-name.js +1 -1
- package/esm/siblings.js +109 -0
- package/esm/utils.js +2 -1
- package/package.json +1 -1
- package/typings/documents.d.cts +2 -20
- package/typings/documents.d.ts +2 -20
- package/typings/rules/input-name.d.cts +1 -1
- package/typings/rules/input-name.d.ts +1 -1
- package/typings/siblings.d.cts +22 -0
- package/typings/siblings.d.ts +22 -0
- package/typings/types.d.cts +3 -2
- package/typings/types.d.ts +3 -2
- package/typings/utils.d.cts +2 -1
- package/typings/utils.d.ts +2 -1
- package/docs/rules/alphabetize.md +0 -194
- package/docs/rules/description-style.md +0 -57
- package/docs/rules/executable-definitions.md +0 -20
- package/docs/rules/fields-on-correct-type.md +0 -23
- package/docs/rules/fragments-on-composite-type.md +0 -20
- package/docs/rules/input-name.md +0 -80
- package/docs/rules/known-argument-names.md +0 -23
- package/docs/rules/known-directives.md +0 -48
- package/docs/rules/known-fragment-names.md +0 -72
- package/docs/rules/known-type-names.md +0 -24
- package/docs/rules/lone-anonymous-operation.md +0 -20
- package/docs/rules/lone-executable-definition.md +0 -59
- package/docs/rules/lone-schema-definition.md +0 -19
- package/docs/rules/match-document-filename.md +0 -181
- package/docs/rules/naming-convention.md +0 -320
- package/docs/rules/no-anonymous-operations.md +0 -43
- package/docs/rules/no-case-insensitive-enum-values-duplicates.md +0 -46
- package/docs/rules/no-deprecated.md +0 -88
- package/docs/rules/no-duplicate-fields.md +0 -69
- package/docs/rules/no-fragment-cycles.md +0 -19
- package/docs/rules/no-hashtag-description.md +0 -62
- package/docs/rules/no-one-place-fragments.md +0 -51
- package/docs/rules/no-root-type.md +0 -55
- package/docs/rules/no-scalar-result-type-on-mutation.md +0 -39
- package/docs/rules/no-typename-prefix.md +0 -42
- package/docs/rules/no-undefined-variables.md +0 -20
- package/docs/rules/no-unreachable-types.md +0 -52
- package/docs/rules/no-unused-fields.md +0 -64
- package/docs/rules/no-unused-fragments.md +0 -20
- package/docs/rules/no-unused-variables.md +0 -20
- package/docs/rules/one-field-subscriptions.md +0 -19
- package/docs/rules/overlapping-fields-can-be-merged.md +0 -20
- package/docs/rules/possible-fragment-spread.md +0 -21
- package/docs/rules/possible-type-extension.md +0 -19
- package/docs/rules/provided-required-arguments.md +0 -21
- package/docs/rules/relay-arguments.md +0 -59
- package/docs/rules/relay-connection-types.md +0 -43
- package/docs/rules/relay-edge-types.md +0 -60
- package/docs/rules/relay-page-info.md +0 -34
- package/docs/rules/require-deprecation-date.md +0 -59
- package/docs/rules/require-deprecation-reason.md +0 -49
- package/docs/rules/require-description.md +0 -147
- package/docs/rules/require-field-of-type-query-in-mutation-result.md +0 -50
- package/docs/rules/require-id-when-available.md +0 -91
- package/docs/rules/require-nullable-fields-with-oneof.md +0 -38
- package/docs/rules/require-type-pattern-with-oneof.md +0 -39
- package/docs/rules/scalar-leafs.md +0 -23
- package/docs/rules/selection-set-depth.md +0 -86
- package/docs/rules/strict-id-in-types.md +0 -129
- package/docs/rules/unique-argument-names.md +0 -19
- package/docs/rules/unique-directive-names-per-location.md +0 -21
- package/docs/rules/unique-directive-names.md +0 -19
- package/docs/rules/unique-enum-value-names.md +0 -16
- package/docs/rules/unique-field-definition-names.md +0 -19
- package/docs/rules/unique-fragment-name.md +0 -52
- package/docs/rules/unique-input-field-names.md +0 -19
- package/docs/rules/unique-operation-name.md +0 -56
- package/docs/rules/unique-operation-types.md +0 -19
- package/docs/rules/unique-type-names.md +0 -19
- package/docs/rules/unique-variable-names.md +0 -19
- package/docs/rules/value-literals-of-correct-type.md +0 -22
- package/docs/rules/variables-are-input-types.md +0 -20
- package/docs/rules/variables-in-allowed-position.md +0 -19
@@ -1,69 +0,0 @@
|
|
1
|
-
# `no-duplicate-fields`
|
2
|
-
|
3
|
-
✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file
|
4
|
-
enables this rule.
|
5
|
-
|
6
|
-
💡 This rule provides
|
7
|
-
[suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions)
|
8
|
-
|
9
|
-
- Category: `Operations`
|
10
|
-
- Rule name: `@graphql-eslint/no-duplicate-fields`
|
11
|
-
- Requires GraphQL Schema: `false` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
|
12
|
-
- Requires GraphQL Operations: `false`
|
13
|
-
[ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
|
14
|
-
|
15
|
-
Checks for duplicate fields in selection set, variables in operation definition, or in arguments set
|
16
|
-
of a field.
|
17
|
-
|
18
|
-
## Usage Examples
|
19
|
-
|
20
|
-
### Incorrect
|
21
|
-
|
22
|
-
```graphql
|
23
|
-
# eslint @graphql-eslint/no-duplicate-fields: 'error'
|
24
|
-
|
25
|
-
query {
|
26
|
-
user {
|
27
|
-
name
|
28
|
-
email
|
29
|
-
name # duplicate field
|
30
|
-
}
|
31
|
-
}
|
32
|
-
```
|
33
|
-
|
34
|
-
### Incorrect
|
35
|
-
|
36
|
-
```graphql
|
37
|
-
# eslint @graphql-eslint/no-duplicate-fields: 'error'
|
38
|
-
|
39
|
-
query {
|
40
|
-
users(
|
41
|
-
first: 100
|
42
|
-
skip: 50
|
43
|
-
after: "cji629tngfgou0b73kt7vi5jo"
|
44
|
-
first: 100 # duplicate argument
|
45
|
-
) {
|
46
|
-
id
|
47
|
-
}
|
48
|
-
}
|
49
|
-
```
|
50
|
-
|
51
|
-
### Incorrect
|
52
|
-
|
53
|
-
```graphql
|
54
|
-
# eslint @graphql-eslint/no-duplicate-fields: 'error'
|
55
|
-
|
56
|
-
query (
|
57
|
-
$first: Int!
|
58
|
-
$first: Int! # duplicate variable
|
59
|
-
) {
|
60
|
-
users(first: $first, skip: 50) {
|
61
|
-
id
|
62
|
-
}
|
63
|
-
}
|
64
|
-
```
|
65
|
-
|
66
|
-
## Resources
|
67
|
-
|
68
|
-
- [Rule source](../../packages/plugin/src/rules/no-duplicate-fields.ts)
|
69
|
-
- [Test source](../../packages/plugin/tests/no-duplicate-fields.spec.ts)
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# `no-fragment-cycles`
|
2
|
-
|
3
|
-
✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file
|
4
|
-
enables this rule.
|
5
|
-
|
6
|
-
- Category: `Operations`
|
7
|
-
- Rule name: `@graphql-eslint/no-fragment-cycles`
|
8
|
-
- Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
|
9
|
-
- Requires GraphQL Operations: `false`
|
10
|
-
[ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
|
11
|
-
|
12
|
-
A GraphQL fragment is only valid when it does not have cycles in fragments usage.
|
13
|
-
|
14
|
-
> This rule is a wrapper around a `graphql-js` validation function.
|
15
|
-
|
16
|
-
## Resources
|
17
|
-
|
18
|
-
- [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/NoFragmentCyclesRule.ts)
|
19
|
-
- [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/NoFragmentCyclesRule-test.ts)
|
@@ -1,62 +0,0 @@
|
|
1
|
-
# `no-hashtag-description`
|
2
|
-
|
3
|
-
✅ The `"extends": "plugin:@graphql-eslint/schema-recommended"` property in a configuration file
|
4
|
-
enables this rule.
|
5
|
-
|
6
|
-
💡 This rule provides
|
7
|
-
[suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions)
|
8
|
-
|
9
|
-
- Category: `Schema`
|
10
|
-
- Rule name: `@graphql-eslint/no-hashtag-description`
|
11
|
-
- Requires GraphQL Schema: `false` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
|
12
|
-
- Requires GraphQL Operations: `false`
|
13
|
-
[ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
|
14
|
-
|
15
|
-
Requires to use `"""` or `"` for adding a GraphQL description instead of `#`. Allows to use hashtag
|
16
|
-
for comments, as long as it's not attached to an AST definition.
|
17
|
-
|
18
|
-
## Usage Examples
|
19
|
-
|
20
|
-
### Incorrect
|
21
|
-
|
22
|
-
```graphql
|
23
|
-
# eslint @graphql-eslint/no-hashtag-description: 'error'
|
24
|
-
|
25
|
-
# Represents a user
|
26
|
-
type User {
|
27
|
-
id: ID!
|
28
|
-
name: String
|
29
|
-
}
|
30
|
-
```
|
31
|
-
|
32
|
-
### Correct
|
33
|
-
|
34
|
-
```graphql
|
35
|
-
# eslint @graphql-eslint/no-hashtag-description: 'error'
|
36
|
-
|
37
|
-
" Represents a user "
|
38
|
-
type User {
|
39
|
-
id: ID!
|
40
|
-
name: String
|
41
|
-
}
|
42
|
-
```
|
43
|
-
|
44
|
-
### Correct
|
45
|
-
|
46
|
-
```graphql
|
47
|
-
# eslint @graphql-eslint/no-hashtag-description: 'error'
|
48
|
-
|
49
|
-
# This file defines the basic User type.
|
50
|
-
# This comment is valid because it's not attached specifically to an AST object.
|
51
|
-
|
52
|
-
" Represents a user "
|
53
|
-
type User {
|
54
|
-
id: ID! # This one is also valid, since it comes after the AST object
|
55
|
-
name: String
|
56
|
-
}
|
57
|
-
```
|
58
|
-
|
59
|
-
## Resources
|
60
|
-
|
61
|
-
- [Rule source](../../packages/plugin/src/rules/no-hashtag-description.ts)
|
62
|
-
- [Test source](../../packages/plugin/tests/no-hashtag-description.spec.ts)
|
@@ -1,51 +0,0 @@
|
|
1
|
-
# `no-one-place-fragments`
|
2
|
-
|
3
|
-
- Category: `Operations`
|
4
|
-
- Rule name: `@graphql-eslint/no-one-place-fragments`
|
5
|
-
- Requires GraphQL Schema: `false` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
|
6
|
-
- Requires GraphQL Operations: `true`
|
7
|
-
[ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
|
8
|
-
|
9
|
-
Disallow fragments that are used only in one place.
|
10
|
-
|
11
|
-
## Usage Examples
|
12
|
-
|
13
|
-
### Incorrect
|
14
|
-
|
15
|
-
```graphql
|
16
|
-
# eslint @graphql-eslint/no-one-place-fragments: 'error'
|
17
|
-
|
18
|
-
fragment UserFields on User {
|
19
|
-
id
|
20
|
-
}
|
21
|
-
|
22
|
-
{
|
23
|
-
user {
|
24
|
-
...UserFields
|
25
|
-
}
|
26
|
-
}
|
27
|
-
```
|
28
|
-
|
29
|
-
### Correct
|
30
|
-
|
31
|
-
```graphql
|
32
|
-
# eslint @graphql-eslint/no-one-place-fragments: 'error'
|
33
|
-
|
34
|
-
fragment UserFields on User {
|
35
|
-
id
|
36
|
-
}
|
37
|
-
|
38
|
-
{
|
39
|
-
user {
|
40
|
-
...UserFields
|
41
|
-
friends {
|
42
|
-
...UserFields
|
43
|
-
}
|
44
|
-
}
|
45
|
-
}
|
46
|
-
```
|
47
|
-
|
48
|
-
## Resources
|
49
|
-
|
50
|
-
- [Rule source](../../packages/plugin/src/rules/no-one-place-fragments.ts)
|
51
|
-
- [Test source](../../packages/plugin/tests/no-one-place-fragments.spec.ts)
|
@@ -1,55 +0,0 @@
|
|
1
|
-
# `no-root-type`
|
2
|
-
|
3
|
-
💡 This rule provides
|
4
|
-
[suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions)
|
5
|
-
|
6
|
-
- Category: `Schema`
|
7
|
-
- Rule name: `@graphql-eslint/no-root-type`
|
8
|
-
- Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
|
9
|
-
- Requires GraphQL Operations: `false`
|
10
|
-
[ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
|
11
|
-
|
12
|
-
Disallow using root types `mutation` and/or `subscription`.
|
13
|
-
|
14
|
-
## Usage Examples
|
15
|
-
|
16
|
-
### Incorrect
|
17
|
-
|
18
|
-
```graphql
|
19
|
-
# eslint @graphql-eslint/no-root-type: ['error', { disallow: ['mutation', 'subscription'] }]
|
20
|
-
|
21
|
-
type Mutation {
|
22
|
-
createUser(input: CreateUserInput!): User!
|
23
|
-
}
|
24
|
-
```
|
25
|
-
|
26
|
-
### Correct
|
27
|
-
|
28
|
-
```graphql
|
29
|
-
# eslint @graphql-eslint/no-root-type: ['error', { disallow: ['mutation', 'subscription'] }]
|
30
|
-
|
31
|
-
type Query {
|
32
|
-
users: [User!]!
|
33
|
-
}
|
34
|
-
```
|
35
|
-
|
36
|
-
## Config Schema
|
37
|
-
|
38
|
-
The schema defines the following properties:
|
39
|
-
|
40
|
-
### `disallow` (array, required)
|
41
|
-
|
42
|
-
The elements of the array can contain the following enum values:
|
43
|
-
|
44
|
-
- `mutation`
|
45
|
-
- `subscription`
|
46
|
-
|
47
|
-
Additional restrictions:
|
48
|
-
|
49
|
-
- Minimum items: `1`
|
50
|
-
- Unique items: `true`
|
51
|
-
|
52
|
-
## Resources
|
53
|
-
|
54
|
-
- [Rule source](../../packages/plugin/src/rules/no-root-type.ts)
|
55
|
-
- [Test source](../../packages/plugin/tests/no-root-type.spec.ts)
|
@@ -1,39 +0,0 @@
|
|
1
|
-
# `no-scalar-result-type-on-mutation`
|
2
|
-
|
3
|
-
💡 This rule provides
|
4
|
-
[suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions)
|
5
|
-
|
6
|
-
- Category: `Schema`
|
7
|
-
- Rule name: `@graphql-eslint/no-scalar-result-type-on-mutation`
|
8
|
-
- Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
|
9
|
-
- Requires GraphQL Operations: `false`
|
10
|
-
[ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
|
11
|
-
|
12
|
-
Avoid scalar result type on mutation type to make sure to return a valid state.
|
13
|
-
|
14
|
-
## Usage Examples
|
15
|
-
|
16
|
-
### Incorrect
|
17
|
-
|
18
|
-
```graphql
|
19
|
-
# eslint @graphql-eslint/no-scalar-result-type-on-mutation: 'error'
|
20
|
-
|
21
|
-
type Mutation {
|
22
|
-
createUser: Boolean
|
23
|
-
}
|
24
|
-
```
|
25
|
-
|
26
|
-
### Correct
|
27
|
-
|
28
|
-
```graphql
|
29
|
-
# eslint @graphql-eslint/no-scalar-result-type-on-mutation: 'error'
|
30
|
-
|
31
|
-
type Mutation {
|
32
|
-
createUser: User!
|
33
|
-
}
|
34
|
-
```
|
35
|
-
|
36
|
-
## Resources
|
37
|
-
|
38
|
-
- [Rule source](../../packages/plugin/src/rules/no-scalar-result-type-on-mutation.ts)
|
39
|
-
- [Test source](../../packages/plugin/tests/no-scalar-result-type-on-mutation.spec.ts)
|
@@ -1,42 +0,0 @@
|
|
1
|
-
# `no-typename-prefix`
|
2
|
-
|
3
|
-
✅ The `"extends": "plugin:@graphql-eslint/schema-recommended"` property in a configuration file
|
4
|
-
enables this rule.
|
5
|
-
|
6
|
-
💡 This rule provides
|
7
|
-
[suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions)
|
8
|
-
|
9
|
-
- Category: `Schema`
|
10
|
-
- Rule name: `@graphql-eslint/no-typename-prefix`
|
11
|
-
- Requires GraphQL Schema: `false` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
|
12
|
-
- Requires GraphQL Operations: `false`
|
13
|
-
[ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
|
14
|
-
|
15
|
-
Enforces users to avoid using the type name in a field name while defining your schema.
|
16
|
-
|
17
|
-
## Usage Examples
|
18
|
-
|
19
|
-
### Incorrect
|
20
|
-
|
21
|
-
```graphql
|
22
|
-
# eslint @graphql-eslint/no-typename-prefix: 'error'
|
23
|
-
|
24
|
-
type User {
|
25
|
-
userId: ID!
|
26
|
-
}
|
27
|
-
```
|
28
|
-
|
29
|
-
### Correct
|
30
|
-
|
31
|
-
```graphql
|
32
|
-
# eslint @graphql-eslint/no-typename-prefix: 'error'
|
33
|
-
|
34
|
-
type User {
|
35
|
-
id: ID!
|
36
|
-
}
|
37
|
-
```
|
38
|
-
|
39
|
-
## Resources
|
40
|
-
|
41
|
-
- [Rule source](../../packages/plugin/src/rules/no-typename-prefix.ts)
|
42
|
-
- [Test source](../../packages/plugin/tests/no-typename-prefix.spec.ts)
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# `no-undefined-variables`
|
2
|
-
|
3
|
-
✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file
|
4
|
-
enables this rule.
|
5
|
-
|
6
|
-
- Category: `Operations`
|
7
|
-
- Rule name: `@graphql-eslint/no-undefined-variables`
|
8
|
-
- Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
|
9
|
-
- Requires GraphQL Operations: `true`
|
10
|
-
[ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
|
11
|
-
|
12
|
-
A GraphQL operation is only valid if all variables encountered, both directly and via fragment
|
13
|
-
spreads, are defined by that operation.
|
14
|
-
|
15
|
-
> This rule is a wrapper around a `graphql-js` validation function.
|
16
|
-
|
17
|
-
## Resources
|
18
|
-
|
19
|
-
- [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/NoUndefinedVariablesRule.ts)
|
20
|
-
- [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/NoUndefinedVariablesRule-test.ts)
|
@@ -1,52 +0,0 @@
|
|
1
|
-
# `no-unreachable-types`
|
2
|
-
|
3
|
-
✅ The `"extends": "plugin:@graphql-eslint/schema-recommended"` property in a configuration file
|
4
|
-
enables this rule.
|
5
|
-
|
6
|
-
💡 This rule provides
|
7
|
-
[suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions)
|
8
|
-
|
9
|
-
- Category: `Schema`
|
10
|
-
- Rule name: `@graphql-eslint/no-unreachable-types`
|
11
|
-
- Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
|
12
|
-
- Requires GraphQL Operations: `false`
|
13
|
-
[ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
|
14
|
-
|
15
|
-
Requires all types to be reachable at some level by root level fields.
|
16
|
-
|
17
|
-
## Usage Examples
|
18
|
-
|
19
|
-
### Incorrect
|
20
|
-
|
21
|
-
```graphql
|
22
|
-
# eslint @graphql-eslint/no-unreachable-types: 'error'
|
23
|
-
|
24
|
-
type User {
|
25
|
-
id: ID!
|
26
|
-
name: String
|
27
|
-
}
|
28
|
-
|
29
|
-
type Query {
|
30
|
-
me: String
|
31
|
-
}
|
32
|
-
```
|
33
|
-
|
34
|
-
### Correct
|
35
|
-
|
36
|
-
```graphql
|
37
|
-
# eslint @graphql-eslint/no-unreachable-types: 'error'
|
38
|
-
|
39
|
-
type User {
|
40
|
-
id: ID!
|
41
|
-
name: String
|
42
|
-
}
|
43
|
-
|
44
|
-
type Query {
|
45
|
-
me: User
|
46
|
-
}
|
47
|
-
```
|
48
|
-
|
49
|
-
## Resources
|
50
|
-
|
51
|
-
- [Rule source](../../packages/plugin/src/rules/no-unreachable-types.ts)
|
52
|
-
- [Test source](../../packages/plugin/tests/no-unreachable-types.spec.ts)
|
@@ -1,64 +0,0 @@
|
|
1
|
-
# `no-unused-fields`
|
2
|
-
|
3
|
-
💡 This rule provides
|
4
|
-
[suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions)
|
5
|
-
|
6
|
-
- Category: `Schema`
|
7
|
-
- Rule name: `@graphql-eslint/no-unused-fields`
|
8
|
-
- Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
|
9
|
-
- Requires GraphQL Operations: `true`
|
10
|
-
[ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
|
11
|
-
|
12
|
-
Requires all fields to be used at some level by siblings operations.
|
13
|
-
|
14
|
-
## Usage Examples
|
15
|
-
|
16
|
-
### Incorrect
|
17
|
-
|
18
|
-
```graphql
|
19
|
-
# eslint @graphql-eslint/no-unused-fields: 'error'
|
20
|
-
|
21
|
-
type User {
|
22
|
-
id: ID!
|
23
|
-
name: String
|
24
|
-
someUnusedField: String
|
25
|
-
}
|
26
|
-
|
27
|
-
type Query {
|
28
|
-
me: User
|
29
|
-
}
|
30
|
-
|
31
|
-
query {
|
32
|
-
me {
|
33
|
-
id
|
34
|
-
name
|
35
|
-
}
|
36
|
-
}
|
37
|
-
```
|
38
|
-
|
39
|
-
### Correct
|
40
|
-
|
41
|
-
```graphql
|
42
|
-
# eslint @graphql-eslint/no-unused-fields: 'error'
|
43
|
-
|
44
|
-
type User {
|
45
|
-
id: ID!
|
46
|
-
name: String
|
47
|
-
}
|
48
|
-
|
49
|
-
type Query {
|
50
|
-
me: User
|
51
|
-
}
|
52
|
-
|
53
|
-
query {
|
54
|
-
me {
|
55
|
-
id
|
56
|
-
name
|
57
|
-
}
|
58
|
-
}
|
59
|
-
```
|
60
|
-
|
61
|
-
## Resources
|
62
|
-
|
63
|
-
- [Rule source](../../packages/plugin/src/rules/no-unused-fields.ts)
|
64
|
-
- [Test source](../../packages/plugin/tests/no-unused-fields.spec.ts)
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# `no-unused-fragments`
|
2
|
-
|
3
|
-
✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file
|
4
|
-
enables this rule.
|
5
|
-
|
6
|
-
- Category: `Operations`
|
7
|
-
- Rule name: `@graphql-eslint/no-unused-fragments`
|
8
|
-
- Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
|
9
|
-
- Requires GraphQL Operations: `true`
|
10
|
-
[ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
|
11
|
-
|
12
|
-
A GraphQL document is only valid if all fragment definitions are spread within operations, or spread
|
13
|
-
within other fragments spread within operations.
|
14
|
-
|
15
|
-
> This rule is a wrapper around a `graphql-js` validation function.
|
16
|
-
|
17
|
-
## Resources
|
18
|
-
|
19
|
-
- [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/NoUnusedFragmentsRule.ts)
|
20
|
-
- [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/NoUnusedFragmentsRule-test.ts)
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# `no-unused-variables`
|
2
|
-
|
3
|
-
✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file
|
4
|
-
enables this rule.
|
5
|
-
|
6
|
-
- Category: `Operations`
|
7
|
-
- Rule name: `@graphql-eslint/no-unused-variables`
|
8
|
-
- Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
|
9
|
-
- Requires GraphQL Operations: `true`
|
10
|
-
[ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
|
11
|
-
|
12
|
-
A GraphQL operation is only valid if all variables defined by an operation are used, either directly
|
13
|
-
or within a spread fragment.
|
14
|
-
|
15
|
-
> This rule is a wrapper around a `graphql-js` validation function.
|
16
|
-
|
17
|
-
## Resources
|
18
|
-
|
19
|
-
- [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/NoUnusedVariablesRule.ts)
|
20
|
-
- [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/NoUnusedVariablesRule-test.ts)
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# `one-field-subscriptions`
|
2
|
-
|
3
|
-
✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file
|
4
|
-
enables this rule.
|
5
|
-
|
6
|
-
- Category: `Operations`
|
7
|
-
- Rule name: `@graphql-eslint/one-field-subscriptions`
|
8
|
-
- Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
|
9
|
-
- Requires GraphQL Operations: `false`
|
10
|
-
[ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
|
11
|
-
|
12
|
-
A GraphQL subscription is valid only if it contains a single root field.
|
13
|
-
|
14
|
-
> This rule is a wrapper around a `graphql-js` validation function.
|
15
|
-
|
16
|
-
## Resources
|
17
|
-
|
18
|
-
- [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/SingleFieldSubscriptionsRule.ts)
|
19
|
-
- [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/SingleFieldSubscriptionsRule-test.ts)
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# `overlapping-fields-can-be-merged`
|
2
|
-
|
3
|
-
✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file
|
4
|
-
enables this rule.
|
5
|
-
|
6
|
-
- Category: `Operations`
|
7
|
-
- Rule name: `@graphql-eslint/overlapping-fields-can-be-merged`
|
8
|
-
- Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
|
9
|
-
- Requires GraphQL Operations: `false`
|
10
|
-
[ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
|
11
|
-
|
12
|
-
A selection set is only valid if all fields (including spreading any fragments) either correspond to
|
13
|
-
distinct response names or can be merged without ambiguity.
|
14
|
-
|
15
|
-
> This rule is a wrapper around a `graphql-js` validation function.
|
16
|
-
|
17
|
-
## Resources
|
18
|
-
|
19
|
-
- [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/OverlappingFieldsCanBeMergedRule.ts)
|
20
|
-
- [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/OverlappingFieldsCanBeMergedRule-test.ts)
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# `possible-fragment-spread`
|
2
|
-
|
3
|
-
✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file
|
4
|
-
enables this rule.
|
5
|
-
|
6
|
-
- Category: `Operations`
|
7
|
-
- Rule name: `@graphql-eslint/possible-fragment-spread`
|
8
|
-
- Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
|
9
|
-
- Requires GraphQL Operations: `false`
|
10
|
-
[ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
|
11
|
-
|
12
|
-
A fragment spread is only valid if the type condition could ever possibly be true: if there is a
|
13
|
-
non-empty intersection of the possible parent types, and possible types which pass the type
|
14
|
-
condition.
|
15
|
-
|
16
|
-
> This rule is a wrapper around a `graphql-js` validation function.
|
17
|
-
|
18
|
-
## Resources
|
19
|
-
|
20
|
-
- [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/PossibleFragmentSpreadsRule.ts)
|
21
|
-
- [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/PossibleFragmentSpreadsRule-test.ts)
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# `possible-type-extension`
|
2
|
-
|
3
|
-
💡 This rule provides
|
4
|
-
[suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions)
|
5
|
-
|
6
|
-
- Category: `Schema`
|
7
|
-
- Rule name: `@graphql-eslint/possible-type-extension`
|
8
|
-
- Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
|
9
|
-
- Requires GraphQL Operations: `false`
|
10
|
-
[ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
|
11
|
-
|
12
|
-
A type extension is only valid if the type is defined and has the same kind.
|
13
|
-
|
14
|
-
> This rule is a wrapper around a `graphql-js` validation function.
|
15
|
-
|
16
|
-
## Resources
|
17
|
-
|
18
|
-
- [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/PossibleTypeExtensionsRule.ts)
|
19
|
-
- [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/PossibleTypeExtensionsRule-test.ts)
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# `provided-required-arguments`
|
2
|
-
|
3
|
-
✅ The `"extends": "plugin:@graphql-eslint/schema-recommended"` and
|
4
|
-
`"plugin:@graphql-eslint/operations-recommended"` property in a configuration file enables this
|
5
|
-
rule.
|
6
|
-
|
7
|
-
- Category: `Schema & Operations`
|
8
|
-
- Rule name: `@graphql-eslint/provided-required-arguments`
|
9
|
-
- Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
|
10
|
-
- Requires GraphQL Operations: `false`
|
11
|
-
[ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
|
12
|
-
|
13
|
-
A field or directive is only valid if all required (non-null without a default value) field
|
14
|
-
arguments have been provided.
|
15
|
-
|
16
|
-
> This rule is a wrapper around a `graphql-js` validation function.
|
17
|
-
|
18
|
-
## Resources
|
19
|
-
|
20
|
-
- [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/ProvidedRequiredArgumentsRule.ts)
|
21
|
-
- [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/ProvidedRequiredArgumentsRule-test.ts)
|