@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,181 +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`
7
- [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
8
-
9
- This rule allows you to enforce that the file name should match the operation name.
10
-
11
- ## Usage Examples
12
-
13
- ### Correct
14
-
15
- ```graphql
16
- # eslint @graphql-eslint/match-document-filename: ['error', { fileExtension: '.gql' }]
17
-
18
- # user.gql
19
- type User {
20
- id: ID!
21
- }
22
- ```
23
-
24
- ### Correct
25
-
26
- ```graphql
27
- # eslint @graphql-eslint/match-document-filename: ['error', { query: 'snake_case' }]
28
-
29
- # user_by_id.gql
30
- query UserById {
31
- userById(id: 5) {
32
- id
33
- name
34
- fullName
35
- }
36
- }
37
- ```
38
-
39
- ### Correct
40
-
41
- ```graphql
42
- # eslint @graphql-eslint/match-document-filename: ['error', { fragment: { style: 'kebab-case', suffix: '.fragment' } }]
43
-
44
- # user-fields.fragment.gql
45
- fragment user_fields on User {
46
- id
47
- email
48
- }
49
- ```
50
-
51
- ### Correct
52
-
53
- ```graphql
54
- # eslint @graphql-eslint/match-document-filename: ['error', { mutation: { style: 'PascalCase', suffix: 'Mutation' } }]
55
-
56
- # DeleteUserMutation.gql
57
- mutation DELETE_USER {
58
- deleteUser(id: 5)
59
- }
60
- ```
61
-
62
- ### Incorrect
63
-
64
- ```graphql
65
- # eslint @graphql-eslint/match-document-filename: ['error', { fileExtension: '.graphql' }]
66
-
67
- # post.gql
68
- type Post {
69
- id: ID!
70
- }
71
- ```
72
-
73
- ### Incorrect
74
-
75
- ```graphql
76
- # eslint @graphql-eslint/match-document-filename: ['error', { query: 'PascalCase' }]
77
-
78
- # user-by-id.gql
79
- query UserById {
80
- userById(id: 5) {
81
- id
82
- name
83
- fullName
84
- }
85
- }
86
- ```
87
-
88
- ### Correct
89
-
90
- ```graphql
91
- # eslint @graphql-eslint/match-document-filename: ['error', { fragment: { style: 'kebab-case', prefix: 'mutation.' } }]
92
-
93
- # mutation.add-alert.graphql
94
- mutation addAlert {
95
- foo
96
- }
97
- ```
98
-
99
- ### Correct
100
-
101
- ```graphql
102
- # eslint @graphql-eslint/match-document-filename: ['error', { fragment: { prefix: 'query.' } }]
103
-
104
- # query.me.graphql
105
- query me {
106
- foo
107
- }
108
- ```
109
-
110
- ## Config Schema
111
-
112
- The schema defines the following properties:
113
-
114
- ### `fileExtension` (enum)
115
-
116
- This element must be one of the following enum values:
117
-
118
- - `.gql`
119
- - `.graphql`
120
-
121
- ### `query`
122
-
123
- The object must be one of the following types:
124
-
125
- - `asString`
126
- - `asObject`
127
-
128
- ### `mutation`
129
-
130
- The object must be one of the following types:
131
-
132
- - `asString`
133
- - `asObject`
134
-
135
- ### `subscription`
136
-
137
- The object must be one of the following types:
138
-
139
- - `asString`
140
- - `asObject`
141
-
142
- ### `fragment`
143
-
144
- The object must be one of the following types:
145
-
146
- - `asString`
147
- - `asObject`
148
-
149
- ---
150
-
151
- # Sub Schemas
152
-
153
- The schema defines the following additional types:
154
-
155
- ## `asString` (enum)
156
-
157
- One of: `camelCase`, `PascalCase`, `snake_case`, `UPPER_CASE`, `kebab-case`, `matchDocumentStyle`
158
-
159
- ## `asObject` (object)
160
-
161
- Properties of the `asObject` object:
162
-
163
- ### `style` (enum)
164
-
165
- This element must be one of the following enum values:
166
-
167
- - `camelCase`
168
- - `PascalCase`
169
- - `snake_case`
170
- - `UPPER_CASE`
171
- - `kebab-case`
172
- - `matchDocumentStyle`
173
-
174
- ### `suffix` (string)
175
-
176
- ### `prefix` (string)
177
-
178
- ## Resources
179
-
180
- - [Rule source](../../packages/plugin/src/rules/match-document-filename.ts)
181
- - [Test source](../../packages/plugin/tests/match-document-filename.spec.ts)
@@ -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)