@graphql-eslint/eslint-plugin 3.13.1 → 3.13.2-alpha-20221109140613-1815aa1

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 (66) hide show
  1. package/package.json +2 -2
  2. package/README.md +0 -266
  3. package/docs/README.md +0 -76
  4. package/docs/custom-rules.md +0 -148
  5. package/docs/deprecated-rules.md +0 -21
  6. package/docs/parser-options.md +0 -85
  7. package/docs/parser.md +0 -49
  8. package/docs/rules/alphabetize.md +0 -178
  9. package/docs/rules/description-style.md +0 -54
  10. package/docs/rules/executable-definitions.md +0 -17
  11. package/docs/rules/fields-on-correct-type.md +0 -17
  12. package/docs/rules/fragments-on-composite-type.md +0 -17
  13. package/docs/rules/input-name.md +0 -76
  14. package/docs/rules/known-argument-names.md +0 -17
  15. package/docs/rules/known-directives.md +0 -44
  16. package/docs/rules/known-fragment-names.md +0 -69
  17. package/docs/rules/known-type-names.md +0 -17
  18. package/docs/rules/lone-anonymous-operation.md +0 -17
  19. package/docs/rules/lone-schema-definition.md +0 -17
  20. package/docs/rules/match-document-filename.md +0 -156
  21. package/docs/rules/naming-convention.md +0 -300
  22. package/docs/rules/no-anonymous-operations.md +0 -39
  23. package/docs/rules/no-case-insensitive-enum-values-duplicates.md +0 -43
  24. package/docs/rules/no-deprecated.md +0 -85
  25. package/docs/rules/no-duplicate-fields.md +0 -65
  26. package/docs/rules/no-fragment-cycles.md +0 -17
  27. package/docs/rules/no-hashtag-description.md +0 -59
  28. package/docs/rules/no-root-type.md +0 -53
  29. package/docs/rules/no-scalar-result-type-on-mutation.md +0 -37
  30. package/docs/rules/no-typename-prefix.md +0 -39
  31. package/docs/rules/no-undefined-variables.md +0 -17
  32. package/docs/rules/no-unreachable-types.md +0 -49
  33. package/docs/rules/no-unused-fields.md +0 -62
  34. package/docs/rules/no-unused-fragments.md +0 -17
  35. package/docs/rules/no-unused-variables.md +0 -17
  36. package/docs/rules/one-field-subscriptions.md +0 -17
  37. package/docs/rules/overlapping-fields-can-be-merged.md +0 -17
  38. package/docs/rules/possible-fragment-spread.md +0 -17
  39. package/docs/rules/possible-type-extension.md +0 -15
  40. package/docs/rules/provided-required-arguments.md +0 -17
  41. package/docs/rules/relay-arguments.md +0 -57
  42. package/docs/rules/relay-connection-types.md +0 -42
  43. package/docs/rules/relay-edge-types.md +0 -56
  44. package/docs/rules/relay-page-info.md +0 -32
  45. package/docs/rules/require-deprecation-date.md +0 -57
  46. package/docs/rules/require-deprecation-reason.md +0 -47
  47. package/docs/rules/require-description.md +0 -115
  48. package/docs/rules/require-field-of-type-query-in-mutation-result.md +0 -47
  49. package/docs/rules/require-id-when-available.md +0 -88
  50. package/docs/rules/scalar-leafs.md +0 -17
  51. package/docs/rules/selection-set-depth.md +0 -76
  52. package/docs/rules/strict-id-in-types.md +0 -130
  53. package/docs/rules/unique-argument-names.md +0 -17
  54. package/docs/rules/unique-directive-names-per-location.md +0 -17
  55. package/docs/rules/unique-directive-names.md +0 -17
  56. package/docs/rules/unique-enum-value-names.md +0 -15
  57. package/docs/rules/unique-field-definition-names.md +0 -17
  58. package/docs/rules/unique-fragment-name.md +0 -51
  59. package/docs/rules/unique-input-field-names.md +0 -17
  60. package/docs/rules/unique-operation-name.md +0 -55
  61. package/docs/rules/unique-operation-types.md +0 -17
  62. package/docs/rules/unique-type-names.md +0 -17
  63. package/docs/rules/unique-variable-names.md +0 -17
  64. package/docs/rules/value-literals-of-correct-type.md +0 -17
  65. package/docs/rules/variables-are-input-types.md +0 -17
  66. package/docs/rules/variables-in-allowed-position.md +0 -17
@@ -1,156 +0,0 @@
1
- # `match-document-filename`
2
-
3
- - Category: `Operations`
4
- - Rule name: `@graphql-eslint/match-document-filename`
5
- - Requires GraphQL Schema: `false` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
6
- - Requires GraphQL Operations: `false` [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
7
-
8
- This rule allows you to enforce that the file name should match the operation name.
9
-
10
- ## Usage Examples
11
-
12
- ### Correct
13
-
14
- ```graphql
15
- # eslint @graphql-eslint/match-document-filename: ['error', { fileExtension: '.gql' }]
16
-
17
- # user.gql
18
- type User {
19
- id: ID!
20
- }
21
- ```
22
-
23
- ### Correct
24
-
25
- ```graphql
26
- # eslint @graphql-eslint/match-document-filename: ['error', { query: 'snake_case' }]
27
-
28
- # user_by_id.gql
29
- query UserById {
30
- userById(id: 5) {
31
- id
32
- name
33
- fullName
34
- }
35
- }
36
- ```
37
-
38
- ### Correct
39
-
40
- ```graphql
41
- # eslint @graphql-eslint/match-document-filename: ['error', { fragment: { style: 'kebab-case', suffix: '.fragment' } }]
42
-
43
- # user-fields.fragment.gql
44
- fragment user_fields on User {
45
- id
46
- email
47
- }
48
- ```
49
-
50
- ### Correct
51
-
52
- ```graphql
53
- # eslint @graphql-eslint/match-document-filename: ['error', { mutation: { style: 'PascalCase', suffix: 'Mutation' } }]
54
-
55
- # DeleteUserMutation.gql
56
- mutation DELETE_USER {
57
- deleteUser(id: 5)
58
- }
59
- ```
60
-
61
- ### Incorrect
62
-
63
- ```graphql
64
- # eslint @graphql-eslint/match-document-filename: ['error', { fileExtension: '.graphql' }]
65
-
66
- # post.gql
67
- type Post {
68
- id: ID!
69
- }
70
- ```
71
-
72
- ### Incorrect
73
-
74
- ```graphql
75
- # eslint @graphql-eslint/match-document-filename: ['error', { query: 'PascalCase' }]
76
-
77
- # user-by-id.gql
78
- query UserById {
79
- userById(id: 5) {
80
- id
81
- name
82
- fullName
83
- }
84
- }
85
- ```
86
-
87
- ## Config Schema
88
-
89
- The schema defines the following properties:
90
-
91
- ### `fileExtension` (enum)
92
-
93
- This element must be one of the following enum values:
94
-
95
- - `.gql`
96
- - `.graphql`
97
-
98
- ### `query`
99
-
100
- The object must be one of the following types:
101
-
102
- * `asString`
103
- * `asObject`
104
-
105
- ### `mutation`
106
-
107
- The object must be one of the following types:
108
-
109
- * `asString`
110
- * `asObject`
111
-
112
- ### `subscription`
113
-
114
- The object must be one of the following types:
115
-
116
- * `asString`
117
- * `asObject`
118
-
119
- ### `fragment`
120
-
121
- The object must be one of the following types:
122
-
123
- * `asString`
124
- * `asObject`
125
-
126
- ---
127
-
128
- # Sub Schemas
129
-
130
- The schema defines the following additional types:
131
-
132
- ## `asString` (enum)
133
-
134
- One of: `camelCase`, `PascalCase`, `snake_case`, `UPPER_CASE`, `kebab-case`, `matchDocumentStyle`
135
-
136
- ## `asObject` (object)
137
-
138
- Properties of the `asObject` object:
139
-
140
- ### `style` (enum)
141
-
142
- This element must be one of the following enum values:
143
-
144
- - `camelCase`
145
- - `PascalCase`
146
- - `snake_case`
147
- - `UPPER_CASE`
148
- - `kebab-case`
149
- - `matchDocumentStyle`
150
-
151
- ### `suffix` (string)
152
-
153
- ## Resources
154
-
155
- - [Rule source](../../packages/plugin/src/rules/match-document-filename.ts)
156
- - [Test source](../../packages/plugin/tests/match-document-filename.spec.ts)
@@ -1,300 +0,0 @@
1
- # `naming-convention`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/schema-recommended"` and `"plugin:@graphql-eslint/operations-recommended"` property in a configuration file enables this rule.
4
-
5
- 💡 This rule provides [suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions)
6
-
7
- - Category: `Schema & Operations`
8
- - Rule name: `@graphql-eslint/naming-convention`
9
- - Requires GraphQL Schema: `false` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
10
- - Requires GraphQL Operations: `false` [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
11
-
12
- Require names to follow specified conventions.
13
-
14
- ## Usage Examples
15
-
16
- ### Incorrect
17
-
18
- ```graphql
19
- # eslint @graphql-eslint/naming-convention: ['error', { types: 'PascalCase', FieldDefinition: 'camelCase' }]
20
-
21
- type user {
22
- first_name: String!
23
- }
24
- ```
25
-
26
- ### Incorrect
27
-
28
- ```graphql
29
- # eslint @graphql-eslint/naming-convention: ['error', { FragmentDefinition: { style: 'PascalCase', forbiddenSuffixes: ['Fragment'] } }]
30
-
31
- fragment UserFragment on User {
32
- # ...
33
- }
34
- ```
35
-
36
- ### Incorrect
37
-
38
- ```graphql
39
- # eslint @graphql-eslint/naming-convention: ['error', { 'FieldDefinition[parent.name.value=Query]': { forbiddenPrefixes: ['get'] } }]
40
-
41
- type Query {
42
- getUsers: [User!]!
43
- }
44
- ```
45
-
46
- ### Correct
47
-
48
- ```graphql
49
- # eslint @graphql-eslint/naming-convention: ['error', { types: 'PascalCase', FieldDefinition: 'camelCase' }]
50
-
51
- type User {
52
- firstName: String
53
- }
54
- ```
55
-
56
- ### Correct
57
-
58
- ```graphql
59
- # eslint @graphql-eslint/naming-convention: ['error', { FragmentDefinition: { style: 'PascalCase', forbiddenSuffixes: ['Fragment'] } }]
60
-
61
- fragment UserFields on User {
62
- # ...
63
- }
64
- ```
65
-
66
- ### Correct
67
-
68
- ```graphql
69
- # eslint @graphql-eslint/naming-convention: ['error', { 'FieldDefinition[parent.name.value=Query]': { forbiddenPrefixes: ['get'] } }]
70
-
71
- type Query {
72
- users: [User!]!
73
- }
74
- ```
75
-
76
- ### Correct
77
-
78
- ```graphql
79
- # eslint @graphql-eslint/naming-convention: ['error', { FieldDefinition: { style: 'camelCase', ignorePattern: '^(EAN13|UPC|UK)' } }]
80
-
81
- type Product {
82
- EAN13: String
83
- UPC: String
84
- UKFlag: String
85
- }
86
- ```
87
-
88
- ## Config Schema
89
-
90
- > It's possible to use a [`selector`](https://eslint.org/docs/developer-guide/selectors) that starts with allowed `ASTNode` names which are described below.
91
- >
92
- > Paste or drop code into the editor in [ASTExplorer](https://astexplorer.net) and inspect the generated AST to compose your selector.
93
- >
94
- > Example: pattern property `FieldDefinition[parent.name.value=Query]` will match only fields for type `Query`.
95
-
96
- The schema defines the following properties:
97
-
98
- ### `types`
99
-
100
- Includes:
101
-
102
- - `ObjectTypeDefinition`
103
- - `InterfaceTypeDefinition`
104
- - `EnumTypeDefinition`
105
- - `ScalarTypeDefinition`
106
- - `InputObjectTypeDefinition`
107
- - `UnionTypeDefinition`
108
-
109
- The object must be one of the following types:
110
-
111
- * `asString`
112
- * `asObject`
113
-
114
- ### `Argument`
115
-
116
- Read more about this kind on [spec.graphql.org](https://spec.graphql.org/October2021/#Argument).
117
-
118
- The object must be one of the following types:
119
-
120
- * `asString`
121
- * `asObject`
122
-
123
- ### `DirectiveDefinition`
124
-
125
- Read more about this kind on [spec.graphql.org](https://spec.graphql.org/October2021/#DirectiveDefinition).
126
-
127
- The object must be one of the following types:
128
-
129
- * `asString`
130
- * `asObject`
131
-
132
- ### `EnumTypeDefinition`
133
-
134
- Read more about this kind on [spec.graphql.org](https://spec.graphql.org/October2021/#EnumTypeDefinition).
135
-
136
- The object must be one of the following types:
137
-
138
- * `asString`
139
- * `asObject`
140
-
141
- ### `EnumValueDefinition`
142
-
143
- Read more about this kind on [spec.graphql.org](https://spec.graphql.org/October2021/#EnumValueDefinition).
144
-
145
- The object must be one of the following types:
146
-
147
- * `asString`
148
- * `asObject`
149
-
150
- ### `FieldDefinition`
151
-
152
- Read more about this kind on [spec.graphql.org](https://spec.graphql.org/October2021/#FieldDefinition).
153
-
154
- The object must be one of the following types:
155
-
156
- * `asString`
157
- * `asObject`
158
-
159
- ### `FragmentDefinition`
160
-
161
- Read more about this kind on [spec.graphql.org](https://spec.graphql.org/October2021/#FragmentDefinition).
162
-
163
- The object must be one of the following types:
164
-
165
- * `asString`
166
- * `asObject`
167
-
168
- ### `InputObjectTypeDefinition`
169
-
170
- Read more about this kind on [spec.graphql.org](https://spec.graphql.org/October2021/#InputObjectTypeDefinition).
171
-
172
- The object must be one of the following types:
173
-
174
- * `asString`
175
- * `asObject`
176
-
177
- ### `InputValueDefinition`
178
-
179
- Read more about this kind on [spec.graphql.org](https://spec.graphql.org/October2021/#InputValueDefinition).
180
-
181
- The object must be one of the following types:
182
-
183
- * `asString`
184
- * `asObject`
185
-
186
- ### `InterfaceTypeDefinition`
187
-
188
- Read more about this kind on [spec.graphql.org](https://spec.graphql.org/October2021/#InterfaceTypeDefinition).
189
-
190
- The object must be one of the following types:
191
-
192
- * `asString`
193
- * `asObject`
194
-
195
- ### `ObjectTypeDefinition`
196
-
197
- Read more about this kind on [spec.graphql.org](https://spec.graphql.org/October2021/#ObjectTypeDefinition).
198
-
199
- The object must be one of the following types:
200
-
201
- * `asString`
202
- * `asObject`
203
-
204
- ### `OperationDefinition`
205
-
206
- Read more about this kind on [spec.graphql.org](https://spec.graphql.org/October2021/#OperationDefinition).
207
-
208
- The object must be one of the following types:
209
-
210
- * `asString`
211
- * `asObject`
212
-
213
- ### `ScalarTypeDefinition`
214
-
215
- Read more about this kind on [spec.graphql.org](https://spec.graphql.org/October2021/#ScalarTypeDefinition).
216
-
217
- The object must be one of the following types:
218
-
219
- * `asString`
220
- * `asObject`
221
-
222
- ### `UnionTypeDefinition`
223
-
224
- Read more about this kind on [spec.graphql.org](https://spec.graphql.org/October2021/#UnionTypeDefinition).
225
-
226
- The object must be one of the following types:
227
-
228
- * `asString`
229
- * `asObject`
230
-
231
- ### `VariableDefinition`
232
-
233
- Read more about this kind on [spec.graphql.org](https://spec.graphql.org/October2021/#VariableDefinition).
234
-
235
- The object must be one of the following types:
236
-
237
- * `asString`
238
- * `asObject`
239
-
240
- ### `allowLeadingUnderscore` (boolean)
241
-
242
- Default: `false`
243
-
244
- ### `allowTrailingUnderscore` (boolean)
245
-
246
- Default: `false`
247
-
248
- ---
249
-
250
- # Sub Schemas
251
-
252
- The schema defines the following additional types:
253
-
254
- ## `asString` (enum)
255
-
256
- One of: `camelCase`, `PascalCase`, `snake_case`, `UPPER_CASE`
257
-
258
- ## `asObject` (object)
259
-
260
- Properties of the `asObject` object:
261
-
262
- ### `style` (enum)
263
-
264
- This element must be one of the following enum values:
265
-
266
- - `camelCase`
267
- - `PascalCase`
268
- - `snake_case`
269
- - `UPPER_CASE`
270
-
271
- ### `prefix` (string)
272
-
273
- ### `suffix` (string)
274
-
275
- ### `forbiddenPrefixes` (array)
276
-
277
- The object is an array with all elements of the type `string`.
278
-
279
- Additional restrictions:
280
-
281
- * Minimum items: `1`
282
- * Unique items: `true`
283
-
284
- ### `forbiddenSuffixes` (array)
285
-
286
- The object is an array with all elements of the type `string`.
287
-
288
- Additional restrictions:
289
-
290
- * Minimum items: `1`
291
- * Unique items: `true`
292
-
293
- ### `ignorePattern` (string)
294
-
295
- Option to skip validation of some words, e.g. acronyms
296
-
297
- ## Resources
298
-
299
- - [Rule source](../../packages/plugin/src/rules/naming-convention.ts)
300
- - [Test source](../../packages/plugin/tests/naming-convention.spec.ts)
@@ -1,39 +0,0 @@
1
- # `no-anonymous-operations`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file enables this rule.
4
-
5
- 💡 This rule provides [suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions)
6
-
7
- - Category: `Operations`
8
- - Rule name: `@graphql-eslint/no-anonymous-operations`
9
- - Requires GraphQL Schema: `false` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
10
- - Requires GraphQL Operations: `false` [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
11
-
12
- Require name for your GraphQL operations. This is useful since most GraphQL client libraries are using the operation name for caching purposes.
13
-
14
- ## Usage Examples
15
-
16
- ### Incorrect
17
-
18
- ```graphql
19
- # eslint @graphql-eslint/no-anonymous-operations: 'error'
20
-
21
- query {
22
- # ...
23
- }
24
- ```
25
-
26
- ### Correct
27
-
28
- ```graphql
29
- # eslint @graphql-eslint/no-anonymous-operations: 'error'
30
-
31
- query user {
32
- # ...
33
- }
34
- ```
35
-
36
- ## Resources
37
-
38
- - [Rule source](../../packages/plugin/src/rules/no-anonymous-operations.ts)
39
- - [Test source](../../packages/plugin/tests/no-anonymous-operations.spec.ts)
@@ -1,43 +0,0 @@
1
- # `no-case-insensitive-enum-values-duplicates`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/schema-recommended"` property in a configuration file enables this rule.
4
-
5
- 💡 This rule provides [suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions)
6
-
7
- - Category: `Schema`
8
- - Rule name: `@graphql-eslint/no-case-insensitive-enum-values-duplicates`
9
- - Requires GraphQL Schema: `false` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
10
- - Requires GraphQL Operations: `false` [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
11
-
12
- Disallow case-insensitive enum values duplicates.
13
-
14
- ## Usage Examples
15
-
16
- ### Incorrect
17
-
18
- ```graphql
19
- # eslint @graphql-eslint/no-case-insensitive-enum-values-duplicates: 'error'
20
-
21
- enum MyEnum {
22
- Value
23
- VALUE
24
- ValuE
25
- }
26
- ```
27
-
28
- ### Correct
29
-
30
- ```graphql
31
- # eslint @graphql-eslint/no-case-insensitive-enum-values-duplicates: 'error'
32
-
33
- enum MyEnum {
34
- Value1
35
- Value2
36
- Value3
37
- }
38
- ```
39
-
40
- ## Resources
41
-
42
- - [Rule source](../../packages/plugin/src/rules/no-case-insensitive-enum-values-duplicates.ts)
43
- - [Test source](../../packages/plugin/tests/no-case-insensitive-enum-values-duplicates.spec.ts)
@@ -1,85 +0,0 @@
1
- # `no-deprecated`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file enables this rule.
4
-
5
- 💡 This rule provides [suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions)
6
-
7
- - Category: `Operations`
8
- - Rule name: `@graphql-eslint/no-deprecated`
9
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
10
- - Requires GraphQL Operations: `false` [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
11
-
12
- Enforce that deprecated fields or enum values are not in use by operations.
13
-
14
- ## Usage Examples
15
-
16
- ### Incorrect (field)
17
-
18
- ```graphql
19
- # eslint @graphql-eslint/no-deprecated: 'error'
20
-
21
- # In your schema
22
- type User {
23
- id: ID!
24
- name: String! @deprecated(reason: "old field, please use fullName instead")
25
- fullName: String!
26
- }
27
-
28
- # Query
29
- query user {
30
- user {
31
- name # This is deprecated, so you'll get an error
32
- }
33
- }
34
- ```
35
-
36
- ### Incorrect (enum value)
37
-
38
- ```graphql
39
- # eslint @graphql-eslint/no-deprecated: 'error'
40
-
41
- # In your schema
42
- type Mutation {
43
- changeSomething(type: SomeType): Boolean!
44
- }
45
-
46
- enum SomeType {
47
- NEW
48
- OLD @deprecated(reason: "old field, please use NEW instead")
49
- }
50
-
51
- # Mutation
52
- mutation {
53
- changeSomething(
54
- type: OLD # This is deprecated, so you'll get an error
55
- ) {
56
- ...
57
- }
58
- }
59
- ```
60
-
61
- ### Correct
62
-
63
- ```graphql
64
- # eslint @graphql-eslint/no-deprecated: 'error'
65
-
66
- # In your schema
67
- type User {
68
- id: ID!
69
- name: String! @deprecated(reason: "old field, please use fullName instead")
70
- fullName: String!
71
- }
72
-
73
- # Query
74
- query user {
75
- user {
76
- id
77
- fullName
78
- }
79
- }
80
- ```
81
-
82
- ## Resources
83
-
84
- - [Rule source](../../packages/plugin/src/rules/no-deprecated.ts)
85
- - [Test source](../../packages/plugin/tests/no-deprecated.spec.ts)
@@ -1,65 +0,0 @@
1
- # `no-duplicate-fields`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file enables this rule.
4
-
5
- 💡 This rule provides [suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions)
6
-
7
- - Category: `Operations`
8
- - Rule name: `@graphql-eslint/no-duplicate-fields`
9
- - Requires GraphQL Schema: `false` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
10
- - Requires GraphQL Operations: `false` [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
11
-
12
- Checks for duplicate fields in selection set, variables in operation definition, or in arguments set of a field.
13
-
14
- ## Usage Examples
15
-
16
- ### Incorrect
17
-
18
- ```graphql
19
- # eslint @graphql-eslint/no-duplicate-fields: 'error'
20
-
21
- query {
22
- user {
23
- name
24
- email
25
- name # duplicate field
26
- }
27
- }
28
- ```
29
-
30
- ### Incorrect
31
-
32
- ```graphql
33
- # eslint @graphql-eslint/no-duplicate-fields: 'error'
34
-
35
- query {
36
- users(
37
- first: 100
38
- skip: 50
39
- after: "cji629tngfgou0b73kt7vi5jo"
40
- first: 100 # duplicate argument
41
- ) {
42
- id
43
- }
44
- }
45
- ```
46
-
47
- ### Incorrect
48
-
49
- ```graphql
50
- # eslint @graphql-eslint/no-duplicate-fields: 'error'
51
-
52
- query (
53
- $first: Int!
54
- $first: Int! # duplicate variable
55
- ) {
56
- users(first: $first, skip: 50) {
57
- id
58
- }
59
- }
60
- ```
61
-
62
- ## Resources
63
-
64
- - [Rule source](../../packages/plugin/src/rules/no-duplicate-fields.ts)
65
- - [Test source](../../packages/plugin/tests/no-duplicate-fields.spec.ts)
@@ -1,17 +0,0 @@
1
- # `no-fragment-cycles`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file enables this rule.
4
-
5
- - Category: `Operations`
6
- - Rule name: `@graphql-eslint/no-fragment-cycles`
7
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
8
- - Requires GraphQL Operations: `false` [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
9
-
10
- A GraphQL fragment is only valid when it does not have cycles in fragments usage.
11
-
12
- > This rule is a wrapper around a `graphql-js` validation function.
13
-
14
- ## Resources
15
-
16
- - [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/NoFragmentCyclesRule.ts)
17
- - [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/NoFragmentCyclesRule-test.ts)