@graphql-eslint/eslint-plugin 3.14.4-alpha-20230111223410-a558ee8 → 3.14.4-alpha-20230111225618-8aa3b07

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