@graphql-eslint/eslint-plugin 4.0.0-alpha-20230801163310-8bc4340 → 4.0.0-alpha-20230810155929-e89edf7

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 (222) hide show
  1. package/README.md +2 -0
  2. package/cjs/cache.js +10 -19
  3. package/cjs/configs/index.d.ts +42 -16
  4. package/cjs/configs/index.js +10 -19
  5. package/cjs/configs/operations-all.d.ts +4 -3
  6. package/cjs/configs/operations-all.js +5 -4
  7. package/cjs/configs/operations-recommended.d.ts +3 -1
  8. package/cjs/configs/operations-recommended.js +3 -1
  9. package/cjs/configs/schema-all.d.ts +6 -1
  10. package/cjs/configs/schema-all.js +5 -2
  11. package/cjs/configs/schema-recommended.d.ts +19 -1
  12. package/cjs/configs/schema-recommended.js +22 -2
  13. package/cjs/documents.js +17 -32
  14. package/cjs/estree-converter/converter.js +14 -27
  15. package/cjs/estree-converter/index.js +4 -7
  16. package/cjs/estree-converter/types.js +3 -5
  17. package/cjs/estree-converter/utils.d.ts +2 -3
  18. package/cjs/estree-converter/utils.js +15 -45
  19. package/cjs/flat-configs.d.ts +59 -12
  20. package/cjs/flat-configs.js +9 -14
  21. package/cjs/graphql-config.d.ts +4 -3
  22. package/cjs/graphql-config.js +23 -44
  23. package/cjs/index.d.ts +10 -4
  24. package/cjs/index.js +8 -16
  25. package/cjs/parser.d.ts +4 -3
  26. package/cjs/parser.js +38 -45
  27. package/cjs/processor.d.ts +5 -1
  28. package/cjs/processor.js +25 -57
  29. package/cjs/rules/alphabetize.d.ts +6 -16
  30. package/cjs/rules/alphabetize.js +60 -132
  31. package/cjs/rules/description-style.d.ts +4 -3
  32. package/cjs/rules/description-style.js +11 -18
  33. package/cjs/rules/graphql-js-validation.d.ts +4 -3
  34. package/cjs/rules/graphql-js-validation.js +151 -225
  35. package/cjs/rules/index.d.ts +15 -13
  36. package/cjs/rules/index.js +8 -45
  37. package/cjs/rules/input-name.d.ts +4 -3
  38. package/cjs/rules/input-name.js +43 -59
  39. package/cjs/rules/lone-executable-definition.d.ts +6 -5
  40. package/cjs/rules/lone-executable-definition.js +14 -28
  41. package/cjs/rules/match-document-filename.d.ts +4 -3
  42. package/cjs/rules/match-document-filename.js +39 -70
  43. package/cjs/rules/naming-convention.d.ts +4 -3
  44. package/cjs/rules/naming-convention.js +56 -74
  45. package/cjs/rules/no-anonymous-operations.d.ts +4 -3
  46. package/cjs/rules/no-anonymous-operations.js +11 -18
  47. package/cjs/rules/no-deprecated.d.ts +4 -3
  48. package/cjs/rules/no-deprecated.js +15 -29
  49. package/cjs/rules/no-duplicate-fields.d.ts +4 -3
  50. package/cjs/rules/no-duplicate-fields.js +13 -23
  51. package/cjs/rules/no-hashtag-description.d.ts +4 -3
  52. package/cjs/rules/no-hashtag-description.js +16 -29
  53. package/cjs/rules/no-one-place-fragments.d.ts +4 -3
  54. package/cjs/rules/no-one-place-fragments.js +17 -29
  55. package/cjs/rules/no-root-type.d.ts +4 -3
  56. package/cjs/rules/no-root-type.js +15 -25
  57. package/cjs/rules/no-scalar-result-type-on-mutation.d.ts +4 -3
  58. package/cjs/rules/no-scalar-result-type-on-mutation.js +18 -30
  59. package/cjs/rules/no-typename-prefix.d.ts +4 -3
  60. package/cjs/rules/no-typename-prefix.js +26 -33
  61. package/cjs/rules/no-unreachable-types.d.ts +4 -3
  62. package/cjs/rules/no-unreachable-types.js +25 -47
  63. package/cjs/rules/no-unused-fields.d.ts +4 -3
  64. package/cjs/rules/no-unused-fields.js +24 -49
  65. package/cjs/rules/relay-arguments.d.ts +4 -3
  66. package/cjs/rules/relay-arguments.js +20 -43
  67. package/cjs/rules/relay-connection-types.d.ts +4 -3
  68. package/cjs/rules/relay-connection-types.js +14 -45
  69. package/cjs/rules/relay-edge-types.d.ts +4 -3
  70. package/cjs/rules/relay-edge-types.js +48 -99
  71. package/cjs/rules/relay-page-info.d.ts +4 -3
  72. package/cjs/rules/relay-page-info.js +21 -44
  73. package/cjs/rules/require-deprecation-date.d.ts +4 -3
  74. package/cjs/rules/require-deprecation-date.js +15 -31
  75. package/cjs/rules/require-deprecation-reason.d.ts +4 -3
  76. package/cjs/rules/require-deprecation-reason.js +12 -20
  77. package/cjs/rules/require-description.d.ts +4 -3
  78. package/cjs/rules/require-description.js +39 -65
  79. package/cjs/rules/require-field-of-type-query-in-mutation-result.d.ts +4 -3
  80. package/cjs/rules/require-field-of-type-query-in-mutation-result.js +16 -31
  81. package/cjs/rules/require-import-fragment.d.ts +4 -3
  82. package/cjs/rules/require-import-fragment.js +22 -40
  83. package/cjs/rules/require-nullable-fields-with-oneof.d.ts +4 -3
  84. package/cjs/rules/require-nullable-fields-with-oneof.js +11 -22
  85. package/cjs/rules/require-nullable-result-in-root.d.ts +4 -3
  86. package/cjs/rules/require-nullable-result-in-root.js +34 -44
  87. package/cjs/rules/{require-id-when-available.d.ts → require-selections.d.ts} +4 -3
  88. package/cjs/rules/require-selections.js +198 -0
  89. package/cjs/rules/require-type-pattern-with-oneof.d.ts +4 -3
  90. package/cjs/rules/require-type-pattern-with-oneof.js +15 -23
  91. package/cjs/rules/selection-set-depth.d.ts +4 -3
  92. package/cjs/rules/selection-set-depth.js +18 -34
  93. package/cjs/rules/strict-id-in-types.d.ts +4 -3
  94. package/cjs/rules/strict-id-in-types.js +25 -43
  95. package/cjs/rules/{no-case-insensitive-enum-values-duplicates.d.ts → unique-enum-value-names.d.ts} +4 -3
  96. package/cjs/rules/{no-case-insensitive-enum-values-duplicates.js → unique-enum-value-names.js} +16 -21
  97. package/cjs/rules/unique-fragment-name.d.ts +3 -2
  98. package/cjs/rules/unique-fragment-name.js +24 -36
  99. package/cjs/rules/unique-operation-name.d.ts +4 -3
  100. package/cjs/rules/unique-operation-name.js +10 -12
  101. package/cjs/schema.d.ts +4 -3
  102. package/cjs/schema.js +14 -27
  103. package/cjs/siblings.d.ts +24 -8
  104. package/cjs/siblings.js +42 -82
  105. package/cjs/types.d.ts +74 -7
  106. package/cjs/types.js +3 -5
  107. package/cjs/utils.d.ts +3 -2
  108. package/cjs/utils.js +27 -44
  109. package/esm/cache.js +4 -8
  110. package/esm/{chunk-BMTV3EA2.js → chunk-U3TKCM4X.js} +1 -1
  111. package/esm/configs/index.d.mts +42 -16
  112. package/esm/configs/index.js +4 -4
  113. package/esm/configs/operations-all.d.mts +4 -3
  114. package/esm/configs/operations-all.js +6 -5
  115. package/esm/configs/operations-recommended.d.mts +3 -1
  116. package/esm/configs/operations-recommended.js +4 -2
  117. package/esm/configs/schema-all.d.mts +6 -1
  118. package/esm/configs/schema-all.js +6 -3
  119. package/esm/configs/schema-recommended.d.mts +19 -1
  120. package/esm/configs/schema-recommended.js +23 -3
  121. package/esm/configs/{relay.js → schema-relay.js} +4 -4
  122. package/esm/documents.js +10 -17
  123. package/esm/estree-converter/converter.js +9 -18
  124. package/esm/estree-converter/utils.d.mts +2 -3
  125. package/esm/estree-converter/utils.js +11 -38
  126. package/esm/flat-configs.d.mts +59 -12
  127. package/esm/flat-configs.js +4 -5
  128. package/esm/graphql-config.d.mts +4 -3
  129. package/esm/graphql-config.js +18 -34
  130. package/esm/index.d.mts +10 -4
  131. package/esm/index.js +1 -1
  132. package/esm/parser.d.mts +4 -3
  133. package/esm/parser.js +33 -27
  134. package/esm/processor.d.mts +5 -1
  135. package/esm/processor.js +21 -46
  136. package/esm/rules/alphabetize.d.mts +6 -16
  137. package/esm/rules/alphabetize.js +53 -118
  138. package/esm/rules/description-style.d.mts +4 -3
  139. package/esm/rules/description-style.js +7 -11
  140. package/esm/rules/graphql-js-validation.d.mts +4 -3
  141. package/esm/rules/graphql-js-validation.js +178 -218
  142. package/esm/rules/index.d.mts +15 -13
  143. package/esm/rules/index.js +5 -5
  144. package/esm/rules/input-name.d.mts +4 -3
  145. package/esm/rules/input-name.js +39 -52
  146. package/esm/rules/lone-executable-definition.d.mts +6 -5
  147. package/esm/rules/lone-executable-definition.js +10 -20
  148. package/esm/rules/match-document-filename.d.mts +4 -3
  149. package/esm/rules/match-document-filename.js +35 -61
  150. package/esm/rules/naming-convention.d.mts +4 -3
  151. package/esm/rules/naming-convention.js +51 -65
  152. package/esm/rules/no-anonymous-operations.d.mts +4 -3
  153. package/esm/rules/no-anonymous-operations.js +6 -9
  154. package/esm/rules/no-deprecated.d.mts +4 -3
  155. package/esm/rules/no-deprecated.js +10 -20
  156. package/esm/rules/no-duplicate-fields.d.mts +4 -3
  157. package/esm/rules/no-duplicate-fields.js +9 -16
  158. package/esm/rules/no-hashtag-description.d.mts +4 -3
  159. package/esm/rules/no-hashtag-description.js +11 -20
  160. package/esm/rules/no-one-place-fragments.d.mts +4 -3
  161. package/esm/rules/no-one-place-fragments.js +12 -19
  162. package/esm/rules/no-root-type.d.mts +4 -3
  163. package/esm/rules/no-root-type.js +11 -18
  164. package/esm/rules/no-scalar-result-type-on-mutation.d.mts +4 -3
  165. package/esm/rules/no-scalar-result-type-on-mutation.js +13 -21
  166. package/esm/rules/no-typename-prefix.d.mts +4 -3
  167. package/esm/rules/no-typename-prefix.js +22 -26
  168. package/esm/rules/no-unreachable-types.d.mts +4 -3
  169. package/esm/rules/no-unreachable-types.js +18 -33
  170. package/esm/rules/no-unused-fields.d.mts +4 -3
  171. package/esm/rules/no-unused-fields.js +19 -40
  172. package/esm/rules/relay-arguments.d.mts +4 -3
  173. package/esm/rules/relay-arguments.js +15 -34
  174. package/esm/rules/relay-connection-types.d.mts +4 -3
  175. package/esm/rules/relay-connection-types.js +10 -38
  176. package/esm/rules/relay-edge-types.d.mts +4 -3
  177. package/esm/rules/relay-edge-types.js +43 -89
  178. package/esm/rules/relay-page-info.d.mts +4 -3
  179. package/esm/rules/relay-page-info.js +16 -34
  180. package/esm/rules/require-deprecation-date.d.mts +4 -3
  181. package/esm/rules/require-deprecation-date.js +10 -22
  182. package/esm/rules/require-deprecation-reason.d.mts +4 -3
  183. package/esm/rules/require-deprecation-reason.js +7 -11
  184. package/esm/rules/require-description.d.mts +4 -3
  185. package/esm/rules/require-description.js +34 -55
  186. package/esm/rules/require-field-of-type-query-in-mutation-result.d.mts +4 -3
  187. package/esm/rules/require-field-of-type-query-in-mutation-result.js +11 -22
  188. package/esm/rules/require-import-fragment.d.mts +4 -3
  189. package/esm/rules/require-import-fragment.js +14 -26
  190. package/esm/rules/require-nullable-fields-with-oneof.d.mts +4 -3
  191. package/esm/rules/require-nullable-fields-with-oneof.js +6 -13
  192. package/esm/rules/require-nullable-result-in-root.d.mts +4 -3
  193. package/esm/rules/require-nullable-result-in-root.js +29 -35
  194. package/esm/rules/{require-id-when-available.d.mts → require-selections.d.mts} +4 -3
  195. package/esm/rules/{require-id-when-available.js → require-selections.js} +43 -80
  196. package/esm/rules/require-type-pattern-with-oneof.d.mts +4 -3
  197. package/esm/rules/require-type-pattern-with-oneof.js +11 -16
  198. package/esm/rules/selection-set-depth.d.mts +4 -3
  199. package/esm/rules/selection-set-depth.js +11 -20
  200. package/esm/rules/strict-id-in-types.d.mts +4 -3
  201. package/esm/rules/strict-id-in-types.js +20 -34
  202. package/esm/rules/{no-case-insensitive-enum-values-duplicates.d.mts → unique-enum-value-names.d.mts} +4 -3
  203. package/esm/rules/{no-case-insensitive-enum-values-duplicates.js → unique-enum-value-names.js} +8 -9
  204. package/esm/rules/unique-fragment-name.d.mts +3 -2
  205. package/esm/rules/unique-fragment-name.js +20 -27
  206. package/esm/rules/unique-operation-name.d.mts +4 -3
  207. package/esm/rules/unique-operation-name.js +6 -5
  208. package/esm/schema.d.mts +4 -3
  209. package/esm/schema.js +7 -12
  210. package/esm/siblings.d.mts +24 -8
  211. package/esm/siblings.js +37 -73
  212. package/esm/types.d.mts +74 -7
  213. package/esm/utils.d.mts +3 -2
  214. package/esm/utils.js +20 -31
  215. package/index.browser.mjs +5323 -0
  216. package/package.json +8 -13
  217. package/cjs/rules/require-id-when-available.js +0 -241
  218. package/cjs/types-8d5f4ae0.d.ts +0 -107
  219. package/esm/types-ace77d86.d.ts +0 -107
  220. /package/cjs/configs/{relay.d.ts → schema-relay.d.ts} +0 -0
  221. /package/cjs/configs/{relay.js → schema-relay.js} +0 -0
  222. /package/esm/configs/{relay.d.mts → schema-relay.d.mts} +0 -0
@@ -1,4 +1,4 @@
1
- import "../chunk-BMTV3EA2.js";
1
+ import "../chunk-U3TKCM4X.js";
2
2
  import { ARRAY_DEFAULT_OPTIONS, requireGraphQLSchemaFromContext, truthy } from "../utils.js";
3
3
  const schema = {
4
4
  type: "array",
@@ -6,7 +6,7 @@ const schema = {
6
6
  maxItems: 1,
7
7
  items: {
8
8
  type: "object",
9
- additionalProperties: false,
9
+ additionalProperties: !1,
10
10
  required: ["disallow"],
11
11
  properties: {
12
12
  disallow: {
@@ -17,17 +17,15 @@ const schema = {
17
17
  }
18
18
  }
19
19
  }
20
- };
21
- const rule = {
20
+ }, rule = {
22
21
  meta: {
23
22
  type: "suggestion",
24
- hasSuggestions: true,
23
+ hasSuggestions: !0,
25
24
  docs: {
26
25
  category: "Schema",
27
26
  description: "Disallow using root types `mutation` and/or `subscription`.",
28
27
  url: "https://the-guild.dev/graphql/eslint/rules/no-root-type",
29
- requiresSchema: true,
30
- isDisabledForAllConfig: true,
28
+ requiresSchema: !0,
31
29
  examples: [
32
30
  {
33
31
  title: "Incorrect",
@@ -53,23 +51,18 @@ const rule = {
53
51
  `
54
52
  )
55
53
  }
56
- ]
54
+ ],
55
+ configOptions: [{ disallow: ["mutation", "subscription"] }]
57
56
  },
58
57
  schema
59
58
  },
60
59
  create(context) {
61
- const schema2 = requireGraphQLSchemaFromContext("no-root-type", context);
62
- const disallow = new Set(context.options[0].disallow);
63
- const rootTypeNames = [
60
+ const schema2 = requireGraphQLSchemaFromContext("no-root-type", context), disallow = new Set(context.options[0].disallow), rootTypeNames = [
64
61
  disallow.has("mutation") && schema2.getMutationType(),
65
62
  disallow.has("subscription") && schema2.getSubscriptionType()
66
63
  ].filter(truthy).map((type) => type.name).join("|");
67
- if (!rootTypeNames) {
68
- return {};
69
- }
70
- const selector = `:matches(ObjectTypeDefinition, ObjectTypeExtension) > .name[value=/^(${rootTypeNames})$/]`;
71
- return {
72
- [selector](node) {
64
+ return rootTypeNames ? {
65
+ [`:matches(ObjectTypeDefinition, ObjectTypeExtension) > .name[value=/^(${rootTypeNames})$/]`](node) {
73
66
  const typeName = node.value;
74
67
  context.report({
75
68
  node,
@@ -82,7 +75,7 @@ const rule = {
82
75
  ]
83
76
  });
84
77
  }
85
- };
78
+ } : {};
86
79
  }
87
80
  };
88
81
  export {
@@ -1,11 +1,12 @@
1
- import { f as GraphQLESLintRule } from '../types-ace77d86.js';
2
- import '@graphql-tools/utils';
1
+ import { GraphQLESLintRule } from '../types.mjs';
3
2
  import 'eslint';
4
3
  import 'estree';
5
4
  import 'graphql';
6
- import 'graphql-config';
7
5
  import 'json-schema-to-ts';
6
+ import '../siblings.mjs';
7
+ import '@graphql-tools/utils';
8
8
  import '../estree-converter/types.mjs';
9
+ import 'graphql-config';
9
10
 
10
11
  declare const rule: GraphQLESLintRule;
11
12
 
@@ -1,16 +1,15 @@
1
- import "../chunk-BMTV3EA2.js";
1
+ import "../chunk-U3TKCM4X.js";
2
2
  import { isScalarType, Kind } from "graphql";
3
3
  import { getNodeName, requireGraphQLSchemaFromContext } from "../utils.js";
4
- const RULE_ID = "no-scalar-result-type-on-mutation";
5
- const rule = {
4
+ const RULE_ID = "no-scalar-result-type-on-mutation", rule = {
6
5
  meta: {
7
6
  type: "suggestion",
8
- hasSuggestions: true,
7
+ hasSuggestions: !0,
9
8
  docs: {
10
9
  category: "Schema",
11
10
  description: "Avoid scalar result type on mutation type to make sure to return a valid state.",
12
11
  url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
13
- requiresSchema: true,
12
+ requiresSchema: !0,
14
13
  examples: [
15
14
  {
16
15
  title: "Incorrect",
@@ -39,24 +38,17 @@ const rule = {
39
38
  schema: []
40
39
  },
41
40
  create(context) {
42
- const schema = requireGraphQLSchemaFromContext(RULE_ID, context);
43
- const mutationType = schema.getMutationType();
44
- if (!mutationType) {
45
- return {};
46
- }
47
- const selector = [
48
- `:matches(ObjectTypeDefinition, ObjectTypeExtension)[name.value=${mutationType.name}]`,
49
- "> FieldDefinition > .gqlType Name"
50
- ].join(" ");
51
- return {
52
- [selector](node) {
53
- const typeName = node.value;
54
- const graphQLType = schema.getType(typeName);
41
+ const schema = requireGraphQLSchemaFromContext(RULE_ID, context), mutationType = schema.getMutationType();
42
+ return mutationType ? {
43
+ [[
44
+ `:matches(ObjectTypeDefinition, ObjectTypeExtension)[name.value=${mutationType.name}]`,
45
+ "> FieldDefinition > .gqlType Name"
46
+ ].join(" ")](node) {
47
+ const typeName = node.value, graphQLType = schema.getType(typeName);
55
48
  if (isScalarType(graphQLType)) {
56
49
  let fieldDef = node.parent;
57
- while (fieldDef.kind !== Kind.FIELD_DEFINITION) {
50
+ for (; fieldDef.kind !== Kind.FIELD_DEFINITION; )
58
51
  fieldDef = fieldDef.parent;
59
- }
60
52
  context.report({
61
53
  node,
62
54
  message: `Unexpected scalar result type \`${typeName}\` for ${getNodeName(fieldDef)}`,
@@ -69,7 +61,7 @@ const rule = {
69
61
  });
70
62
  }
71
63
  }
72
- };
64
+ } : {};
73
65
  }
74
66
  };
75
67
  export {
@@ -1,11 +1,12 @@
1
- import { f as GraphQLESLintRule } from '../types-ace77d86.js';
2
- import '@graphql-tools/utils';
1
+ import { GraphQLESLintRule } from '../types.mjs';
3
2
  import 'eslint';
4
3
  import 'estree';
5
4
  import 'graphql';
6
- import 'graphql-config';
7
5
  import 'json-schema-to-ts';
6
+ import '../siblings.mjs';
7
+ import '@graphql-tools/utils';
8
8
  import '../estree-converter/types.mjs';
9
+ import 'graphql-config';
9
10
 
10
11
  declare const rule: GraphQLESLintRule;
11
12
 
@@ -1,13 +1,12 @@
1
- import "../chunk-BMTV3EA2.js";
2
- const NO_TYPENAME_PREFIX = "NO_TYPENAME_PREFIX";
3
- const rule = {
1
+ import "../chunk-U3TKCM4X.js";
2
+ const NO_TYPENAME_PREFIX = "NO_TYPENAME_PREFIX", rule = {
4
3
  meta: {
5
4
  type: "suggestion",
6
- hasSuggestions: true,
5
+ hasSuggestions: !0,
7
6
  docs: {
8
7
  category: "Schema",
9
8
  description: "Enforces users to avoid using the type name in a field name while defining your schema.",
10
- recommended: true,
9
+ recommended: !0,
11
10
  url: "https://the-guild.dev/graphql/eslint/rules/no-typename-prefix",
12
11
  examples: [
13
12
  {
@@ -42,29 +41,26 @@ const rule = {
42
41
  create(context) {
43
42
  return {
44
43
  "ObjectTypeDefinition, ObjectTypeExtension, InterfaceTypeDefinition, InterfaceTypeExtension"(node) {
45
- const typeName = node.name.value;
46
- const lowerTypeName = typeName.toLowerCase();
44
+ const typeName = node.name.value, lowerTypeName = typeName.toLowerCase();
47
45
  for (const field of node.fields || []) {
48
46
  const fieldName = field.name.value;
49
- if (fieldName.toLowerCase().startsWith(lowerTypeName)) {
50
- context.report({
51
- data: {
52
- fieldName,
53
- typeName
54
- },
55
- messageId: NO_TYPENAME_PREFIX,
56
- node: field.name,
57
- suggest: [
58
- {
59
- desc: `Remove \`${fieldName.slice(0, typeName.length)}\` prefix`,
60
- fix: (fixer) => fixer.replaceText(
61
- field.name,
62
- fieldName.replace(new RegExp(`^${typeName}`, "i"), "")
63
- )
64
- }
65
- ]
66
- });
67
- }
47
+ fieldName.toLowerCase().startsWith(lowerTypeName) && context.report({
48
+ data: {
49
+ fieldName,
50
+ typeName
51
+ },
52
+ messageId: NO_TYPENAME_PREFIX,
53
+ node: field.name,
54
+ suggest: [
55
+ {
56
+ desc: `Remove \`${fieldName.slice(0, typeName.length)}\` prefix`,
57
+ fix: (fixer) => fixer.replaceText(
58
+ field.name,
59
+ fieldName.replace(new RegExp(`^${typeName}`, "i"), "")
60
+ )
61
+ }
62
+ ]
63
+ });
68
64
  }
69
65
  }
70
66
  };
@@ -1,11 +1,12 @@
1
- import { f as GraphQLESLintRule } from '../types-ace77d86.js';
2
- import '@graphql-tools/utils';
1
+ import { GraphQLESLintRule } from '../types.mjs';
3
2
  import 'eslint';
4
3
  import 'estree';
5
4
  import 'graphql';
6
- import 'graphql-config';
7
5
  import 'json-schema-to-ts';
6
+ import '../siblings.mjs';
7
+ import '@graphql-tools/utils';
8
8
  import '../estree-converter/types.mjs';
9
+ import 'graphql-config';
9
10
 
10
11
  declare const rule: GraphQLESLintRule;
11
12
 
@@ -1,4 +1,4 @@
1
- import "../chunk-BMTV3EA2.js";
1
+ import "../chunk-U3TKCM4X.js";
2
2
  import {
3
3
  DirectiveLocation,
4
4
  isInterfaceType,
@@ -7,8 +7,7 @@ import {
7
7
  } from "graphql";
8
8
  import lowerCase from "lodash.lowercase";
9
9
  import { getTypeName, requireGraphQLSchemaFromContext } from "../utils.js";
10
- const RULE_ID = "no-unreachable-types";
11
- const KINDS = [
10
+ const RULE_ID = "no-unreachable-types", KINDS = [
12
11
  Kind.DIRECTIVE_DEFINITION,
13
12
  Kind.OBJECT_TYPE_DEFINITION,
14
13
  Kind.OBJECT_TYPE_EXTENSION,
@@ -35,27 +34,21 @@ const RequestDirectiveLocations = /* @__PURE__ */ new Set([
35
34
  DirectiveLocation.VARIABLE_DEFINITION
36
35
  ]);
37
36
  function getReachableTypes(schema) {
38
- if (reachableTypesCache) {
37
+ if (reachableTypesCache)
39
38
  return reachableTypesCache;
40
- }
41
- const reachableTypes = /* @__PURE__ */ new Set();
42
- const collect = (node) => {
39
+ const reachableTypes = /* @__PURE__ */ new Set(), collect = (node) => {
43
40
  const typeName = getTypeName(node);
44
- if (reachableTypes.has(typeName)) {
41
+ if (reachableTypes.has(typeName))
45
42
  return;
46
- }
47
43
  reachableTypes.add(typeName);
48
44
  const type = schema.getType(typeName) || schema.getDirective(typeName);
49
45
  if (isInterfaceType(type)) {
50
46
  const { objects, interfaces } = schema.getImplementations(type);
51
- for (const { astNode } of [...objects, ...interfaces]) {
47
+ for (const { astNode } of [...objects, ...interfaces])
52
48
  visit(astNode, visitor);
53
- }
54
- } else if (type == null ? void 0 : type.astNode) {
55
- visit(type.astNode, visitor);
56
- }
57
- };
58
- const visitor = {
49
+ } else
50
+ type?.astNode && visit(type.astNode, visitor);
51
+ }, visitor = {
59
52
  InterfaceTypeDefinition: collect,
60
53
  ObjectTypeDefinition: collect,
61
54
  InputValueDefinition: collect,
@@ -70,24 +63,17 @@ function getReachableTypes(schema) {
70
63
  schema.getQueryType(),
71
64
  schema.getMutationType(),
72
65
  schema.getSubscriptionType()
73
- ]) {
74
- if (type == null ? void 0 : type.astNode) {
75
- visit(type.astNode, visitor);
76
- }
77
- }
78
- for (const node of schema.getDirectives()) {
66
+ ])
67
+ type?.astNode && visit(type.astNode, visitor);
68
+ for (const node of schema.getDirectives())
79
69
  if (node.locations.some((location) => RequestDirectiveLocations.has(location))) {
80
70
  reachableTypes.add(node.name);
81
71
  for (const arg of node.args) {
82
72
  const argTypeName = "name" in arg.type && arg.type.name;
83
- if (argTypeName) {
84
- reachableTypes.add(argTypeName);
85
- }
73
+ argTypeName && reachableTypes.add(argTypeName);
86
74
  }
87
75
  }
88
- }
89
- reachableTypesCache = reachableTypes;
90
- return reachableTypesCache;
76
+ return reachableTypesCache = reachableTypes, reachableTypesCache;
91
77
  }
92
78
  const rule = {
93
79
  meta: {
@@ -98,7 +84,7 @@ const rule = {
98
84
  description: "Requires all types to be reachable at some level by root level fields.",
99
85
  category: "Schema",
100
86
  url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
101
- requiresSchema: true,
87
+ requiresSchema: !0,
102
88
  examples: [
103
89
  {
104
90
  title: "Incorrect",
@@ -133,15 +119,14 @@ const rule = {
133
119
  )
134
120
  }
135
121
  ],
136
- recommended: true
122
+ recommended: !0
137
123
  },
138
124
  type: "suggestion",
139
125
  schema: [],
140
- hasSuggestions: true
126
+ hasSuggestions: !0
141
127
  },
142
128
  create(context) {
143
- const schema = requireGraphQLSchemaFromContext(RULE_ID, context);
144
- const reachableTypes = getReachableTypes(schema);
129
+ const schema = requireGraphQLSchemaFromContext(RULE_ID, context), reachableTypes = getReachableTypes(schema);
145
130
  return {
146
131
  [`:matches(${KINDS}) > .name`](node) {
147
132
  const typeName = node.value;
@@ -1,11 +1,12 @@
1
- import { f as GraphQLESLintRule } from '../types-ace77d86.js';
2
- import '@graphql-tools/utils';
1
+ import { GraphQLESLintRule } from '../types.mjs';
3
2
  import 'eslint';
4
3
  import 'estree';
5
4
  import 'graphql';
6
- import 'graphql-config';
7
5
  import 'json-schema-to-ts';
6
+ import '../siblings.mjs';
7
+ import '@graphql-tools/utils';
8
8
  import '../estree-converter/types.mjs';
9
+ import 'graphql-config';
9
10
 
10
11
  declare const rule: GraphQLESLintRule;
11
12
 
@@ -1,33 +1,22 @@
1
- import "../chunk-BMTV3EA2.js";
1
+ import "../chunk-U3TKCM4X.js";
2
2
  import { TypeInfo, visit, visitWithTypeInfo } from "graphql";
3
3
  import { requireGraphQLSchemaFromContext, requireSiblingsOperations } from "../utils.js";
4
4
  const RULE_ID = "no-unused-fields";
5
5
  let usedFieldsCache;
6
6
  function getUsedFields(schema, operations) {
7
- if (usedFieldsCache) {
7
+ if (usedFieldsCache)
8
8
  return usedFieldsCache;
9
- }
10
- const usedFields = /* @__PURE__ */ Object.create(null);
11
- const typeInfo = new TypeInfo(schema);
12
- const visitor = visitWithTypeInfo(typeInfo, {
9
+ const usedFields = /* @__PURE__ */ Object.create(null), typeInfo = new TypeInfo(schema), visitor = visitWithTypeInfo(typeInfo, {
13
10
  Field(node) {
14
- var _a;
15
- const fieldDef = typeInfo.getFieldDef();
16
- if (!fieldDef) {
17
- return false;
18
- }
19
- const parentTypeName = typeInfo.getParentType().name;
20
- const fieldName = node.name.value;
21
- (_a = usedFields[parentTypeName]) != null ? _a : usedFields[parentTypeName] = /* @__PURE__ */ new Set();
22
- usedFields[parentTypeName].add(fieldName);
11
+ if (!typeInfo.getFieldDef())
12
+ return !1;
13
+ const parentTypeName = typeInfo.getParentType().name, fieldName = node.name.value;
14
+ usedFields[parentTypeName] ??= /* @__PURE__ */ new Set(), usedFields[parentTypeName].add(fieldName);
23
15
  }
24
- });
25
- const allDocuments = [...operations.getOperations(), ...operations.getFragments()];
26
- for (const { document } of allDocuments) {
16
+ }), allDocuments = [...operations.getOperations(), ...operations.getFragments()];
17
+ for (const { document } of allDocuments)
27
18
  visit(document, visitor);
28
- }
29
- usedFieldsCache = usedFields;
30
- return usedFieldsCache;
19
+ return usedFieldsCache = usedFields, usedFieldsCache;
31
20
  }
32
21
  const rule = {
33
22
  meta: {
@@ -38,9 +27,10 @@ const rule = {
38
27
  description: "Requires all fields to be used at some level by siblings operations.",
39
28
  category: "Schema",
40
29
  url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
41
- requiresSiblings: true,
42
- requiresSchema: true,
43
- isDisabledForAllConfig: true,
30
+ requiresSiblings: !0,
31
+ requiresSchema: !0,
32
+ // Requires documents to be set
33
+ isDisabledForAllConfig: !0,
44
34
  examples: [
45
35
  {
46
36
  title: "Incorrect",
@@ -93,22 +83,14 @@ const rule = {
93
83
  },
94
84
  type: "suggestion",
95
85
  schema: [],
96
- hasSuggestions: true
86
+ hasSuggestions: !0
97
87
  },
98
88
  create(context) {
99
- const schema = requireGraphQLSchemaFromContext(RULE_ID, context);
100
- const siblingsOperations = requireSiblingsOperations(RULE_ID, context);
101
- const usedFields = getUsedFields(schema, siblingsOperations);
89
+ const schema = requireGraphQLSchemaFromContext(RULE_ID, context), siblingsOperations = requireSiblingsOperations(RULE_ID, context), usedFields = getUsedFields(schema, siblingsOperations);
102
90
  return {
103
91
  FieldDefinition(node) {
104
- var _a;
105
- const fieldName = node.name.value;
106
- const parentTypeName = node.parent.name.value;
107
- const isUsed = (_a = usedFields[parentTypeName]) == null ? void 0 : _a.has(fieldName);
108
- if (isUsed) {
109
- return;
110
- }
111
- context.report({
92
+ const fieldName = node.name.value, parentTypeName = node.parent.name.value;
93
+ usedFields[parentTypeName]?.has(fieldName) || context.report({
112
94
  node: node.name,
113
95
  messageId: RULE_ID,
114
96
  data: { fieldName },
@@ -116,10 +98,7 @@ const rule = {
116
98
  {
117
99
  desc: `Remove \`${fieldName}\` field`,
118
100
  fix(fixer) {
119
- const sourceCode = context.getSourceCode();
120
- const tokenBefore = sourceCode.getTokenBefore(node);
121
- const tokenAfter = sourceCode.getTokenAfter(node);
122
- const isEmptyType = tokenBefore.type === "{" && tokenAfter.type === "}";
101
+ const sourceCode = context.getSourceCode(), tokenBefore = sourceCode.getTokenBefore(node), tokenAfter = sourceCode.getTokenAfter(node), isEmptyType = tokenBefore.type === "{" && tokenAfter.type === "}";
123
102
  return fixer.remove(isEmptyType ? node.parent : node);
124
103
  }
125
104
  }
@@ -1,11 +1,12 @@
1
1
  import { FromSchema } from 'json-schema-to-ts';
2
- import { f as GraphQLESLintRule } from '../types-ace77d86.js';
3
- import '@graphql-tools/utils';
2
+ import { GraphQLESLintRule } from '../types.mjs';
4
3
  import 'eslint';
5
4
  import 'estree';
6
5
  import 'graphql';
7
- import 'graphql-config';
6
+ import '../siblings.mjs';
7
+ import '@graphql-tools/utils';
8
8
  import '../estree-converter/types.mjs';
9
+ import 'graphql-config';
9
10
 
10
11
  declare const schema: {
11
12
  readonly type: "array";
@@ -1,25 +1,22 @@
1
- import "../chunk-BMTV3EA2.js";
1
+ import "../chunk-U3TKCM4X.js";
2
2
  import { isScalarType, Kind } from "graphql";
3
3
  import { requireGraphQLSchemaFromContext } from "../utils.js";
4
- const RULE_ID = "relay-arguments";
5
- const MISSING_ARGUMENTS = "MISSING_ARGUMENTS";
6
- const schema = {
4
+ const RULE_ID = "relay-arguments", MISSING_ARGUMENTS = "MISSING_ARGUMENTS", schema = {
7
5
  type: "array",
8
6
  maxItems: 1,
9
7
  items: {
10
8
  type: "object",
11
- additionalProperties: false,
9
+ additionalProperties: !1,
12
10
  minProperties: 1,
13
11
  properties: {
14
12
  includeBoth: {
15
13
  type: "boolean",
16
- default: true,
14
+ default: !0,
17
15
  description: "Enforce including both forward and backward pagination arguments"
18
16
  }
19
17
  }
20
18
  }
21
- };
22
- const rule = {
19
+ }, rule = {
23
20
  meta: {
24
21
  type: "problem",
25
22
  docs: {
@@ -38,7 +35,8 @@ const rule = {
38
35
  "",
39
36
  "- `last` takes a non-negative integer",
40
37
  "- `before` takes the Cursor type"
41
- ].join("\n"),
38
+ ].join(`
39
+ `),
42
40
  url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
43
41
  examples: [
44
42
  {
@@ -64,7 +62,7 @@ const rule = {
64
62
  )
65
63
  }
66
64
  ],
67
- isDisabledForAllConfig: true
65
+ isDisabledForAllConfig: !0
68
66
  },
69
67
  messages: {
70
68
  [MISSING_ARGUMENTS]: "A field that returns a Connection type must include forward pagination arguments (`first` and `after`), backward pagination arguments (`last` and `before`), or both."
@@ -72,20 +70,15 @@ const rule = {
72
70
  schema
73
71
  },
74
72
  create(context) {
75
- const schema2 = requireGraphQLSchemaFromContext(RULE_ID, context);
76
- const { includeBoth = true } = context.options[0] || {};
73
+ const schema2 = requireGraphQLSchemaFromContext(RULE_ID, context), { includeBoth = !0 } = context.options[0] || {};
77
74
  return {
78
75
  "FieldDefinition > .gqlType Name[value=/Connection$/]"(node) {
79
- var _a;
80
76
  let fieldNode = node.parent;
81
- while (fieldNode.kind !== Kind.FIELD_DEFINITION) {
77
+ for (; fieldNode.kind !== Kind.FIELD_DEFINITION; )
82
78
  fieldNode = fieldNode.parent;
83
- }
84
79
  const args = Object.fromEntries(
85
- ((_a = fieldNode.arguments) == null ? void 0 : _a.map((argument) => [argument.name.value, argument])) || []
86
- );
87
- const hasForwardPagination = !!(args.first && args.after);
88
- const hasBackwardPagination = !!(args.last && args.before);
80
+ fieldNode.arguments?.map((argument) => [argument.name.value, argument]) || []
81
+ ), hasForwardPagination = !!(args.first && args.after), hasBackwardPagination = !!(args.last && args.before);
89
82
  if (!hasForwardPagination && !hasBackwardPagination) {
90
83
  context.report({
91
84
  node: fieldNode.name,
@@ -94,14 +87,9 @@ const rule = {
94
87
  return;
95
88
  }
96
89
  function checkField(typeName, argumentName) {
97
- const argument = args[argumentName];
98
- const hasArgument = !!argument;
90
+ const argument = args[argumentName], hasArgument = !!argument;
99
91
  let type = argument;
100
- if (hasArgument && type.gqlType.kind === Kind.NON_NULL_TYPE) {
101
- type = type.gqlType;
102
- }
103
- const isAllowedNonNullType = hasArgument && type.gqlType.kind === Kind.NAMED_TYPE && (type.gqlType.name.value === typeName || typeName === "String" && isScalarType(schema2.getType(type.gqlType.name.value)));
104
- if (!isAllowedNonNullType) {
92
+ if (hasArgument && type.gqlType.kind === Kind.NON_NULL_TYPE && (type = type.gqlType), !(hasArgument && type.gqlType.kind === Kind.NAMED_TYPE && (type.gqlType.name.value === typeName || typeName === "String" && isScalarType(schema2.getType(type.gqlType.name.value))))) {
105
93
  const returnType = typeName === "String" ? "String or Scalar" : typeName;
106
94
  context.report({
107
95
  node: (argument || fieldNode).name,
@@ -109,14 +97,7 @@ const rule = {
109
97
  });
110
98
  }
111
99
  }
112
- if (includeBoth || args.first || args.after) {
113
- checkField("Int", "first");
114
- checkField("String", "after");
115
- }
116
- if (includeBoth || args.last || args.before) {
117
- checkField("Int", "last");
118
- checkField("String", "before");
119
- }
100
+ (includeBoth || args.first || args.after) && (checkField("Int", "first"), checkField("String", "after")), (includeBoth || args.last || args.before) && (checkField("Int", "last"), checkField("String", "before"));
120
101
  }
121
102
  };
122
103
  }
@@ -1,11 +1,12 @@
1
1
  import { Kind } from 'graphql';
2
- import { f as GraphQLESLintRule } from '../types-ace77d86.js';
3
- import '@graphql-tools/utils';
2
+ import { GraphQLESLintRule } from '../types.mjs';
4
3
  import 'eslint';
5
4
  import 'estree';
6
- import 'graphql-config';
7
5
  import 'json-schema-to-ts';
6
+ import '../siblings.mjs';
7
+ import '@graphql-tools/utils';
8
8
  import '../estree-converter/types.mjs';
9
+ import 'graphql-config';
9
10
 
10
11
  declare const NON_OBJECT_TYPES: Kind[];
11
12
  declare const rule: GraphQLESLintRule;