@graphql-eslint/eslint-plugin 4.0.0-alpha-20230801163310-8bc4340 → 4.0.0-alpha-20230810160036-304c2c0

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 { Kind } from "graphql";
3
3
  import {
4
4
  ARRAY_DEFAULT_OPTIONS,
@@ -25,19 +25,14 @@ const KindToDisplayName = {
25
25
  [Kind.OPERATION_DEFINITION]: "Operation",
26
26
  [Kind.FRAGMENT_DEFINITION]: "Fragment",
27
27
  [Kind.VARIABLE_DEFINITION]: "Variable"
28
- };
29
- const StyleToRegex = {
28
+ }, StyleToRegex = {
30
29
  camelCase: /^[a-z][\dA-Za-z]*$/,
31
30
  PascalCase: /^[A-Z][\dA-Za-z]*$/,
32
31
  snake_case: /^[a-z][\d_a-z]*[\da-z]*$/,
33
32
  UPPER_CASE: /^[A-Z][\dA-Z_]*[\dA-Z]*$/
34
- };
35
- const ALLOWED_KINDS = Object.keys(KindToDisplayName).sort();
36
- const ALLOWED_STYLES = Object.keys(StyleToRegex);
37
- const schemaOption = {
33
+ }, ALLOWED_KINDS = Object.keys(KindToDisplayName).sort(), ALLOWED_STYLES = Object.keys(StyleToRegex), schemaOption = {
38
34
  oneOf: [{ $ref: "#/definitions/asString" }, { $ref: "#/definitions/asObject" }]
39
- };
40
- const schema = {
35
+ }, schema = {
41
36
  definitions: {
42
37
  asString: {
43
38
  enum: ALLOWED_STYLES,
@@ -45,7 +40,7 @@ const schema = {
45
40
  },
46
41
  asObject: {
47
42
  type: "object",
48
- additionalProperties: false,
43
+ additionalProperties: !1,
49
44
  properties: {
50
45
  style: { enum: ALLOWED_STYLES },
51
46
  prefix: { type: "string" },
@@ -65,12 +60,13 @@ const schema = {
65
60
  maxItems: 1,
66
61
  items: {
67
62
  type: "object",
68
- additionalProperties: false,
63
+ additionalProperties: !1,
69
64
  properties: {
70
65
  types: {
71
66
  ...schemaOption,
72
67
  description: `Includes:
73
- ${TYPES_KINDS.map((kind) => `- \`${kind}\``).join("\n")}`
68
+ ${TYPES_KINDS.map((kind) => `- \`${kind}\``).join(`
69
+ `)}`
74
70
  },
75
71
  ...Object.fromEntries(
76
72
  ALLOWED_KINDS.map((kind) => [
@@ -83,11 +79,11 @@ ${TYPES_KINDS.map((kind) => `- \`${kind}\``).join("\n")}`
83
79
  ),
84
80
  allowLeadingUnderscore: {
85
81
  type: "boolean",
86
- default: false
82
+ default: !1
87
83
  },
88
84
  allowTrailingUnderscore: {
89
85
  type: "boolean",
90
- default: false
86
+ default: !1
91
87
  }
92
88
  },
93
89
  patternProperties: {
@@ -99,16 +95,16 @@ ${TYPES_KINDS.map((kind) => `- \`${kind}\``).join("\n")}`
99
95
  "> Paste or drop code into the editor in [ASTExplorer](https://astexplorer.net) and inspect the generated AST to compose your selector.",
100
96
  ">",
101
97
  "> Example: pattern property `FieldDefinition[parent.name.value=Query]` will match only fields for type `Query`."
102
- ].join("\n")
98
+ ].join(`
99
+ `)
103
100
  }
104
- };
105
- const rule = {
101
+ }, rule = {
106
102
  meta: {
107
103
  type: "suggestion",
108
104
  docs: {
109
105
  description: "Require names to follow specified conventions.",
110
106
  category: ["Schema", "Operations"],
111
- recommended: true,
107
+ recommended: !0,
112
108
  url: "https://the-guild.dev/graphql/eslint/rules/naming-convention",
113
109
  examples: [
114
110
  {
@@ -264,6 +260,22 @@ const rule = {
264
260
  "FieldDefinition[parent.name.value=Subscription]": {
265
261
  forbiddenPrefixes: ["subscription"],
266
262
  forbiddenSuffixes: ["Subscription"]
263
+ },
264
+ "EnumTypeDefinition,EnumTypeExtension": {
265
+ forbiddenPrefixes: ["Enum"],
266
+ forbiddenSuffixes: ["Enum"]
267
+ },
268
+ "InterfaceTypeDefinition,InterfaceTypeExtension": {
269
+ forbiddenPrefixes: ["Interface"],
270
+ forbiddenSuffixes: ["Interface"]
271
+ },
272
+ "UnionTypeDefinition,UnionTypeExtension": {
273
+ forbiddenPrefixes: ["Union"],
274
+ forbiddenSuffixes: ["Union"]
275
+ },
276
+ "ObjectTypeDefinition,ObjectTypeExtension": {
277
+ forbiddenPrefixes: ["Type"],
278
+ forbiddenSuffixes: ["Type"]
267
279
  }
268
280
  }
269
281
  ],
@@ -284,15 +296,14 @@ const rule = {
284
296
  ]
285
297
  }
286
298
  },
287
- hasSuggestions: true,
299
+ hasSuggestions: !0,
288
300
  schema
289
301
  },
290
302
  create(context) {
291
- const options = context.options[0] || {};
292
- const { allowLeadingUnderscore, allowTrailingUnderscore, types, ...restOptions } = options;
303
+ const options = context.options[0] || {}, { allowLeadingUnderscore, allowTrailingUnderscore, types, ...restOptions } = options;
293
304
  function normalisePropertyOption(kind) {
294
305
  const style = restOptions[kind] || types;
295
- return typeof style === "object" ? style : { style };
306
+ return typeof style == "object" ? style : { style };
296
307
  }
297
308
  function report(node, message, suggestedNames) {
298
309
  context.report({
@@ -306,9 +317,8 @@ const rule = {
306
317
  }
307
318
  const checkNode = (selector) => (n) => {
308
319
  const { name: node } = n.kind === Kind.VARIABLE_DEFINITION ? n.variable : n;
309
- if (!node) {
320
+ if (!node)
310
321
  return;
311
- }
312
322
  const {
313
323
  prefix,
314
324
  suffix,
@@ -318,97 +328,73 @@ const rule = {
318
328
  ignorePattern,
319
329
  requiredPrefixes,
320
330
  requiredSuffixes
321
- } = normalisePropertyOption(selector);
322
- const nodeType = KindToDisplayName[n.kind] || n.kind;
323
- const nodeName = node.value;
324
- const error = getError();
331
+ } = normalisePropertyOption(selector), nodeType = KindToDisplayName[n.kind] || n.kind, nodeName = node.value, error = getError();
325
332
  if (error) {
326
- const { errorMessage, renameToNames } = error;
327
- const [leadingUnderscores] = nodeName.match(/^_*/);
328
- const [trailingUnderscores] = nodeName.match(/_*$/);
329
- const suggestedNames = renameToNames.map(
333
+ const { errorMessage, renameToNames } = error, [leadingUnderscores] = nodeName.match(/^_*/), [trailingUnderscores] = nodeName.match(/_*$/), suggestedNames = renameToNames.map(
330
334
  (renameToName) => leadingUnderscores + renameToName + trailingUnderscores
331
335
  );
332
336
  report(node, `${nodeType} "${nodeName}" should ${errorMessage}`, suggestedNames);
333
337
  }
334
338
  function getError() {
335
339
  const name = nodeName.replace(/(^_+)|(_+$)/g, "");
336
- if (ignorePattern && new RegExp(ignorePattern, "u").test(name)) {
340
+ if (ignorePattern && new RegExp(ignorePattern, "u").test(name))
337
341
  return;
338
- }
339
- if (prefix && !name.startsWith(prefix)) {
342
+ if (prefix && !name.startsWith(prefix))
340
343
  return {
341
344
  errorMessage: `have "${prefix}" prefix`,
342
345
  renameToNames: [prefix + name]
343
346
  };
344
- }
345
- if (suffix && !name.endsWith(suffix)) {
347
+ if (suffix && !name.endsWith(suffix))
346
348
  return {
347
349
  errorMessage: `have "${suffix}" suffix`,
348
350
  renameToNames: [name + suffix]
349
351
  };
350
- }
351
- const forbiddenPrefix = forbiddenPrefixes == null ? void 0 : forbiddenPrefixes.find((prefix2) => name.startsWith(prefix2));
352
- if (forbiddenPrefix) {
352
+ const forbiddenPrefix = forbiddenPrefixes?.find((prefix2) => name.startsWith(prefix2));
353
+ if (forbiddenPrefix)
353
354
  return {
354
355
  errorMessage: `not have "${forbiddenPrefix}" prefix`,
355
356
  renameToNames: [name.replace(new RegExp(`^${forbiddenPrefix}`), "")]
356
357
  };
357
- }
358
- const forbiddenSuffix = forbiddenSuffixes == null ? void 0 : forbiddenSuffixes.find((suffix2) => name.endsWith(suffix2));
359
- if (forbiddenSuffix) {
358
+ const forbiddenSuffix = forbiddenSuffixes?.find((suffix2) => name.endsWith(suffix2));
359
+ if (forbiddenSuffix)
360
360
  return {
361
361
  errorMessage: `not have "${forbiddenSuffix}" suffix`,
362
362
  renameToNames: [name.replace(new RegExp(`${forbiddenSuffix}$`), "")]
363
363
  };
364
- }
365
- if (requiredPrefixes && !requiredPrefixes.some((requiredPrefix) => name.startsWith(requiredPrefix))) {
364
+ if (requiredPrefixes && !requiredPrefixes.some((requiredPrefix) => name.startsWith(requiredPrefix)))
366
365
  return {
367
366
  errorMessage: `have one of the following prefixes: ${englishJoinWords(
368
367
  requiredPrefixes
369
368
  )}`,
370
369
  renameToNames: style ? requiredPrefixes.map((prefix2) => convertCase(style, `${prefix2} ${name}`)) : requiredPrefixes.map((prefix2) => `${prefix2}${name}`)
371
370
  };
372
- }
373
- if (requiredSuffixes && !requiredSuffixes.some((requiredSuffix) => name.endsWith(requiredSuffix))) {
371
+ if (requiredSuffixes && !requiredSuffixes.some((requiredSuffix) => name.endsWith(requiredSuffix)))
374
372
  return {
375
373
  errorMessage: `have one of the following suffixes: ${englishJoinWords(
376
374
  requiredSuffixes
377
375
  )}`,
378
376
  renameToNames: style ? requiredSuffixes.map((suffix2) => convertCase(style, `${name} ${suffix2}`)) : requiredSuffixes.map((suffix2) => `${name}${suffix2}`)
379
377
  };
380
- }
381
- if (!style) {
378
+ if (!style)
382
379
  return;
383
- }
384
- const caseRegex = StyleToRegex[style];
385
- if (!caseRegex.test(name)) {
380
+ if (!StyleToRegex[style].test(name))
386
381
  return {
387
382
  errorMessage: `be in ${style} format`,
388
383
  renameToNames: [convertCase(style, name)]
389
384
  };
390
- }
391
385
  }
392
- };
393
- const checkUnderscore = (isLeading) => (node) => {
386
+ }, checkUnderscore = (isLeading) => (node) => {
394
387
  const suggestedName = node.value.replace(isLeading ? /^_+/ : /_+$/, "");
395
388
  report(node, `${isLeading ? "Leading" : "Trailing"} underscores are not allowed`, [
396
389
  suggestedName
397
390
  ]);
398
- };
399
- const listeners = {};
400
- if (!allowLeadingUnderscore) {
401
- listeners["Name[value=/^_/]:matches([parent.kind!=Field], [parent.kind=Field][parent.alias])"] = checkUnderscore(true);
402
- }
403
- if (!allowTrailingUnderscore) {
404
- listeners["Name[value=/_$/]:matches([parent.kind!=Field], [parent.kind=Field][parent.alias])"] = checkUnderscore(false);
405
- }
391
+ }, listeners = {};
392
+ allowLeadingUnderscore || (listeners["Name[value=/^_/]:matches([parent.kind!=Field], [parent.kind=Field][parent.alias])"] = checkUnderscore(!0)), allowTrailingUnderscore || (listeners["Name[value=/_$/]:matches([parent.kind!=Field], [parent.kind=Field][parent.alias])"] = checkUnderscore(!1));
406
393
  const selectors = new Set(
407
394
  [types && TYPES_KINDS, Object.keys(restOptions)].flat().filter(truthy)
408
395
  );
409
- for (const selector of selectors) {
396
+ for (const selector of selectors)
410
397
  listeners[selector] = checkNode(selector);
411
- }
412
398
  return listeners;
413
399
  }
414
400
  };
@@ -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,15 +1,14 @@
1
- import "../chunk-BMTV3EA2.js";
1
+ import "../chunk-U3TKCM4X.js";
2
2
  import { Kind } from "graphql";
3
3
  import { getLocation } from "../utils.js";
4
- const RULE_ID = "no-anonymous-operations";
5
- const rule = {
4
+ const RULE_ID = "no-anonymous-operations", rule = {
6
5
  meta: {
7
6
  type: "suggestion",
8
- hasSuggestions: true,
7
+ hasSuggestions: !0,
9
8
  docs: {
10
9
  category: "Operations",
11
10
  description: "Require name for your GraphQL operations. This is useful since most GraphQL client libraries are using the operation name for caching purposes.",
12
- recommended: true,
11
+ recommended: !0,
13
12
  url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
14
13
  examples: [
15
14
  {
@@ -44,8 +43,7 @@ const rule = {
44
43
  create(context) {
45
44
  return {
46
45
  "OperationDefinition[name=undefined]"(node) {
47
- const [firstSelection] = node.selectionSet.selections;
48
- const suggestedName = firstSelection.kind === Kind.FIELD ? (firstSelection.alias || firstSelection.name).value : node.operation;
46
+ const [firstSelection] = node.selectionSet.selections, suggestedName = firstSelection.kind === Kind.FIELD ? (firstSelection.alias || firstSelection.name).value : node.operation;
49
47
  context.report({
50
48
  loc: getLocation(node.loc.start, node.operation),
51
49
  messageId: RULE_ID,
@@ -56,8 +54,7 @@ const rule = {
56
54
  {
57
55
  desc: `Rename to \`${suggestedName}\``,
58
56
  fix(fixer) {
59
- const sourceCode = context.getSourceCode();
60
- const hasQueryKeyword = sourceCode.getText({ range: [node.range[0], node.range[0] + 1] }) !== "{";
57
+ const hasQueryKeyword = context.getSourceCode().getText({ range: [node.range[0], node.range[0] + 1] }) !== "{";
61
58
  return fixer.insertTextAfterRange(
62
59
  [node.range[0], node.range[0] + (hasQueryKeyword ? node.operation.length : 0)],
63
60
  `${hasQueryKeyword ? "" : "query"} ${suggestedName}${hasQueryKeyword ? "" : " "}`
@@ -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<[], true>;
11
12
 
@@ -1,16 +1,15 @@
1
- import "../chunk-BMTV3EA2.js";
1
+ import "../chunk-U3TKCM4X.js";
2
2
  import { Kind } from "graphql";
3
3
  import { requireGraphQLSchemaFromContext } from "../utils.js";
4
- const RULE_ID = "no-deprecated";
5
- const rule = {
4
+ const RULE_ID = "no-deprecated", rule = {
6
5
  meta: {
7
6
  type: "suggestion",
8
- hasSuggestions: true,
7
+ hasSuggestions: !0,
9
8
  docs: {
10
9
  category: "Operations",
11
10
  description: "Enforce that deprecated fields or enum values are not in use by operations.",
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 (field)",
@@ -82,7 +81,7 @@ const rule = {
82
81
  )
83
82
  }
84
83
  ],
85
- recommended: true
84
+ recommended: !0
86
85
  },
87
86
  messages: {
88
87
  [RULE_ID]: "This {{ type }} is marked as deprecated in your GraphQL schema (reason: {{ reason }})"
@@ -92,8 +91,7 @@ const rule = {
92
91
  create(context) {
93
92
  requireGraphQLSchemaFromContext(RULE_ID, context);
94
93
  function report(node, reason) {
95
- const nodeName = node.kind === Kind.ENUM ? node.value : node.name.value;
96
- const nodeType = node.kind === Kind.ENUM ? "enum value" : "field";
94
+ const nodeName = node.kind === Kind.ENUM ? node.value : node.name.value, nodeType = node.kind === Kind.ENUM ? "enum value" : "field";
97
95
  context.report({
98
96
  node,
99
97
  messageId: RULE_ID,
@@ -111,20 +109,12 @@ const rule = {
111
109
  }
112
110
  return {
113
111
  EnumValue(node) {
114
- var _a;
115
- const typeInfo = node.typeInfo();
116
- const reason = (_a = typeInfo.enumValue) == null ? void 0 : _a.deprecationReason;
117
- if (reason) {
118
- report(node, reason);
119
- }
112
+ const reason = node.typeInfo().enumValue?.deprecationReason;
113
+ reason && report(node, reason);
120
114
  },
121
115
  Field(node) {
122
- var _a;
123
- const typeInfo = node.typeInfo();
124
- const reason = (_a = typeInfo.fieldDef) == null ? void 0 : _a.deprecationReason;
125
- if (reason) {
126
- report(node, reason);
127
- }
116
+ const reason = node.typeInfo().fieldDef?.deprecationReason;
117
+ reason && report(node, reason);
128
118
  }
129
119
  };
130
120
  }
@@ -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,15 +1,14 @@
1
- import "../chunk-BMTV3EA2.js";
1
+ import "../chunk-U3TKCM4X.js";
2
2
  import { Kind } from "graphql";
3
- const RULE_ID = "no-duplicate-fields";
4
- const rule = {
3
+ const RULE_ID = "no-duplicate-fields", rule = {
5
4
  meta: {
6
5
  type: "suggestion",
7
- hasSuggestions: true,
6
+ hasSuggestions: !0,
8
7
  docs: {
9
8
  description: "Checks for duplicate fields in selection set, variables in operation definition, or in arguments set of a field.",
10
9
  category: "Operations",
11
10
  url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
12
- recommended: true,
11
+ recommended: !0,
13
12
  examples: [
14
13
  {
15
14
  title: "Incorrect",
@@ -90,30 +89,24 @@ const rule = {
90
89
  }
91
90
  ]
92
91
  });
93
- } else {
92
+ } else
94
93
  usedFields.add(fieldName);
95
- }
96
94
  }
97
95
  return {
98
96
  OperationDefinition(node) {
99
97
  const set = /* @__PURE__ */ new Set();
100
- for (const varDef of node.variableDefinitions || []) {
98
+ for (const varDef of node.variableDefinitions || [])
101
99
  checkNode(set, varDef.variable.name);
102
- }
103
100
  },
104
101
  Field(node) {
105
102
  const set = /* @__PURE__ */ new Set();
106
- for (const arg of node.arguments || []) {
103
+ for (const arg of node.arguments || [])
107
104
  checkNode(set, arg.name);
108
- }
109
105
  },
110
106
  SelectionSet(node) {
111
107
  const set = /* @__PURE__ */ new Set();
112
- for (const selection of node.selections) {
113
- if (selection.kind === Kind.FIELD) {
114
- checkNode(set, selection.alias || selection.name);
115
- }
116
- }
108
+ for (const selection of node.selections)
109
+ selection.kind === Kind.FIELD && checkNode(set, selection.alias || selection.name);
117
110
  }
118
111
  };
119
112
  }
@@ -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_ID = "HASHTAG_COMMENT";
11
12
  declare const rule: GraphQLESLintRule;
@@ -1,11 +1,10 @@
1
- import "../chunk-BMTV3EA2.js";
1
+ import "../chunk-U3TKCM4X.js";
2
2
  import { TokenKind } from "graphql";
3
3
  import { getNodeName } from "../utils.js";
4
- const RULE_ID = "HASHTAG_COMMENT";
5
- const rule = {
4
+ const RULE_ID = "HASHTAG_COMMENT", rule = {
6
5
  meta: {
7
6
  type: "suggestion",
8
- hasSuggestions: true,
7
+ hasSuggestions: !0,
9
8
  schema: [],
10
9
  messages: {
11
10
  [RULE_ID]: 'Unexpected GraphQL descriptions as hashtag `#` for {{ nodeName }}.\nPrefer using `"""` for multiline, or `"` for a single line description.'
@@ -58,27 +57,21 @@ const rule = {
58
57
  )
59
58
  }
60
59
  ],
61
- recommended: true
60
+ recommended: !0
62
61
  }
63
62
  },
64
63
  create(context) {
65
- const selector = "Document[definitions.0.kind!=/^(OperationDefinition|FragmentDefinition)$/]";
66
64
  return {
67
- [selector](node) {
68
- const rawNode = node.rawNode();
69
- let token = rawNode.loc.startToken;
70
- while (token) {
65
+ ["Document[definitions.0.kind!=/^(OperationDefinition|FragmentDefinition)$/]"](node) {
66
+ let token = node.rawNode().loc.startToken;
67
+ for (; token; ) {
71
68
  const { kind, prev, next, value, line, column } = token;
72
69
  if (kind === TokenKind.COMMENT && prev && next) {
73
- const isEslintComment = value.trimStart().startsWith("eslint");
74
- const linesAfter = next.line - line;
70
+ const isEslintComment = value.trimStart().startsWith("eslint"), linesAfter = next.line - line;
75
71
  if (!isEslintComment && line !== prev.line && next.kind === TokenKind.NAME && linesAfter < 2) {
76
- const sourceCode = context.getSourceCode();
77
- const { tokens } = sourceCode.ast;
78
- const t = tokens.find(
72
+ const sourceCode = context.getSourceCode(), { tokens } = sourceCode.ast, t = tokens.find(
79
73
  (token2) => token2.loc.start.line === next.line && token2.loc.start.column === next.column - 1
80
- );
81
- const nextNode = sourceCode.getNodeByRangeIndex(t.range[1] + 1);
74
+ ), nextNode = sourceCode.getNodeByRangeIndex(t.range[1] + 1);
82
75
  context.report({
83
76
  messageId: RULE_ID,
84
77
  data: {
@@ -94,16 +87,14 @@ const rule = {
94
87
  desc: `Replace with \`${descriptionSyntax}\` description syntax`,
95
88
  fix: (fixer) => fixer.replaceTextRange(
96
89
  [token.start, token.end],
97
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion -- TODO: remove `!` when drop support of graphql@15
98
90
  [descriptionSyntax, value.trim(), descriptionSyntax].join("")
99
91
  )
100
92
  }))
101
93
  });
102
94
  }
103
95
  }
104
- if (!next) {
96
+ if (!next)
105
97
  break;
106
- }
107
98
  token = next;
108
99
  }
109
100
  }
@@ -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,9 +1,8 @@
1
- import "../chunk-BMTV3EA2.js";
2
- import { relative } from "path";
1
+ import "../chunk-U3TKCM4X.js";
2
+ import { relative } from "node:path";
3
3
  import { visit } from "graphql";
4
4
  import { CWD, requireSiblingsOperations } from "../utils.js";
5
- const RULE_ID = "no-one-place-fragments";
6
- const rule = {
5
+ const RULE_ID = "no-one-place-fragments", rule = {
7
6
  meta: {
8
7
  type: "suggestion",
9
8
  docs: {
@@ -49,7 +48,7 @@ const rule = {
49
48
  )
50
49
  }
51
50
  ],
52
- requiresSiblings: true
51
+ requiresSiblings: !0
53
52
  },
54
53
  messages: {
55
54
  [RULE_ID]: 'Fragment `{{fragmentName}}` used only once. Inline him in "{{filePath}}".'
@@ -57,30 +56,24 @@ const rule = {
57
56
  schema: []
58
57
  },
59
58
  create(context) {
60
- const operations = requireSiblingsOperations(RULE_ID, context);
61
- const allDocuments = [...operations.getOperations(), ...operations.getFragments()];
62
- const usedFragmentsMap = /* @__PURE__ */ Object.create(null);
59
+ const operations = requireSiblingsOperations(RULE_ID, context), allDocuments = [...operations.getOperations(), ...operations.getFragments()], usedFragmentsMap = /* @__PURE__ */ Object.create(null);
63
60
  for (const { document, filePath } of allDocuments) {
64
61
  const relativeFilePath = relative(CWD, filePath);
65
62
  visit(document, {
66
63
  FragmentSpread({ name }) {
67
64
  const spreadName = name.value;
68
- usedFragmentsMap[spreadName] || (usedFragmentsMap[spreadName] = []);
69
- usedFragmentsMap[spreadName].push(relativeFilePath);
65
+ usedFragmentsMap[spreadName] ||= [], usedFragmentsMap[spreadName].push(relativeFilePath);
70
66
  }
71
67
  });
72
68
  }
73
69
  return {
74
70
  "FragmentDefinition > Name"(node) {
75
- const fragmentName = node.value;
76
- const fragmentUsage = usedFragmentsMap[fragmentName];
77
- if (fragmentUsage.length === 1) {
78
- context.report({
79
- node,
80
- messageId: RULE_ID,
81
- data: { fragmentName, filePath: fragmentUsage[0] }
82
- });
83
- }
71
+ const fragmentName = node.value, fragmentUsage = usedFragmentsMap[fragmentName];
72
+ fragmentUsage.length === 1 && context.report({
73
+ node,
74
+ messageId: RULE_ID,
75
+ data: { fragmentName, filePath: fragmentUsage[0] }
76
+ });
84
77
  }
85
78
  };
86
79
  }
@@ -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";