@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.
Files changed (156) hide show
  1. package/README.md +5 -288
  2. package/cjs/documents.js +2 -105
  3. package/cjs/graphql-config.js +1 -1
  4. package/cjs/parser.js +9 -3
  5. package/cjs/rules/alphabetize.js +1 -1
  6. package/cjs/rules/description-style.js +1 -1
  7. package/cjs/rules/graphql-js-validation.js +1 -1
  8. package/cjs/rules/input-name.js +4 -4
  9. package/cjs/rules/lone-executable-definition.js +1 -1
  10. package/cjs/rules/match-document-filename.js +2 -3
  11. package/cjs/rules/naming-convention.js +1 -1
  12. package/cjs/rules/no-anonymous-operations.js +1 -1
  13. package/cjs/rules/no-case-insensitive-enum-values-duplicates.js +1 -1
  14. package/cjs/rules/no-deprecated.js +1 -1
  15. package/cjs/rules/no-duplicate-fields.js +1 -1
  16. package/cjs/rules/no-hashtag-description.js +1 -1
  17. package/cjs/rules/no-one-place-fragments.js +1 -1
  18. package/cjs/rules/no-root-type.js +1 -1
  19. package/cjs/rules/no-scalar-result-type-on-mutation.js +1 -1
  20. package/cjs/rules/no-typename-prefix.js +1 -1
  21. package/cjs/rules/no-unreachable-types.js +1 -1
  22. package/cjs/rules/no-unused-fields.js +1 -1
  23. package/cjs/rules/relay-arguments.js +4 -4
  24. package/cjs/rules/relay-connection-types.js +1 -1
  25. package/cjs/rules/relay-edge-types.js +1 -1
  26. package/cjs/rules/relay-page-info.js +1 -1
  27. package/cjs/rules/require-deprecation-date.js +1 -1
  28. package/cjs/rules/require-deprecation-reason.js +1 -1
  29. package/cjs/rules/require-description.js +1 -1
  30. package/cjs/rules/require-field-of-type-query-in-mutation-result.js +1 -1
  31. package/cjs/rules/require-id-when-available.js +1 -1
  32. package/cjs/rules/require-nullable-fields-with-oneof.js +1 -1
  33. package/cjs/rules/require-type-pattern-with-oneof.js +1 -1
  34. package/cjs/rules/selection-set-depth.js +1 -1
  35. package/cjs/rules/strict-id-in-types.js +1 -1
  36. package/cjs/rules/unique-fragment-name.js +1 -1
  37. package/cjs/rules/unique-operation-name.js +1 -1
  38. package/cjs/siblings.js +113 -0
  39. package/cjs/utils.js +3 -2
  40. package/docs/README.md +1 -85
  41. package/docs/custom-rules.md +1 -184
  42. package/docs/deprecated-rules.md +1 -24
  43. package/docs/parser-options.md +1 -107
  44. package/docs/parser.md +1 -67
  45. package/esm/documents.js +2 -105
  46. package/esm/graphql-config.js +1 -1
  47. package/esm/parser.js +10 -4
  48. package/esm/rules/alphabetize.js +1 -1
  49. package/esm/rules/description-style.js +1 -1
  50. package/esm/rules/graphql-js-validation.js +1 -1
  51. package/esm/rules/input-name.js +4 -4
  52. package/esm/rules/lone-executable-definition.js +1 -1
  53. package/esm/rules/match-document-filename.js +3 -4
  54. package/esm/rules/naming-convention.js +1 -1
  55. package/esm/rules/no-anonymous-operations.js +1 -1
  56. package/esm/rules/no-case-insensitive-enum-values-duplicates.js +1 -1
  57. package/esm/rules/no-deprecated.js +1 -1
  58. package/esm/rules/no-duplicate-fields.js +1 -1
  59. package/esm/rules/no-hashtag-description.js +1 -1
  60. package/esm/rules/no-one-place-fragments.js +1 -1
  61. package/esm/rules/no-root-type.js +1 -1
  62. package/esm/rules/no-scalar-result-type-on-mutation.js +1 -1
  63. package/esm/rules/no-typename-prefix.js +1 -1
  64. package/esm/rules/no-unreachable-types.js +1 -1
  65. package/esm/rules/no-unused-fields.js +1 -1
  66. package/esm/rules/relay-arguments.js +4 -4
  67. package/esm/rules/relay-connection-types.js +1 -1
  68. package/esm/rules/relay-edge-types.js +1 -1
  69. package/esm/rules/relay-page-info.js +1 -1
  70. package/esm/rules/require-deprecation-date.js +1 -1
  71. package/esm/rules/require-deprecation-reason.js +1 -1
  72. package/esm/rules/require-description.js +1 -1
  73. package/esm/rules/require-field-of-type-query-in-mutation-result.js +1 -1
  74. package/esm/rules/require-id-when-available.js +1 -1
  75. package/esm/rules/require-nullable-fields-with-oneof.js +1 -1
  76. package/esm/rules/require-type-pattern-with-oneof.js +1 -1
  77. package/esm/rules/selection-set-depth.js +1 -1
  78. package/esm/rules/strict-id-in-types.js +1 -1
  79. package/esm/rules/unique-fragment-name.js +1 -1
  80. package/esm/rules/unique-operation-name.js +1 -1
  81. package/esm/siblings.js +109 -0
  82. package/esm/utils.js +2 -1
  83. package/package.json +1 -1
  84. package/typings/documents.d.cts +2 -20
  85. package/typings/documents.d.ts +2 -20
  86. package/typings/rules/input-name.d.cts +1 -1
  87. package/typings/rules/input-name.d.ts +1 -1
  88. package/typings/siblings.d.cts +22 -0
  89. package/typings/siblings.d.ts +22 -0
  90. package/typings/types.d.cts +3 -2
  91. package/typings/types.d.ts +3 -2
  92. package/typings/utils.d.cts +2 -1
  93. package/typings/utils.d.ts +2 -1
  94. package/docs/rules/alphabetize.md +0 -194
  95. package/docs/rules/description-style.md +0 -57
  96. package/docs/rules/executable-definitions.md +0 -20
  97. package/docs/rules/fields-on-correct-type.md +0 -23
  98. package/docs/rules/fragments-on-composite-type.md +0 -20
  99. package/docs/rules/input-name.md +0 -80
  100. package/docs/rules/known-argument-names.md +0 -23
  101. package/docs/rules/known-directives.md +0 -48
  102. package/docs/rules/known-fragment-names.md +0 -72
  103. package/docs/rules/known-type-names.md +0 -24
  104. package/docs/rules/lone-anonymous-operation.md +0 -20
  105. package/docs/rules/lone-executable-definition.md +0 -59
  106. package/docs/rules/lone-schema-definition.md +0 -19
  107. package/docs/rules/match-document-filename.md +0 -181
  108. package/docs/rules/naming-convention.md +0 -320
  109. package/docs/rules/no-anonymous-operations.md +0 -43
  110. package/docs/rules/no-case-insensitive-enum-values-duplicates.md +0 -46
  111. package/docs/rules/no-deprecated.md +0 -88
  112. package/docs/rules/no-duplicate-fields.md +0 -69
  113. package/docs/rules/no-fragment-cycles.md +0 -19
  114. package/docs/rules/no-hashtag-description.md +0 -62
  115. package/docs/rules/no-one-place-fragments.md +0 -51
  116. package/docs/rules/no-root-type.md +0 -55
  117. package/docs/rules/no-scalar-result-type-on-mutation.md +0 -39
  118. package/docs/rules/no-typename-prefix.md +0 -42
  119. package/docs/rules/no-undefined-variables.md +0 -20
  120. package/docs/rules/no-unreachable-types.md +0 -52
  121. package/docs/rules/no-unused-fields.md +0 -64
  122. package/docs/rules/no-unused-fragments.md +0 -20
  123. package/docs/rules/no-unused-variables.md +0 -20
  124. package/docs/rules/one-field-subscriptions.md +0 -19
  125. package/docs/rules/overlapping-fields-can-be-merged.md +0 -20
  126. package/docs/rules/possible-fragment-spread.md +0 -21
  127. package/docs/rules/possible-type-extension.md +0 -19
  128. package/docs/rules/provided-required-arguments.md +0 -21
  129. package/docs/rules/relay-arguments.md +0 -59
  130. package/docs/rules/relay-connection-types.md +0 -43
  131. package/docs/rules/relay-edge-types.md +0 -60
  132. package/docs/rules/relay-page-info.md +0 -34
  133. package/docs/rules/require-deprecation-date.md +0 -59
  134. package/docs/rules/require-deprecation-reason.md +0 -49
  135. package/docs/rules/require-description.md +0 -147
  136. package/docs/rules/require-field-of-type-query-in-mutation-result.md +0 -50
  137. package/docs/rules/require-id-when-available.md +0 -91
  138. package/docs/rules/require-nullable-fields-with-oneof.md +0 -38
  139. package/docs/rules/require-type-pattern-with-oneof.md +0 -39
  140. package/docs/rules/scalar-leafs.md +0 -23
  141. package/docs/rules/selection-set-depth.md +0 -86
  142. package/docs/rules/strict-id-in-types.md +0 -129
  143. package/docs/rules/unique-argument-names.md +0 -19
  144. package/docs/rules/unique-directive-names-per-location.md +0 -21
  145. package/docs/rules/unique-directive-names.md +0 -19
  146. package/docs/rules/unique-enum-value-names.md +0 -16
  147. package/docs/rules/unique-field-definition-names.md +0 -19
  148. package/docs/rules/unique-fragment-name.md +0 -52
  149. package/docs/rules/unique-input-field-names.md +0 -19
  150. package/docs/rules/unique-operation-name.md +0 -56
  151. package/docs/rules/unique-operation-types.md +0 -19
  152. package/docs/rules/unique-type-names.md +0 -19
  153. package/docs/rules/unique-variable-names.md +0 -19
  154. package/docs/rules/value-literals-of-correct-type.md +0 -22
  155. package/docs/rules/variables-are-input-types.md +0 -20
  156. 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)