@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,55 +0,0 @@
1
- # `no-root-type`
2
-
3
- 💡 This rule provides
4
- [suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions)
5
-
6
- - Category: `Schema`
7
- - Rule name: `@graphql-eslint/no-root-type`
8
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
9
- - Requires GraphQL Operations: `false`
10
- [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
11
-
12
- Disallow using root types `mutation` and/or `subscription`.
13
-
14
- ## Usage Examples
15
-
16
- ### Incorrect
17
-
18
- ```graphql
19
- # eslint @graphql-eslint/no-root-type: ['error', { disallow: ['mutation', 'subscription'] }]
20
-
21
- type Mutation {
22
- createUser(input: CreateUserInput!): User!
23
- }
24
- ```
25
-
26
- ### Correct
27
-
28
- ```graphql
29
- # eslint @graphql-eslint/no-root-type: ['error', { disallow: ['mutation', 'subscription'] }]
30
-
31
- type Query {
32
- users: [User!]!
33
- }
34
- ```
35
-
36
- ## Config Schema
37
-
38
- The schema defines the following properties:
39
-
40
- ### `disallow` (array, required)
41
-
42
- The elements of the array can contain the following enum values:
43
-
44
- - `mutation`
45
- - `subscription`
46
-
47
- Additional restrictions:
48
-
49
- - Minimum items: `1`
50
- - Unique items: `true`
51
-
52
- ## Resources
53
-
54
- - [Rule source](../../packages/plugin/src/rules/no-root-type.ts)
55
- - [Test source](../../packages/plugin/tests/no-root-type.spec.ts)
@@ -1,39 +0,0 @@
1
- # `no-scalar-result-type-on-mutation`
2
-
3
- 💡 This rule provides
4
- [suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions)
5
-
6
- - Category: `Schema`
7
- - Rule name: `@graphql-eslint/no-scalar-result-type-on-mutation`
8
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
9
- - Requires GraphQL Operations: `false`
10
- [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
11
-
12
- Avoid scalar result type on mutation type to make sure to return a valid state.
13
-
14
- ## Usage Examples
15
-
16
- ### Incorrect
17
-
18
- ```graphql
19
- # eslint @graphql-eslint/no-scalar-result-type-on-mutation: 'error'
20
-
21
- type Mutation {
22
- createUser: Boolean
23
- }
24
- ```
25
-
26
- ### Correct
27
-
28
- ```graphql
29
- # eslint @graphql-eslint/no-scalar-result-type-on-mutation: 'error'
30
-
31
- type Mutation {
32
- createUser: User!
33
- }
34
- ```
35
-
36
- ## Resources
37
-
38
- - [Rule source](../../packages/plugin/src/rules/no-scalar-result-type-on-mutation.ts)
39
- - [Test source](../../packages/plugin/tests/no-scalar-result-type-on-mutation.spec.ts)
@@ -1,42 +0,0 @@
1
- # `no-typename-prefix`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/schema-recommended"` property in a configuration file
4
- enables this rule.
5
-
6
- 💡 This rule provides
7
- [suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions)
8
-
9
- - Category: `Schema`
10
- - Rule name: `@graphql-eslint/no-typename-prefix`
11
- - Requires GraphQL Schema: `false` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
12
- - Requires GraphQL Operations: `false`
13
- [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
14
-
15
- Enforces users to avoid using the type name in a field name while defining your schema.
16
-
17
- ## Usage Examples
18
-
19
- ### Incorrect
20
-
21
- ```graphql
22
- # eslint @graphql-eslint/no-typename-prefix: 'error'
23
-
24
- type User {
25
- userId: ID!
26
- }
27
- ```
28
-
29
- ### Correct
30
-
31
- ```graphql
32
- # eslint @graphql-eslint/no-typename-prefix: 'error'
33
-
34
- type User {
35
- id: ID!
36
- }
37
- ```
38
-
39
- ## Resources
40
-
41
- - [Rule source](../../packages/plugin/src/rules/no-typename-prefix.ts)
42
- - [Test source](../../packages/plugin/tests/no-typename-prefix.spec.ts)
@@ -1,20 +0,0 @@
1
- # `no-undefined-variables`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file
4
- enables this rule.
5
-
6
- - Category: `Operations`
7
- - Rule name: `@graphql-eslint/no-undefined-variables`
8
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
9
- - Requires GraphQL Operations: `true`
10
- [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
11
-
12
- A GraphQL operation is only valid if all variables encountered, both directly and via fragment
13
- spreads, are defined by that operation.
14
-
15
- > This rule is a wrapper around a `graphql-js` validation function.
16
-
17
- ## Resources
18
-
19
- - [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/NoUndefinedVariablesRule.ts)
20
- - [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/NoUndefinedVariablesRule-test.ts)
@@ -1,52 +0,0 @@
1
- # `no-unreachable-types`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/schema-recommended"` property in a configuration file
4
- enables this rule.
5
-
6
- 💡 This rule provides
7
- [suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions)
8
-
9
- - Category: `Schema`
10
- - Rule name: `@graphql-eslint/no-unreachable-types`
11
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
12
- - Requires GraphQL Operations: `false`
13
- [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
14
-
15
- Requires all types to be reachable at some level by root level fields.
16
-
17
- ## Usage Examples
18
-
19
- ### Incorrect
20
-
21
- ```graphql
22
- # eslint @graphql-eslint/no-unreachable-types: 'error'
23
-
24
- type User {
25
- id: ID!
26
- name: String
27
- }
28
-
29
- type Query {
30
- me: String
31
- }
32
- ```
33
-
34
- ### Correct
35
-
36
- ```graphql
37
- # eslint @graphql-eslint/no-unreachable-types: 'error'
38
-
39
- type User {
40
- id: ID!
41
- name: String
42
- }
43
-
44
- type Query {
45
- me: User
46
- }
47
- ```
48
-
49
- ## Resources
50
-
51
- - [Rule source](../../packages/plugin/src/rules/no-unreachable-types.ts)
52
- - [Test source](../../packages/plugin/tests/no-unreachable-types.spec.ts)
@@ -1,64 +0,0 @@
1
- # `no-unused-fields`
2
-
3
- 💡 This rule provides
4
- [suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions)
5
-
6
- - Category: `Schema`
7
- - Rule name: `@graphql-eslint/no-unused-fields`
8
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
9
- - Requires GraphQL Operations: `true`
10
- [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
11
-
12
- Requires all fields to be used at some level by siblings operations.
13
-
14
- ## Usage Examples
15
-
16
- ### Incorrect
17
-
18
- ```graphql
19
- # eslint @graphql-eslint/no-unused-fields: 'error'
20
-
21
- type User {
22
- id: ID!
23
- name: String
24
- someUnusedField: String
25
- }
26
-
27
- type Query {
28
- me: User
29
- }
30
-
31
- query {
32
- me {
33
- id
34
- name
35
- }
36
- }
37
- ```
38
-
39
- ### Correct
40
-
41
- ```graphql
42
- # eslint @graphql-eslint/no-unused-fields: 'error'
43
-
44
- type User {
45
- id: ID!
46
- name: String
47
- }
48
-
49
- type Query {
50
- me: User
51
- }
52
-
53
- query {
54
- me {
55
- id
56
- name
57
- }
58
- }
59
- ```
60
-
61
- ## Resources
62
-
63
- - [Rule source](../../packages/plugin/src/rules/no-unused-fields.ts)
64
- - [Test source](../../packages/plugin/tests/no-unused-fields.spec.ts)
@@ -1,20 +0,0 @@
1
- # `no-unused-fragments`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file
4
- enables this rule.
5
-
6
- - Category: `Operations`
7
- - Rule name: `@graphql-eslint/no-unused-fragments`
8
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
9
- - Requires GraphQL Operations: `true`
10
- [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
11
-
12
- A GraphQL document is only valid if all fragment definitions are spread within operations, or spread
13
- within other fragments spread within operations.
14
-
15
- > This rule is a wrapper around a `graphql-js` validation function.
16
-
17
- ## Resources
18
-
19
- - [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/NoUnusedFragmentsRule.ts)
20
- - [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/NoUnusedFragmentsRule-test.ts)
@@ -1,20 +0,0 @@
1
- # `no-unused-variables`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file
4
- enables this rule.
5
-
6
- - Category: `Operations`
7
- - Rule name: `@graphql-eslint/no-unused-variables`
8
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
9
- - Requires GraphQL Operations: `true`
10
- [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
11
-
12
- A GraphQL operation is only valid if all variables defined by an operation are used, either directly
13
- or within a spread fragment.
14
-
15
- > This rule is a wrapper around a `graphql-js` validation function.
16
-
17
- ## Resources
18
-
19
- - [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/NoUnusedVariablesRule.ts)
20
- - [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/NoUnusedVariablesRule-test.ts)
@@ -1,19 +0,0 @@
1
- # `one-field-subscriptions`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file
4
- enables this rule.
5
-
6
- - Category: `Operations`
7
- - Rule name: `@graphql-eslint/one-field-subscriptions`
8
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
9
- - Requires GraphQL Operations: `false`
10
- [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
11
-
12
- A GraphQL subscription is valid only if it contains a single root field.
13
-
14
- > This rule is a wrapper around a `graphql-js` validation function.
15
-
16
- ## Resources
17
-
18
- - [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/SingleFieldSubscriptionsRule.ts)
19
- - [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/SingleFieldSubscriptionsRule-test.ts)
@@ -1,20 +0,0 @@
1
- # `overlapping-fields-can-be-merged`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file
4
- enables this rule.
5
-
6
- - Category: `Operations`
7
- - Rule name: `@graphql-eslint/overlapping-fields-can-be-merged`
8
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
9
- - Requires GraphQL Operations: `false`
10
- [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
11
-
12
- A selection set is only valid if all fields (including spreading any fragments) either correspond to
13
- distinct response names or can be merged without ambiguity.
14
-
15
- > This rule is a wrapper around a `graphql-js` validation function.
16
-
17
- ## Resources
18
-
19
- - [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/OverlappingFieldsCanBeMergedRule.ts)
20
- - [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/OverlappingFieldsCanBeMergedRule-test.ts)
@@ -1,21 +0,0 @@
1
- # `possible-fragment-spread`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file
4
- enables this rule.
5
-
6
- - Category: `Operations`
7
- - Rule name: `@graphql-eslint/possible-fragment-spread`
8
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
9
- - Requires GraphQL Operations: `false`
10
- [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
11
-
12
- A fragment spread is only valid if the type condition could ever possibly be true: if there is a
13
- non-empty intersection of the possible parent types, and possible types which pass the type
14
- condition.
15
-
16
- > This rule is a wrapper around a `graphql-js` validation function.
17
-
18
- ## Resources
19
-
20
- - [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/PossibleFragmentSpreadsRule.ts)
21
- - [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/PossibleFragmentSpreadsRule-test.ts)
@@ -1,19 +0,0 @@
1
- # `possible-type-extension`
2
-
3
- 💡 This rule provides
4
- [suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions)
5
-
6
- - Category: `Schema`
7
- - Rule name: `@graphql-eslint/possible-type-extension`
8
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
9
- - Requires GraphQL Operations: `false`
10
- [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
11
-
12
- A type extension is only valid if the type is defined and has the same kind.
13
-
14
- > This rule is a wrapper around a `graphql-js` validation function.
15
-
16
- ## Resources
17
-
18
- - [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/PossibleTypeExtensionsRule.ts)
19
- - [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/PossibleTypeExtensionsRule-test.ts)
@@ -1,21 +0,0 @@
1
- # `provided-required-arguments`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/schema-recommended"` and
4
- `"plugin:@graphql-eslint/operations-recommended"` property in a configuration file enables this
5
- rule.
6
-
7
- - Category: `Schema & Operations`
8
- - Rule name: `@graphql-eslint/provided-required-arguments`
9
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
10
- - Requires GraphQL Operations: `false`
11
- [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
12
-
13
- A field or directive is only valid if all required (non-null without a default value) field
14
- arguments have been provided.
15
-
16
- > This rule is a wrapper around a `graphql-js` validation function.
17
-
18
- ## Resources
19
-
20
- - [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/ProvidedRequiredArgumentsRule.ts)
21
- - [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/ProvidedRequiredArgumentsRule-test.ts)
@@ -1,59 +0,0 @@
1
- # `relay-arguments`
2
-
3
- - Category: `Schema`
4
- - Rule name: `@graphql-eslint/relay-arguments`
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
- Set of rules to follow Relay specification for Arguments.
10
-
11
- - A field that returns a Connection type must include forward pagination arguments (`first` and
12
- `after`), backward pagination arguments (`last` and `before`), or both
13
-
14
- Forward pagination arguments
15
-
16
- - `first` takes a non-negative integer
17
- - `after` takes the Cursor type
18
-
19
- Backward pagination arguments
20
-
21
- - `last` takes a non-negative integer
22
- - `before` takes the Cursor type
23
-
24
- ## Usage Examples
25
-
26
- ### Incorrect
27
-
28
- ```graphql
29
- # eslint @graphql-eslint/relay-arguments: 'error'
30
-
31
- type User {
32
- posts: PostConnection
33
- }
34
- ```
35
-
36
- ### Correct
37
-
38
- ```graphql
39
- # eslint @graphql-eslint/relay-arguments: 'error'
40
-
41
- type User {
42
- posts(after: String, first: Int, before: String, last: Int): PostConnection
43
- }
44
- ```
45
-
46
- ## Config Schema
47
-
48
- The schema defines the following properties:
49
-
50
- ### `includeBoth` (boolean)
51
-
52
- Enforce including both forward and backward pagination arguments
53
-
54
- Default: `true`
55
-
56
- ## Resources
57
-
58
- - [Rule source](../../packages/plugin/src/rules/relay-arguments.ts)
59
- - [Test source](../../packages/plugin/tests/relay-arguments.spec.ts)
@@ -1,43 +0,0 @@
1
- # `relay-connection-types`
2
-
3
- - Category: `Schema`
4
- - Rule name: `@graphql-eslint/relay-connection-types`
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
- Set of rules to follow Relay specification for Connection types.
10
-
11
- - Any type whose name ends in "Connection" is considered by spec to be a `Connection type`
12
- - Connection type must be an Object type
13
- - Connection type must contain a field `edges` that return a list type that wraps an edge type
14
- - Connection type must contain a field `pageInfo` that return a non-null `PageInfo` Object type
15
-
16
- ## Usage Examples
17
-
18
- ### Incorrect
19
-
20
- ```graphql
21
- # eslint @graphql-eslint/relay-connection-types: 'error'
22
-
23
- type UserPayload { # should be an Object type with `Connection` suffix
24
- edges: UserEdge! # should return a list type
25
- pageInfo: PageInfo # should return a non-null `PageInfo` Object type
26
- }
27
- ```
28
-
29
- ### Correct
30
-
31
- ```graphql
32
- # eslint @graphql-eslint/relay-connection-types: 'error'
33
-
34
- type UserConnection {
35
- edges: [UserEdge]
36
- pageInfo: PageInfo!
37
- }
38
- ```
39
-
40
- ## Resources
41
-
42
- - [Rule source](../../packages/plugin/src/rules/relay-connection-types.ts)
43
- - [Test source](../../packages/plugin/tests/relay-connection-types.spec.ts)
@@ -1,60 +0,0 @@
1
- # `relay-edge-types`
2
-
3
- - Category: `Schema`
4
- - Rule name: `@graphql-eslint/relay-edge-types`
5
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
6
- - Requires GraphQL Operations: `false`
7
- [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
8
-
9
- Set of rules to follow Relay specification for Edge types.
10
-
11
- - A type that is returned in list form by a connection type's `edges` field is considered by this
12
- spec to be an Edge type
13
- - Edge type must be an Object type
14
- - Edge type must contain a field `node` that return either Scalar, Enum, Object, Interface, Union,
15
- or a non-null wrapper around one of those types. Notably, this field cannot return a list
16
- - Edge type must contain a field `cursor` that return either String, Scalar, or a non-null wrapper
17
- around one of those types
18
- - Edge type name must end in "Edge" _(optional)_
19
- - Edge type's field `node` must implement `Node` interface _(optional)_
20
- - A list type should only wrap an edge type _(optional)_
21
-
22
- ## Usage Examples
23
-
24
- ### Correct
25
-
26
- ```graphql
27
- # eslint @graphql-eslint/relay-edge-types: 'error'
28
-
29
- type UserConnection {
30
- edges: [UserEdge]
31
- pageInfo: PageInfo!
32
- }
33
- ```
34
-
35
- ## Config Schema
36
-
37
- The schema defines the following properties:
38
-
39
- ### `withEdgeSuffix` (boolean)
40
-
41
- Edge type name must end in "Edge".
42
-
43
- Default: `true`
44
-
45
- ### `shouldImplementNode` (boolean)
46
-
47
- Edge type's field `node` must implement `Node` interface.
48
-
49
- Default: `true`
50
-
51
- ### `listTypeCanWrapOnlyEdgeType` (boolean)
52
-
53
- A list type should only wrap an edge type.
54
-
55
- Default: `true`
56
-
57
- ## Resources
58
-
59
- - [Rule source](../../packages/plugin/src/rules/relay-edge-types.ts)
60
- - [Test source](../../packages/plugin/tests/relay-edge-types.spec.ts)
@@ -1,34 +0,0 @@
1
- # `relay-page-info`
2
-
3
- - Category: `Schema`
4
- - Rule name: `@graphql-eslint/relay-page-info`
5
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
6
- - Requires GraphQL Operations: `false`
7
- [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
8
-
9
- Set of rules to follow Relay specification for `PageInfo` object.
10
-
11
- - `PageInfo` must be an Object type
12
- - `PageInfo` must contain fields `hasPreviousPage` and `hasNextPage`, that return non-null Boolean
13
- - `PageInfo` must contain fields `startCursor` and `endCursor`, that return either String or Scalar,
14
- which can be null if there are no results
15
-
16
- ## Usage Examples
17
-
18
- ### Correct
19
-
20
- ```graphql
21
- # eslint @graphql-eslint/relay-page-info: 'error'
22
-
23
- type PageInfo {
24
- hasPreviousPage: Boolean!
25
- hasNextPage: Boolean!
26
- startCursor: String
27
- endCursor: String
28
- }
29
- ```
30
-
31
- ## Resources
32
-
33
- - [Rule source](../../packages/plugin/src/rules/relay-page-info.ts)
34
- - [Test source](../../packages/plugin/tests/relay-page-info.spec.ts)
@@ -1,59 +0,0 @@
1
- # `require-deprecation-date`
2
-
3
- 💡 This rule provides
4
- [suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions)
5
-
6
- - Category: `Schema`
7
- - Rule name: `@graphql-eslint/require-deprecation-date`
8
- - Requires GraphQL Schema: `false` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
9
- - Requires GraphQL Operations: `false`
10
- [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
11
-
12
- Require deletion date on `@deprecated` directive. Suggest removing deprecated things after
13
- deprecated date.
14
-
15
- ## Usage Examples
16
-
17
- ### Incorrect
18
-
19
- ```graphql
20
- # eslint @graphql-eslint/require-deprecation-date: 'error'
21
-
22
- type User {
23
- firstname: String @deprecated
24
- firstName: String
25
- }
26
- ```
27
-
28
- ### Incorrect
29
-
30
- ```graphql
31
- # eslint @graphql-eslint/require-deprecation-date: 'error'
32
-
33
- type User {
34
- firstname: String @deprecated(reason: "Use 'firstName' instead")
35
- firstName: String
36
- }
37
- ```
38
-
39
- ### Correct
40
-
41
- ```graphql
42
- # eslint @graphql-eslint/require-deprecation-date: 'error'
43
-
44
- type User {
45
- firstname: String @deprecated(reason: "Use 'firstName' instead", deletionDate: "25/12/2022")
46
- firstName: String
47
- }
48
- ```
49
-
50
- ## Config Schema
51
-
52
- The schema defines the following properties:
53
-
54
- ### `argumentName` (string)
55
-
56
- ## Resources
57
-
58
- - [Rule source](../../packages/plugin/src/rules/require-deprecation-date.ts)
59
- - [Test source](../../packages/plugin/tests/require-deprecation-date.spec.ts)