@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.
- package/package.json +2 -2
- package/README.md +0 -266
- package/docs/README.md +0 -76
- package/docs/custom-rules.md +0 -148
- package/docs/deprecated-rules.md +0 -21
- package/docs/parser-options.md +0 -85
- package/docs/parser.md +0 -49
- package/docs/rules/alphabetize.md +0 -178
- package/docs/rules/description-style.md +0 -54
- package/docs/rules/executable-definitions.md +0 -17
- package/docs/rules/fields-on-correct-type.md +0 -17
- package/docs/rules/fragments-on-composite-type.md +0 -17
- package/docs/rules/input-name.md +0 -76
- package/docs/rules/known-argument-names.md +0 -17
- package/docs/rules/known-directives.md +0 -44
- package/docs/rules/known-fragment-names.md +0 -69
- package/docs/rules/known-type-names.md +0 -17
- package/docs/rules/lone-anonymous-operation.md +0 -17
- package/docs/rules/lone-schema-definition.md +0 -17
- package/docs/rules/match-document-filename.md +0 -156
- package/docs/rules/naming-convention.md +0 -300
- package/docs/rules/no-anonymous-operations.md +0 -39
- package/docs/rules/no-case-insensitive-enum-values-duplicates.md +0 -43
- package/docs/rules/no-deprecated.md +0 -85
- package/docs/rules/no-duplicate-fields.md +0 -65
- package/docs/rules/no-fragment-cycles.md +0 -17
- package/docs/rules/no-hashtag-description.md +0 -59
- package/docs/rules/no-root-type.md +0 -53
- package/docs/rules/no-scalar-result-type-on-mutation.md +0 -37
- package/docs/rules/no-typename-prefix.md +0 -39
- package/docs/rules/no-undefined-variables.md +0 -17
- package/docs/rules/no-unreachable-types.md +0 -49
- package/docs/rules/no-unused-fields.md +0 -62
- package/docs/rules/no-unused-fragments.md +0 -17
- package/docs/rules/no-unused-variables.md +0 -17
- package/docs/rules/one-field-subscriptions.md +0 -17
- package/docs/rules/overlapping-fields-can-be-merged.md +0 -17
- package/docs/rules/possible-fragment-spread.md +0 -17
- package/docs/rules/possible-type-extension.md +0 -15
- package/docs/rules/provided-required-arguments.md +0 -17
- package/docs/rules/relay-arguments.md +0 -57
- package/docs/rules/relay-connection-types.md +0 -42
- package/docs/rules/relay-edge-types.md +0 -56
- package/docs/rules/relay-page-info.md +0 -32
- package/docs/rules/require-deprecation-date.md +0 -57
- package/docs/rules/require-deprecation-reason.md +0 -47
- package/docs/rules/require-description.md +0 -115
- package/docs/rules/require-field-of-type-query-in-mutation-result.md +0 -47
- package/docs/rules/require-id-when-available.md +0 -88
- package/docs/rules/scalar-leafs.md +0 -17
- package/docs/rules/selection-set-depth.md +0 -76
- package/docs/rules/strict-id-in-types.md +0 -130
- package/docs/rules/unique-argument-names.md +0 -17
- package/docs/rules/unique-directive-names-per-location.md +0 -17
- package/docs/rules/unique-directive-names.md +0 -17
- package/docs/rules/unique-enum-value-names.md +0 -15
- package/docs/rules/unique-field-definition-names.md +0 -17
- package/docs/rules/unique-fragment-name.md +0 -51
- package/docs/rules/unique-input-field-names.md +0 -17
- package/docs/rules/unique-operation-name.md +0 -55
- package/docs/rules/unique-operation-types.md +0 -17
- package/docs/rules/unique-type-names.md +0 -17
- package/docs/rules/unique-variable-names.md +0 -17
- package/docs/rules/value-literals-of-correct-type.md +0 -17
- package/docs/rules/variables-are-input-types.md +0 -17
- 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)
|