@graphql-eslint/eslint-plugin 4.0.0-alpha.1 → 4.0.0-alpha.10

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 (264) hide show
  1. package/README.md +2 -0
  2. package/{esm/cache.d.mts → cjs/cache.d.cts} +1 -1
  3. package/cjs/cache.js +8 -36
  4. package/cjs/chunk-UIAXBAMD.js +8 -0
  5. package/cjs/configs/index.d.cts +24 -0
  6. package/cjs/configs/index.js +35 -38
  7. package/cjs/configs/operations-all.js +33 -26
  8. package/cjs/configs/operations-recommended.js +59 -52
  9. package/cjs/configs/schema-all.js +29 -22
  10. package/cjs/configs/schema-recommended.js +73 -66
  11. package/cjs/configs/schema-relay.js +17 -10
  12. package/cjs/documents.js +18 -38
  13. package/{esm/estree-converter/converter.d.mts → cjs/estree-converter/converter.d.cts} +1 -1
  14. package/cjs/estree-converter/converter.js +16 -30
  15. package/cjs/estree-converter/index.d.cts +8 -0
  16. package/cjs/estree-converter/index.js +3 -23
  17. package/cjs/estree-converter/types.js +1 -14
  18. package/{esm/estree-converter/utils.d.mts → cjs/estree-converter/utils.d.cts} +3 -3
  19. package/cjs/estree-converter/utils.js +22 -40
  20. package/{esm/graphql-config.d.mts → cjs/graphql-config.d.cts} +3 -3
  21. package/cjs/graphql-config.js +16 -42
  22. package/cjs/index.d.cts +184 -0
  23. package/cjs/index.js +24 -41
  24. package/cjs/meta.d.cts +3 -0
  25. package/cjs/meta.js +5 -0
  26. package/cjs/package.json +1 -0
  27. package/{esm/parser.d.mts → cjs/parser.d.cts} +11 -4
  28. package/cjs/parser.js +35 -46
  29. package/{esm/processor.d.mts → cjs/processor.d.cts} +4 -0
  30. package/cjs/processor.js +25 -34
  31. package/{esm/rules/alphabetize.d.mts → cjs/rules/alphabetize/index.d.cts} +4 -4
  32. package/cjs/rules/{alphabetize.js → alphabetize/index.js} +69 -77
  33. package/{esm/rules/description-style.d.mts → cjs/rules/description-style/index.d.cts} +3 -3
  34. package/cjs/rules/{description-style.js → description-style/index.js} +7 -27
  35. package/{esm/rules/graphql-js-validation.d.mts → cjs/rules/graphql-js-validation.d.cts} +3 -3
  36. package/cjs/rules/graphql-js-validation.js +93 -70
  37. package/{esm/rules/index.d.mts → cjs/rules/index.d.cts} +8 -8
  38. package/cjs/rules/index.js +74 -60
  39. package/cjs/rules/{input-name.d.ts → input-name/index.d.cts} +6 -4
  40. package/cjs/rules/{input-name.js → input-name/index.js} +10 -28
  41. package/cjs/rules/{lone-executable-definition.d.ts → lone-executable-definition/index.d.cts} +3 -3
  42. package/cjs/rules/{lone-executable-definition.js → lone-executable-definition/index.js} +13 -32
  43. package/cjs/rules/{match-document-filename.d.ts → match-document-filename/index.d.cts} +4 -4
  44. package/cjs/rules/{match-document-filename.js → match-document-filename/index.js} +21 -35
  45. package/{esm/rules/naming-convention.d.mts → cjs/rules/naming-convention/index.d.cts} +6 -4
  46. package/cjs/rules/{naming-convention.js → naming-convention/index.js} +41 -54
  47. package/cjs/rules/no-anonymous-operations/index.d.cts +13 -0
  48. package/cjs/rules/{no-anonymous-operations.js → no-anonymous-operations/index.js} +9 -28
  49. package/{esm/rules/no-deprecated.d.mts → cjs/rules/no-deprecated/index.d.cts} +3 -3
  50. package/cjs/rules/{no-deprecated.js → no-deprecated/index.js} +11 -30
  51. package/cjs/rules/no-duplicate-fields/index.d.cts +13 -0
  52. package/cjs/rules/{no-duplicate-fields.js → no-duplicate-fields/index.js} +8 -28
  53. package/cjs/rules/{no-hashtag-description.d.ts → no-hashtag-description/index.d.cts} +3 -3
  54. package/cjs/rules/{no-hashtag-description.js → no-hashtag-description/index.js} +11 -31
  55. package/cjs/rules/no-one-place-fragments/index.d.cts +13 -0
  56. package/cjs/rules/{no-one-place-fragments.js → no-one-place-fragments/index.js} +11 -29
  57. package/cjs/rules/{no-root-type.d.ts → no-root-type/index.d.cts} +3 -3
  58. package/cjs/rules/{no-root-type.js → no-root-type/index.js} +9 -29
  59. package/cjs/rules/no-scalar-result-type-on-mutation/index.d.cts +13 -0
  60. package/cjs/rules/no-scalar-result-type-on-mutation/index.js +69 -0
  61. package/cjs/rules/no-typename-prefix/index.d.cts +13 -0
  62. package/cjs/rules/{no-typename-prefix.js → no-typename-prefix/index.js} +5 -25
  63. package/cjs/rules/no-unreachable-types/index.d.cts +13 -0
  64. package/cjs/rules/no-unreachable-types/index.js +155 -0
  65. package/cjs/rules/no-unused-fields/index.d.cts +13 -0
  66. package/cjs/rules/{no-unused-fields.js → no-unused-fields/index.js} +16 -34
  67. package/{esm/rules/relay-arguments.d.mts → cjs/rules/relay-arguments/index.d.cts} +3 -3
  68. package/cjs/rules/{relay-arguments.js → relay-arguments/index.js} +11 -30
  69. package/{esm/rules/relay-connection-types.d.mts → cjs/rules/relay-connection-types/index.d.cts} +3 -3
  70. package/cjs/rules/{relay-connection-types.js → relay-connection-types/index.js} +19 -40
  71. package/cjs/rules/{relay-edge-types.d.ts → relay-edge-types/index.d.cts} +6 -4
  72. package/cjs/rules/{relay-edge-types.js → relay-edge-types/index.js} +31 -44
  73. package/cjs/rules/relay-page-info/index.d.cts +13 -0
  74. package/cjs/rules/{relay-page-info.js → relay-page-info/index.js} +13 -31
  75. package/{esm/rules/require-deprecation-date.d.mts → cjs/rules/require-deprecation-date/index.d.cts} +3 -3
  76. package/cjs/rules/{require-deprecation-date.js → require-deprecation-date/index.js} +13 -32
  77. package/cjs/rules/require-deprecation-reason/index.d.cts +13 -0
  78. package/cjs/rules/require-deprecation-reason/index.js +66 -0
  79. package/{esm/rules/require-description.d.mts → cjs/rules/require-description/index.d.cts} +3 -3
  80. package/cjs/rules/{require-description.js → require-description/index.js} +30 -44
  81. package/cjs/rules/require-field-of-type-query-in-mutation-result/index.d.cts +13 -0
  82. package/cjs/rules/{require-field-of-type-query-in-mutation-result.js → require-field-of-type-query-in-mutation-result/index.js} +10 -29
  83. package/cjs/rules/require-import-fragment/index.d.cts +13 -0
  84. package/cjs/rules/{require-import-fragment.js → require-import-fragment/index.js} +16 -38
  85. package/cjs/rules/require-nullable-fields-with-oneof/index.d.cts +13 -0
  86. package/cjs/rules/require-nullable-fields-with-oneof/index.js +62 -0
  87. package/cjs/rules/require-nullable-result-in-root/index.d.cts +13 -0
  88. package/cjs/rules/{require-nullable-result-in-root.js → require-nullable-result-in-root/index.js} +12 -31
  89. package/{esm/rules/require-selections.d.mts → cjs/rules/require-selections/index.d.cts} +3 -3
  90. package/cjs/rules/{require-selections.js → require-selections/index.js} +47 -45
  91. package/cjs/rules/require-type-pattern-with-oneof/index.d.cts +13 -0
  92. package/cjs/rules/require-type-pattern-with-oneof/index.js +63 -0
  93. package/{esm/rules/selection-set-depth.d.mts → cjs/rules/selection-set-depth/index.d.cts} +3 -3
  94. package/cjs/rules/{selection-set-depth.js → selection-set-depth/index.js} +16 -42
  95. package/cjs/rules/{strict-id-in-types.d.ts → strict-id-in-types/index.d.cts} +6 -4
  96. package/cjs/rules/{strict-id-in-types.js → strict-id-in-types/index.js} +26 -39
  97. package/cjs/rules/unique-enum-value-names/index.d.cts +13 -0
  98. package/cjs/rules/{unique-enum-value-names.js → unique-enum-value-names/index.js} +10 -29
  99. package/{esm/rules/unique-fragment-name.d.mts → cjs/rules/unique-fragment-name/index.d.cts} +3 -3
  100. package/cjs/rules/unique-fragment-name/index.js +87 -0
  101. package/cjs/rules/unique-operation-name/index.d.cts +13 -0
  102. package/cjs/rules/{unique-operation-name.js → unique-operation-name/index.js} +7 -27
  103. package/{esm/schema.d.mts → cjs/schema.d.cts} +3 -3
  104. package/cjs/schema.js +11 -36
  105. package/cjs/siblings.js +17 -33
  106. package/{esm/types.d.mts → cjs/types.d.cts} +2 -2
  107. package/cjs/types.js +1 -14
  108. package/{esm/utils.d.mts → cjs/utils.d.cts} +5 -5
  109. package/cjs/utils.js +94 -115
  110. package/{cjs → esm}/cache.d.ts +1 -1
  111. package/esm/configs/index.d.ts +24 -0
  112. package/esm/configs/index.js +22 -1
  113. package/esm/configs/operations-all.js +1 -1
  114. package/esm/documents.js +8 -3
  115. package/{cjs → esm}/estree-converter/index.d.ts +2 -2
  116. package/{cjs → esm}/estree-converter/utils.d.ts +3 -3
  117. package/esm/graphql-config.js +1 -1
  118. package/esm/index.d.ts +184 -0
  119. package/esm/index.js +10 -4
  120. package/esm/meta.d.ts +3 -0
  121. package/esm/meta.js +5 -0
  122. package/{cjs → esm}/parser.d.ts +8 -1
  123. package/esm/parser.js +10 -1
  124. package/{cjs → esm}/processor.d.ts +4 -0
  125. package/esm/processor.js +5 -0
  126. package/{cjs/rules/alphabetize.d.ts → esm/rules/alphabetize/index.d.ts} +5 -5
  127. package/esm/rules/{alphabetize.js → alphabetize/index.js} +26 -10
  128. package/{cjs/rules/description-style.d.ts → esm/rules/description-style/index.d.ts} +3 -3
  129. package/esm/rules/{description-style.js → description-style/index.js} +2 -2
  130. package/{cjs → esm}/rules/index.d.ts +10 -10
  131. package/esm/rules/index.js +34 -34
  132. package/esm/rules/{input-name.d.mts → input-name/index.d.ts} +6 -4
  133. package/esm/rules/{input-name.js → input-name/index.js} +1 -1
  134. package/esm/rules/{lone-executable-definition.d.mts → lone-executable-definition/index.d.ts} +3 -3
  135. package/esm/rules/{lone-executable-definition.js → lone-executable-definition/index.js} +2 -2
  136. package/esm/rules/{match-document-filename.d.mts → match-document-filename/index.d.ts} +4 -4
  137. package/esm/rules/{match-document-filename.js → match-document-filename/index.js} +4 -4
  138. package/{cjs/rules/naming-convention.d.ts → esm/rules/naming-convention/index.d.ts} +6 -4
  139. package/esm/rules/{naming-convention.js → naming-convention/index.js} +2 -2
  140. package/{cjs/rules/no-one-place-fragments.d.ts → esm/rules/no-anonymous-operations/index.d.ts} +3 -3
  141. package/esm/rules/{no-anonymous-operations.js → no-anonymous-operations/index.js} +2 -2
  142. package/{cjs/rules/no-deprecated.d.ts → esm/rules/no-deprecated/index.d.ts} +3 -3
  143. package/esm/rules/{no-deprecated.js → no-deprecated/index.js} +2 -2
  144. package/{cjs/rules/no-scalar-result-type-on-mutation.d.ts → esm/rules/no-duplicate-fields/index.d.ts} +3 -3
  145. package/esm/rules/{no-duplicate-fields.js → no-duplicate-fields/index.js} +1 -1
  146. package/esm/rules/{no-hashtag-description.d.mts → no-hashtag-description/index.d.ts} +3 -3
  147. package/esm/rules/{no-hashtag-description.js → no-hashtag-description/index.js} +2 -2
  148. package/{cjs/rules/no-anonymous-operations.d.ts → esm/rules/no-one-place-fragments/index.d.ts} +3 -3
  149. package/esm/rules/{no-one-place-fragments.js → no-one-place-fragments/index.js} +2 -2
  150. package/esm/rules/{no-root-type.d.mts → no-root-type/index.d.ts} +3 -3
  151. package/esm/rules/{no-root-type.js → no-root-type/index.js} +2 -2
  152. package/{cjs/rules/no-duplicate-fields.d.ts → esm/rules/no-scalar-result-type-on-mutation/index.d.ts} +3 -3
  153. package/esm/rules/{no-scalar-result-type-on-mutation.js → no-scalar-result-type-on-mutation/index.js} +2 -2
  154. package/esm/rules/no-typename-prefix/index.d.ts +13 -0
  155. package/esm/rules/{no-typename-prefix.js → no-typename-prefix/index.js} +1 -1
  156. package/esm/rules/no-unreachable-types/index.d.ts +13 -0
  157. package/esm/rules/{no-unreachable-types.js → no-unreachable-types/index.js} +8 -8
  158. package/esm/rules/no-unused-fields/index.d.ts +13 -0
  159. package/esm/rules/{no-unused-fields.js → no-unused-fields/index.js} +8 -7
  160. package/{cjs/rules/relay-arguments.d.ts → esm/rules/relay-arguments/index.d.ts} +3 -3
  161. package/esm/rules/{relay-arguments.js → relay-arguments/index.js} +2 -2
  162. package/{cjs/rules/relay-connection-types.d.ts → esm/rules/relay-connection-types/index.d.ts} +3 -3
  163. package/esm/rules/{relay-connection-types.js → relay-connection-types/index.js} +1 -1
  164. package/esm/rules/{relay-edge-types.d.mts → relay-edge-types/index.d.ts} +6 -4
  165. package/esm/rules/{relay-edge-types.js → relay-edge-types/index.js} +3 -3
  166. package/esm/rules/relay-page-info/index.d.ts +13 -0
  167. package/esm/rules/{relay-page-info.js → relay-page-info/index.js} +4 -4
  168. package/{cjs/rules/require-deprecation-date.d.ts → esm/rules/require-deprecation-date/index.d.ts} +3 -3
  169. package/esm/rules/{require-deprecation-date.js → require-deprecation-date/index.js} +3 -3
  170. package/esm/rules/require-deprecation-reason/index.d.ts +13 -0
  171. package/esm/rules/{require-deprecation-reason.js → require-deprecation-reason/index.js} +3 -3
  172. package/{cjs/rules/require-description.d.ts → esm/rules/require-description/index.d.ts} +3 -3
  173. package/esm/rules/{require-description.js → require-description/index.js} +2 -2
  174. package/esm/rules/require-field-of-type-query-in-mutation-result/index.d.ts +13 -0
  175. package/esm/rules/{require-field-of-type-query-in-mutation-result.js → require-field-of-type-query-in-mutation-result/index.js} +2 -2
  176. package/esm/rules/require-import-fragment/index.d.ts +13 -0
  177. package/esm/rules/{require-import-fragment.js → require-import-fragment/index.js} +9 -4
  178. package/esm/rules/require-nullable-fields-with-oneof/index.d.ts +13 -0
  179. package/esm/rules/{require-nullable-fields-with-oneof.js → require-nullable-fields-with-oneof/index.js} +2 -2
  180. package/esm/rules/require-nullable-result-in-root/index.d.ts +13 -0
  181. package/esm/rules/{require-nullable-result-in-root.js → require-nullable-result-in-root/index.js} +2 -2
  182. package/{cjs/rules/require-selections.d.ts → esm/rules/require-selections/index.d.ts} +3 -3
  183. package/esm/rules/{require-selections.js → require-selections/index.js} +13 -7
  184. package/esm/rules/require-type-pattern-with-oneof/index.d.ts +13 -0
  185. package/esm/rules/{require-type-pattern-with-oneof.js → require-type-pattern-with-oneof/index.js} +2 -2
  186. package/{cjs/rules/selection-set-depth.d.ts → esm/rules/selection-set-depth/index.d.ts} +3 -3
  187. package/esm/rules/{selection-set-depth.js → selection-set-depth/index.js} +3 -3
  188. package/esm/rules/{strict-id-in-types.d.mts → strict-id-in-types/index.d.ts} +6 -4
  189. package/esm/rules/{strict-id-in-types.js → strict-id-in-types/index.js} +2 -2
  190. package/esm/rules/unique-enum-value-names/index.d.ts +13 -0
  191. package/esm/rules/{unique-enum-value-names.js → unique-enum-value-names/index.js} +2 -2
  192. package/{cjs/rules/unique-fragment-name.d.ts → esm/rules/unique-fragment-name/index.d.ts} +3 -3
  193. package/esm/rules/{unique-fragment-name.js → unique-fragment-name/index.js} +3 -3
  194. package/esm/rules/unique-operation-name/index.d.ts +13 -0
  195. package/esm/rules/{unique-operation-name.js → unique-operation-name/index.js} +2 -2
  196. package/{cjs → esm}/utils.d.ts +2 -2
  197. package/esm/utils.js +39 -16
  198. package/{index.browser.mjs → index.browser.js} +171 -110
  199. package/package.json +7 -11
  200. package/cjs/configs/index.d.ts +0 -174
  201. package/cjs/flat-configs.d.ts +0 -307
  202. package/cjs/flat-configs.js +0 -55
  203. package/cjs/index.d.ts +0 -26
  204. package/cjs/rules/no-scalar-result-type-on-mutation.js +0 -88
  205. package/cjs/rules/no-typename-prefix.d.ts +0 -13
  206. package/cjs/rules/no-unreachable-types.d.ts +0 -13
  207. package/cjs/rules/no-unreachable-types.js +0 -176
  208. package/cjs/rules/no-unused-fields.d.ts +0 -13
  209. package/cjs/rules/relay-page-info.d.ts +0 -13
  210. package/cjs/rules/require-deprecation-reason.d.ts +0 -13
  211. package/cjs/rules/require-deprecation-reason.js +0 -85
  212. package/cjs/rules/require-field-of-type-query-in-mutation-result.d.ts +0 -13
  213. package/cjs/rules/require-import-fragment.d.ts +0 -13
  214. package/cjs/rules/require-nullable-fields-with-oneof.d.ts +0 -13
  215. package/cjs/rules/require-nullable-fields-with-oneof.js +0 -81
  216. package/cjs/rules/require-nullable-result-in-root.d.ts +0 -13
  217. package/cjs/rules/require-type-pattern-with-oneof.d.ts +0 -13
  218. package/cjs/rules/require-type-pattern-with-oneof.js +0 -83
  219. package/cjs/rules/unique-enum-value-names.d.ts +0 -13
  220. package/cjs/rules/unique-fragment-name.js +0 -106
  221. package/cjs/rules/unique-operation-name.d.ts +0 -13
  222. package/esm/configs/index.d.mts +0 -174
  223. package/esm/estree-converter/index.d.mts +0 -8
  224. package/esm/flat-configs.d.mts +0 -307
  225. package/esm/flat-configs.js +0 -36
  226. package/esm/index.d.mts +0 -26
  227. package/esm/package.json +0 -1
  228. package/esm/rules/no-anonymous-operations.d.mts +0 -13
  229. package/esm/rules/no-duplicate-fields.d.mts +0 -13
  230. package/esm/rules/no-one-place-fragments.d.mts +0 -13
  231. package/esm/rules/no-scalar-result-type-on-mutation.d.mts +0 -13
  232. package/esm/rules/no-typename-prefix.d.mts +0 -13
  233. package/esm/rules/no-unreachable-types.d.mts +0 -13
  234. package/esm/rules/no-unused-fields.d.mts +0 -13
  235. package/esm/rules/relay-page-info.d.mts +0 -13
  236. package/esm/rules/require-deprecation-reason.d.mts +0 -13
  237. package/esm/rules/require-field-of-type-query-in-mutation-result.d.mts +0 -13
  238. package/esm/rules/require-import-fragment.d.mts +0 -13
  239. package/esm/rules/require-nullable-fields-with-oneof.d.mts +0 -13
  240. package/esm/rules/require-nullable-result-in-root.d.mts +0 -13
  241. package/esm/rules/require-type-pattern-with-oneof.d.mts +0 -13
  242. package/esm/rules/unique-enum-value-names.d.mts +0 -13
  243. package/esm/rules/unique-operation-name.d.mts +0 -13
  244. /package/cjs/configs/{operations-all.d.ts → operations-all.d.cts} +0 -0
  245. /package/cjs/configs/{operations-recommended.d.ts → operations-recommended.d.cts} +0 -0
  246. /package/cjs/configs/{schema-all.d.ts → schema-all.d.cts} +0 -0
  247. /package/cjs/configs/{schema-recommended.d.ts → schema-recommended.d.cts} +0 -0
  248. /package/cjs/configs/{schema-relay.d.ts → schema-relay.d.cts} +0 -0
  249. /package/cjs/{documents.d.ts → documents.d.cts} +0 -0
  250. /package/cjs/estree-converter/{types.d.ts → types.d.cts} +0 -0
  251. /package/cjs/{siblings.d.ts → siblings.d.cts} +0 -0
  252. /package/esm/configs/{operations-all.d.mts → operations-all.d.ts} +0 -0
  253. /package/esm/configs/{operations-recommended.d.mts → operations-recommended.d.ts} +0 -0
  254. /package/esm/configs/{schema-all.d.mts → schema-all.d.ts} +0 -0
  255. /package/esm/configs/{schema-recommended.d.mts → schema-recommended.d.ts} +0 -0
  256. /package/esm/configs/{schema-relay.d.mts → schema-relay.d.ts} +0 -0
  257. /package/esm/{documents.d.mts → documents.d.ts} +0 -0
  258. /package/{cjs → esm}/estree-converter/converter.d.ts +0 -0
  259. /package/esm/estree-converter/{types.d.mts → types.d.ts} +0 -0
  260. /package/{cjs → esm}/graphql-config.d.ts +0 -0
  261. /package/{cjs → esm}/rules/graphql-js-validation.d.ts +0 -0
  262. /package/{cjs → esm}/schema.d.ts +0 -0
  263. /package/esm/{siblings.d.mts → siblings.d.ts} +0 -0
  264. /package/{cjs → esm}/types.d.ts +0 -0
@@ -35,7 +35,7 @@ var require_operations_all = __commonJS({
35
35
  selections: ["OperationDefinition", "FragmentDefinition"],
36
36
  variables: !0,
37
37
  arguments: ["Field", "Directive"],
38
- groups: ["id", "*", "createdAt", "updatedAt"]
38
+ groups: ["...", "id", "*", "{"]
39
39
  }
40
40
  ],
41
41
  "@graphql-eslint/lone-executable-definition": "error",
@@ -237,10 +237,23 @@ var require_schema_relay = __commonJS({
237
237
  });
238
238
 
239
239
  // src/parser.ts
240
- import debugFactory from "debug";
240
+ import debugFactory2 from "debug";
241
241
  import { buildSchema, GraphQLError } from "graphql";
242
242
  import { parseGraphQLSDL } from "@graphql-tools/utils";
243
243
 
244
+ // src/cache.ts
245
+ import debugFactory from "debug";
246
+ var log = debugFactory("graphql-eslint:ModuleCache"), ModuleCache = class {
247
+ map = /* @__PURE__ */ new Map();
248
+ set(cacheKey, result) {
249
+ }
250
+ get(cacheKey, settings = {
251
+ lifetime: 10
252
+ /* seconds */
253
+ }) {
254
+ }
255
+ };
256
+
244
257
  // src/estree-converter/converter.ts
245
258
  import {
246
259
  Kind,
@@ -374,6 +387,9 @@ function convertToESTree(node, schema15) {
374
387
  );
375
388
  }
376
389
 
390
+ // src/meta.ts
391
+ var version = process.env.VERSION;
392
+
377
393
  // src/siblings.ts
378
394
  import {
379
395
  Kind as Kind3,
@@ -411,7 +427,7 @@ var chalk = {
411
427
  // eslint-disable-next-line no-console
412
428
  console.warn(chalk.yellow("warning"), "[graphql-eslint]", ...args)
413
429
  )
414
- }, normalizePath = (path2) => (path2 || "").replace(/\\/g, "/"), VIRTUAL_DOCUMENT_REGEX = /\/\d+_document.graphql$/, CWD = process.cwd(), getTypeName = (node) => "type" in node ? getTypeName(node.type) : "name" in node && node.name ? node.name.value : "", TYPES_KINDS = [
430
+ }, slash = (path2) => path2.replaceAll("\\", "/"), VIRTUAL_DOCUMENT_REGEX = /[/\\]\d+_document.graphql$/, CWD = process.cwd(), getTypeName = (node) => "type" in node ? getTypeName(node.type) : "name" in node && node.name ? node.name.value : "", TYPES_KINDS = [
415
431
  Kind2.OBJECT_TYPE_DEFINITION,
416
432
  Kind2.INTERFACE_TYPE_DEFINITION,
417
433
  Kind2.ENUM_TYPE_DEFINITION,
@@ -460,26 +476,49 @@ function truthy(value) {
460
476
  return !!value;
461
477
  }
462
478
  var DisplayNodeNameMap = {
463
- [Kind2.OBJECT_TYPE_DEFINITION]: "type",
464
- [Kind2.OBJECT_TYPE_EXTENSION]: "type",
465
- [Kind2.INTERFACE_TYPE_DEFINITION]: "interface",
466
- [Kind2.INTERFACE_TYPE_EXTENSION]: "interface",
479
+ [Kind2.ARGUMENT]: "argument",
480
+ [Kind2.BOOLEAN]: "boolean",
481
+ [Kind2.DIRECTIVE_DEFINITION]: "directive",
482
+ [Kind2.DIRECTIVE]: "directive",
483
+ [Kind2.DOCUMENT]: "document",
467
484
  [Kind2.ENUM_TYPE_DEFINITION]: "enum",
468
485
  [Kind2.ENUM_TYPE_EXTENSION]: "enum",
469
- [Kind2.SCALAR_TYPE_DEFINITION]: "scalar",
486
+ [Kind2.ENUM_VALUE_DEFINITION]: "enum value",
487
+ [Kind2.ENUM]: "enum",
488
+ [Kind2.FIELD_DEFINITION]: "field",
489
+ [Kind2.FIELD]: "field",
490
+ [Kind2.FLOAT]: "float",
491
+ [Kind2.FRAGMENT_DEFINITION]: "fragment",
492
+ [Kind2.FRAGMENT_SPREAD]: "fragment spread",
493
+ [Kind2.INLINE_FRAGMENT]: "inline fragment",
470
494
  [Kind2.INPUT_OBJECT_TYPE_DEFINITION]: "input",
471
495
  [Kind2.INPUT_OBJECT_TYPE_EXTENSION]: "input",
472
- [Kind2.UNION_TYPE_DEFINITION]: "union",
473
- [Kind2.UNION_TYPE_EXTENSION]: "union",
474
- [Kind2.DIRECTIVE_DEFINITION]: "directive",
475
- [Kind2.FIELD_DEFINITION]: "field",
476
- [Kind2.ENUM_VALUE_DEFINITION]: "enum value",
477
496
  [Kind2.INPUT_VALUE_DEFINITION]: "input value",
478
- [Kind2.ARGUMENT]: "argument",
479
- [Kind2.VARIABLE]: "variable",
480
- [Kind2.FRAGMENT_DEFINITION]: "fragment",
497
+ [Kind2.INT]: "int",
498
+ [Kind2.INTERFACE_TYPE_DEFINITION]: "interface",
499
+ [Kind2.INTERFACE_TYPE_EXTENSION]: "interface",
500
+ [Kind2.LIST_TYPE]: "list type",
501
+ [Kind2.LIST]: "list",
502
+ [Kind2.NAME]: "name",
503
+ [Kind2.NAMED_TYPE]: "named type",
504
+ [Kind2.NON_NULL_TYPE]: "non-null type",
505
+ [Kind2.NULL]: "null",
506
+ [Kind2.OBJECT_FIELD]: "object field",
507
+ [Kind2.OBJECT_TYPE_DEFINITION]: "type",
508
+ [Kind2.OBJECT_TYPE_EXTENSION]: "type",
509
+ [Kind2.OBJECT]: "object",
481
510
  [Kind2.OPERATION_DEFINITION]: "operation",
482
- [Kind2.FIELD]: "field"
511
+ [Kind2.OPERATION_TYPE_DEFINITION]: "operation type",
512
+ [Kind2.SCALAR_TYPE_DEFINITION]: "scalar",
513
+ [Kind2.SCALAR_TYPE_EXTENSION]: "scalar",
514
+ [Kind2.SCHEMA_DEFINITION]: "schema",
515
+ [Kind2.SCHEMA_EXTENSION]: "schema",
516
+ [Kind2.SELECTION_SET]: "selection set",
517
+ [Kind2.STRING]: "string",
518
+ [Kind2.UNION_TYPE_DEFINITION]: "union",
519
+ [Kind2.UNION_TYPE_EXTENSION]: "union",
520
+ [Kind2.VARIABLE_DEFINITION]: "variable",
521
+ [Kind2.VARIABLE]: "variable"
483
522
  };
484
523
  function displayNodeName(node) {
485
524
  return `${node.kind === Kind2.OPERATION_DEFINITION ? node.operation : DisplayNodeNameMap[node.kind]} "${"alias" in node && node.alias?.value || "name" in node && node.name?.value}"`;
@@ -575,7 +614,7 @@ function getSiblings(documents) {
575
614
  }
576
615
 
577
616
  // src/parser.ts
578
- var debug = debugFactory("graphql-eslint:parser");
617
+ var debug = debugFactory2("graphql-eslint:parser");
579
618
  debug("cwd %o", CWD);
580
619
  var LEGACY_PARSER_OPTIONS_KEYS = [
581
620
  "schema",
@@ -640,8 +679,15 @@ function parseForESLint(code, options) {
640
679
  throw error;
641
680
  }
642
681
  }
682
+ var parser = {
683
+ parseForESLint,
684
+ meta: {
685
+ name: "@graphql-eslint/parser",
686
+ version
687
+ }
688
+ };
643
689
 
644
- // src/rules/alphabetize.ts
690
+ // src/rules/alphabetize/index.ts
645
691
  import {
646
692
  Kind as Kind4
647
693
  } from "graphql";
@@ -703,7 +749,14 @@ var RULE_ID = "alphabetize", fieldsEnum = [
703
749
  groups: {
704
750
  ...ARRAY_DEFAULT_OPTIONS,
705
751
  minItems: 2,
706
- description: "Custom order group. Example: `['id', '*', 'createdAt', 'updatedAt']` where `*` says for everything else."
752
+ description: [
753
+ "Order group. Example: `['...', 'id', '*', '{']` where:",
754
+ "- `...` stands for fragment spreads",
755
+ "- `id` stands for field with name `id`",
756
+ "- `*` stands for everything else",
757
+ "- `{` stands for fields `selection set`"
758
+ ].join(`
759
+ `)
707
760
  }
708
761
  }
709
762
  }
@@ -825,7 +878,7 @@ var RULE_ID = "alphabetize", fieldsEnum = [
825
878
  selections: selectionsEnum,
826
879
  variables: !0,
827
880
  arguments: [Kind4.FIELD, Kind4.DIRECTIVE],
828
- groups: ["id", "*", "createdAt", "updatedAt"]
881
+ groups: ["...", "id", "*", "{"]
829
882
  }
830
883
  ]
831
884
  }
@@ -863,19 +916,17 @@ var RULE_ID = "alphabetize", fieldsEnum = [
863
916
  }
864
917
  function checkNodes(nodes = []) {
865
918
  for (let i = 1; i < nodes.length; i += 1) {
866
- let currNode = nodes[i], currName = "alias" in currNode && currNode.alias?.value || "name" in currNode && currNode.name?.value;
919
+ let currNode = nodes[i], currName = getName(currNode);
867
920
  if (!currName)
868
921
  continue;
869
- let prevNode = nodes[i - 1], prevName = "alias" in prevNode && prevNode.alias?.value || "name" in prevNode && prevNode.name?.value;
922
+ let prevNode = nodes[i - 1], prevName = getName(prevNode);
870
923
  if (prevName) {
871
924
  let compareResult = prevName.localeCompare(currName), { groups } = opts, shouldSortByGroup = !1;
872
925
  if (groups?.length) {
873
926
  if (!groups.includes("*"))
874
927
  throw new Error("`groups` option should contain `*` string.");
875
- let indexForPrev = groups.indexOf(prevName);
876
- indexForPrev === -1 && (indexForPrev = groups.indexOf("*"));
877
- let indexForCurr = groups.indexOf(currName);
878
- if (indexForCurr === -1 && (indexForCurr = groups.indexOf("*")), shouldSortByGroup = indexForPrev - indexForCurr > 0, indexForPrev < indexForCurr)
928
+ let indexForPrev = getIndex({ node: prevNode, groups }), indexForCurr = getIndex({ node: currNode, groups });
929
+ if (shouldSortByGroup = indexForPrev - indexForCurr > 0, indexForPrev < indexForCurr)
879
930
  continue;
880
931
  }
881
932
  if (!shouldSortByGroup && !(compareResult === 1) && (!(compareResult === 0) || !prevNode.kind.endsWith("Extension") || currNode.kind.endsWith("Extension")))
@@ -935,8 +986,19 @@ var RULE_ID = "alphabetize", fieldsEnum = [
935
986
  }), listeners;
936
987
  }
937
988
  };
989
+ function getIndex({
990
+ node,
991
+ groups
992
+ }) {
993
+ let index = groups.indexOf(getName(node));
994
+ return index === -1 && "selectionSet" in node && node.selectionSet && (index = groups.indexOf("{")), index === -1 && node.kind === Kind4.FRAGMENT_SPREAD && (index = groups.indexOf("...")), index === -1 && (index = groups.indexOf("*")), index;
995
+ }
996
+ function getName(node) {
997
+ return "alias" in node && node.alias?.value || //
998
+ "name" in node && node.name?.value || "";
999
+ }
938
1000
 
939
- // src/rules/description-style.ts
1001
+ // src/rules/description-style/index.ts
940
1002
  var schema2 = {
941
1003
  type: "array",
942
1004
  maxItems: 1,
@@ -1624,7 +1686,7 @@ var getFragmentDefsAndFragmentSpreads = (node) => {
1624
1686
  )
1625
1687
  );
1626
1688
 
1627
- // src/rules/input-name.ts
1689
+ // src/rules/input-name/index.ts
1628
1690
  import {
1629
1691
  Kind as Kind6
1630
1692
  } from "graphql";
@@ -1758,7 +1820,7 @@ Using the same name for all input parameters will make your schemas easier to co
1758
1820
  }
1759
1821
  };
1760
1822
 
1761
- // src/rules/lone-executable-definition.ts
1823
+ // src/rules/lone-executable-definition/index.ts
1762
1824
  import { OperationTypeNode as OperationTypeNode2 } from "graphql";
1763
1825
  var RULE_ID2 = "lone-executable-definition", definitionTypes = ["fragment", ...Object.values(OperationTypeNode2)], schema4 = {
1764
1826
  type: "array",
@@ -1840,8 +1902,8 @@ var RULE_ID2 = "lone-executable-definition", definitionTypes = ["fragment", ...O
1840
1902
  }
1841
1903
  };
1842
1904
 
1843
- // src/rules/match-document-filename.ts
1844
- import { basename, extname } from "path";
1905
+ // src/rules/match-document-filename/index.ts
1906
+ import { basename, extname } from "node:path";
1845
1907
  import { Kind as Kind7 } from "graphql";
1846
1908
  var MATCH_EXTENSION = "MATCH_EXTENSION", MATCH_STYLE = "MATCH_STYLE", CASE_STYLES = [
1847
1909
  "camelCase",
@@ -2068,7 +2130,7 @@ var MATCH_EXTENSION = "MATCH_EXTENSION", MATCH_STYLE = "MATCH_STYLE", CASE_STYLE
2068
2130
  }
2069
2131
  };
2070
2132
 
2071
- // src/rules/naming-convention.ts
2133
+ // src/rules/naming-convention/index.ts
2072
2134
  import { Kind as Kind8 } from "graphql";
2073
2135
  var KindToDisplayName = {
2074
2136
  // types
@@ -2462,7 +2524,7 @@ ${TYPES_KINDS.map((kind) => `- \`${kind}\``).join(`
2462
2524
  }
2463
2525
  };
2464
2526
 
2465
- // src/rules/no-anonymous-operations.ts
2527
+ // src/rules/no-anonymous-operations/index.ts
2466
2528
  import { Kind as Kind9 } from "graphql";
2467
2529
  var RULE_ID3 = "no-anonymous-operations", rule7 = {
2468
2530
  meta: {
@@ -2531,7 +2593,7 @@ var RULE_ID3 = "no-anonymous-operations", rule7 = {
2531
2593
  }
2532
2594
  };
2533
2595
 
2534
- // src/rules/no-deprecated.ts
2596
+ // src/rules/no-deprecated/index.ts
2535
2597
  import { Kind as Kind10 } from "graphql";
2536
2598
  var RULE_ID4 = "no-deprecated", rule8 = {
2537
2599
  meta: {
@@ -2652,7 +2714,7 @@ var RULE_ID4 = "no-deprecated", rule8 = {
2652
2714
  }
2653
2715
  };
2654
2716
 
2655
- // src/rules/no-duplicate-fields.ts
2717
+ // src/rules/no-duplicate-fields/index.ts
2656
2718
  import { Kind as Kind11 } from "graphql";
2657
2719
  var RULE_ID5 = "no-duplicate-fields", rule9 = {
2658
2720
  meta: {
@@ -2766,7 +2828,7 @@ var RULE_ID5 = "no-duplicate-fields", rule9 = {
2766
2828
  }
2767
2829
  };
2768
2830
 
2769
- // src/rules/no-hashtag-description.ts
2831
+ // src/rules/no-hashtag-description/index.ts
2770
2832
  import { TokenKind as TokenKind2 } from "graphql";
2771
2833
  var RULE_ID6 = "HASHTAG_COMMENT", rule10 = {
2772
2834
  meta: {
@@ -2869,8 +2931,8 @@ var RULE_ID6 = "HASHTAG_COMMENT", rule10 = {
2869
2931
  }
2870
2932
  };
2871
2933
 
2872
- // src/rules/no-one-place-fragments.ts
2873
- import { relative } from "path";
2934
+ // src/rules/no-one-place-fragments/index.ts
2935
+ import { relative } from "node:path";
2874
2936
  import { visit as visit4 } from "graphql";
2875
2937
  var RULE_ID7 = "no-one-place-fragments", rule11 = {
2876
2938
  meta: {
@@ -2949,7 +3011,7 @@ var RULE_ID7 = "no-one-place-fragments", rule11 = {
2949
3011
  }
2950
3012
  };
2951
3013
 
2952
- // src/rules/no-root-type.ts
3014
+ // src/rules/no-root-type/index.ts
2953
3015
  var schema7 = {
2954
3016
  type: "array",
2955
3017
  minItems: 1,
@@ -3029,7 +3091,7 @@ var schema7 = {
3029
3091
  }
3030
3092
  };
3031
3093
 
3032
- // src/rules/no-scalar-result-type-on-mutation.ts
3094
+ // src/rules/no-scalar-result-type-on-mutation/index.ts
3033
3095
  import { isScalarType, Kind as Kind12 } from "graphql";
3034
3096
  var RULE_ID8 = "no-scalar-result-type-on-mutation", rule13 = {
3035
3097
  meta: {
@@ -3095,7 +3157,7 @@ var RULE_ID8 = "no-scalar-result-type-on-mutation", rule13 = {
3095
3157
  }
3096
3158
  };
3097
3159
 
3098
- // src/rules/no-typename-prefix.ts
3160
+ // src/rules/no-typename-prefix/index.ts
3099
3161
  var NO_TYPENAME_PREFIX = "NO_TYPENAME_PREFIX", rule14 = {
3100
3162
  meta: {
3101
3163
  type: "suggestion",
@@ -3164,7 +3226,7 @@ var NO_TYPENAME_PREFIX = "NO_TYPENAME_PREFIX", rule14 = {
3164
3226
  }
3165
3227
  };
3166
3228
 
3167
- // src/rules/no-unreachable-types.ts
3229
+ // src/rules/no-unreachable-types/index.ts
3168
3230
  import {
3169
3231
  DirectiveLocation,
3170
3232
  isInterfaceType,
@@ -3186,7 +3248,7 @@ var RULE_ID9 = "no-unreachable-types", KINDS = [
3186
3248
  Kind13.UNION_TYPE_EXTENSION,
3187
3249
  Kind13.ENUM_TYPE_DEFINITION,
3188
3250
  Kind13.ENUM_TYPE_EXTENSION
3189
- ], reachableTypesCache, RequestDirectiveLocations = /* @__PURE__ */ new Set([
3251
+ ], reachableTypesCache = new ModuleCache(), RequestDirectiveLocations = /* @__PURE__ */ new Set([
3190
3252
  DirectiveLocation.QUERY,
3191
3253
  DirectiveLocation.MUTATION,
3192
3254
  DirectiveLocation.SUBSCRIPTION,
@@ -3197,8 +3259,9 @@ var RULE_ID9 = "no-unreachable-types", KINDS = [
3197
3259
  DirectiveLocation.VARIABLE_DEFINITION
3198
3260
  ]);
3199
3261
  function getReachableTypes(schema15) {
3200
- if (reachableTypesCache)
3201
- return reachableTypesCache;
3262
+ let cachedValue = reachableTypesCache.get(schema15);
3263
+ if (cachedValue)
3264
+ return cachedValue;
3202
3265
  let reachableTypes = /* @__PURE__ */ new Set(), collect = (node) => {
3203
3266
  let typeName = getTypeName(node);
3204
3267
  if (reachableTypes.has(typeName))
@@ -3235,7 +3298,7 @@ function getReachableTypes(schema15) {
3235
3298
  argTypeName && reachableTypes.add(argTypeName);
3236
3299
  }
3237
3300
  }
3238
- return reachableTypesCache = reachableTypes, reachableTypesCache;
3301
+ return reachableTypesCache.set(schema15, reachableTypes), reachableTypes;
3239
3302
  }
3240
3303
  var rule15 = {
3241
3304
  meta: {
@@ -3314,12 +3377,13 @@ var rule15 = {
3314
3377
  }
3315
3378
  };
3316
3379
 
3317
- // src/rules/no-unused-fields.ts
3380
+ // src/rules/no-unused-fields/index.ts
3318
3381
  import { TypeInfo as TypeInfo2, visit as visit6, visitWithTypeInfo as visitWithTypeInfo2 } from "graphql";
3319
- var RULE_ID10 = "no-unused-fields", usedFieldsCache;
3382
+ var RULE_ID10 = "no-unused-fields", usedFieldsCache = new ModuleCache();
3320
3383
  function getUsedFields(schema15, operations) {
3321
- if (usedFieldsCache)
3322
- return usedFieldsCache;
3384
+ let cachedValue = usedFieldsCache.get(schema15);
3385
+ if (cachedValue)
3386
+ return cachedValue;
3323
3387
  let usedFields = /* @__PURE__ */ Object.create(null), typeInfo = new TypeInfo2(schema15), visitor = visitWithTypeInfo2(typeInfo, {
3324
3388
  Field(node) {
3325
3389
  if (!typeInfo.getFieldDef())
@@ -3330,7 +3394,7 @@ function getUsedFields(schema15, operations) {
3330
3394
  }), allDocuments = [...operations.getOperations(), ...operations.getFragments()];
3331
3395
  for (let { document } of allDocuments)
3332
3396
  visit6(document, visitor);
3333
- return usedFieldsCache = usedFields, usedFieldsCache;
3397
+ return usedFieldsCache.set(schema15, usedFields), usedFields;
3334
3398
  }
3335
3399
  var rule16 = {
3336
3400
  meta: {
@@ -3423,7 +3487,7 @@ var rule16 = {
3423
3487
  }
3424
3488
  };
3425
3489
 
3426
- // src/rules/relay-arguments.ts
3490
+ // src/rules/relay-arguments/index.ts
3427
3491
  import { isScalarType as isScalarType2, Kind as Kind14 } from "graphql";
3428
3492
  var RULE_ID11 = "relay-arguments", MISSING_ARGUMENTS = "MISSING_ARGUMENTS", schema8 = {
3429
3493
  type: "array",
@@ -3526,7 +3590,7 @@ var RULE_ID11 = "relay-arguments", MISSING_ARGUMENTS = "MISSING_ARGUMENTS", sche
3526
3590
  }
3527
3591
  };
3528
3592
 
3529
- // src/rules/relay-connection-types.ts
3593
+ // src/rules/relay-connection-types/index.ts
3530
3594
  import { Kind as Kind15 } from "graphql";
3531
3595
  var MUST_BE_OBJECT_TYPE = "MUST_BE_OBJECT_TYPE", MUST_CONTAIN_FIELD_EDGES = "MUST_CONTAIN_FIELD_EDGES", MUST_CONTAIN_FIELD_PAGE_INFO = "MUST_CONTAIN_FIELD_PAGE_INFO", MUST_HAVE_CONNECTION_SUFFIX = "MUST_HAVE_CONNECTION_SUFFIX", EDGES_FIELD_MUST_RETURN_LIST_TYPE = "EDGES_FIELD_MUST_RETURN_LIST_TYPE", PAGE_INFO_FIELD_MUST_RETURN_NON_NULL_TYPE = "PAGE_INFO_FIELD_MUST_RETURN_NON_NULL_TYPE", NON_OBJECT_TYPES = [
3532
3596
  Kind15.SCALAR_TYPE_DEFINITION,
@@ -3613,7 +3677,7 @@ var MUST_BE_OBJECT_TYPE = "MUST_BE_OBJECT_TYPE", MUST_CONTAIN_FIELD_EDGES = "MUS
3613
3677
  }
3614
3678
  };
3615
3679
 
3616
- // src/rules/relay-edge-types.ts
3680
+ // src/rules/relay-edge-types/index.ts
3617
3681
  import {
3618
3682
  isObjectType as isObjectType2,
3619
3683
  isScalarType as isScalarType3,
@@ -3757,7 +3821,7 @@ var schema9 = {
3757
3821
  }
3758
3822
  };
3759
3823
 
3760
- // src/rules/relay-page-info.ts
3824
+ // src/rules/relay-page-info/index.ts
3761
3825
  import { isScalarType as isScalarType4, Kind as Kind17 } from "graphql";
3762
3826
  var RULE_ID13 = "relay-page-info", MESSAGE_MUST_EXIST = "MESSAGE_MUST_EXIST", MESSAGE_MUST_BE_OBJECT_TYPE2 = "MESSAGE_MUST_BE_OBJECT_TYPE", notPageInfoTypesSelector = `:matches(${NON_OBJECT_TYPES})[name.value=PageInfo] > .name`, hasPageInfoChecked = !1, rule20 = {
3763
3827
  meta: {
@@ -3830,7 +3894,7 @@ var RULE_ID13 = "relay-page-info", MESSAGE_MUST_EXIST = "MESSAGE_MUST_EXIST", ME
3830
3894
  }
3831
3895
  };
3832
3896
 
3833
- // src/rules/require-deprecation-date.ts
3897
+ // src/rules/require-deprecation-date/index.ts
3834
3898
  var DATE_REGEX = /^\d{2}\/\d{2}\/\d{4}$/, MESSAGE_REQUIRE_DATE = "MESSAGE_REQUIRE_DATE", MESSAGE_INVALID_FORMAT = "MESSAGE_INVALID_FORMAT", MESSAGE_INVALID_DATE = "MESSAGE_INVALID_DATE", MESSAGE_CAN_BE_REMOVED = "MESSAGE_CAN_BE_REMOVED", schema10 = {
3835
3899
  type: "array",
3836
3900
  maxItems: 1,
@@ -3955,7 +4019,7 @@ var DATE_REGEX = /^\d{2}\/\d{2}\/\d{4}$/, MESSAGE_REQUIRE_DATE = "MESSAGE_REQUIR
3955
4019
  }
3956
4020
  };
3957
4021
 
3958
- // src/rules/require-deprecation-reason.ts
4022
+ // src/rules/require-deprecation-reason/index.ts
3959
4023
  var rule22 = {
3960
4024
  meta: {
3961
4025
  docs: {
@@ -4017,7 +4081,7 @@ var rule22 = {
4017
4081
  }
4018
4082
  };
4019
4083
 
4020
- // src/rules/require-description.ts
4084
+ // src/rules/require-description/index.ts
4021
4085
  import { Kind as Kind18, TokenKind as TokenKind3 } from "graphql";
4022
4086
  import { getRootTypeNames } from "@graphql-tools/utils";
4023
4087
  var RULE_ID14 = "require-description", ALLOWED_KINDS2 = [
@@ -4172,7 +4236,7 @@ ${TYPES_KINDS.map((kind) => `- \`${kind}\``).join(`
4172
4236
  }
4173
4237
  };
4174
4238
 
4175
- // src/rules/require-field-of-type-query-in-mutation-result.ts
4239
+ // src/rules/require-field-of-type-query-in-mutation-result/index.ts
4176
4240
  import { isObjectType as isObjectType3 } from "graphql";
4177
4241
  var RULE_ID15 = "require-field-of-type-query-in-mutation-result", rule24 = {
4178
4242
  meta: {
@@ -4237,8 +4301,8 @@ var RULE_ID15 = "require-field-of-type-query-in-mutation-result", rule24 = {
4237
4301
  }
4238
4302
  };
4239
4303
 
4240
- // src/rules/require-import-fragment.ts
4241
- import path from "path";
4304
+ // src/rules/require-import-fragment/index.ts
4305
+ import path from "node:path";
4242
4306
  var RULE_ID16 = "require-import-fragment", SUGGESTION_ID = "add-import-expression", rule25 = {
4243
4307
  meta: {
4244
4308
  type: "suggestion",
@@ -4323,7 +4387,7 @@ var RULE_ID16 = "require-import-fragment", SUGGESTION_ID = "add-import-expressio
4323
4387
  ).test(comment.value)) continue;
4324
4388
  let extractedImportPath = comment.value.match(/(["'])((?:\1|.)*?)\1/)?.[2];
4325
4389
  if (!extractedImportPath) continue;
4326
- let importPath = path.join(path.dirname(filePath), extractedImportPath);
4390
+ let importPath = path.join(filePath, "..", extractedImportPath);
4327
4391
  if (fragmentsFromSiblings.some(
4328
4392
  (source) => source.filePath === importPath
4329
4393
  )) return;
@@ -4331,7 +4395,12 @@ var RULE_ID16 = "require-import-fragment", SUGGESTION_ID = "add-import-expressio
4331
4395
  if (fragmentsFromSiblings.some(
4332
4396
  (source) => source.filePath === filePath
4333
4397
  )) return;
4334
- let suggestedFilePaths = fragmentsFromSiblings.length ? fragmentsFromSiblings.map((o) => path.relative(path.dirname(filePath), o.filePath)) : ["CHANGE_ME.graphql"];
4398
+ let suggestedFilePaths = fragmentsFromSiblings.length ? fragmentsFromSiblings.map(
4399
+ (o) => (
4400
+ // Use always forward slash for suggested import path
4401
+ slash(path.relative(path.dirname(filePath), o.filePath))
4402
+ )
4403
+ ) : ["CHANGE_ME.graphql"];
4335
4404
  context.report({
4336
4405
  node,
4337
4406
  messageId: RULE_ID16,
@@ -4351,7 +4420,7 @@ var RULE_ID16 = "require-import-fragment", SUGGESTION_ID = "add-import-expressio
4351
4420
  }
4352
4421
  };
4353
4422
 
4354
- // src/rules/require-nullable-fields-with-oneof.ts
4423
+ // src/rules/require-nullable-fields-with-oneof/index.ts
4355
4424
  import { Kind as Kind19 } from "graphql";
4356
4425
  var RULE_ID17 = "require-nullable-fields-with-oneof", rule26 = {
4357
4426
  meta: {
@@ -4410,7 +4479,7 @@ var RULE_ID17 = "require-nullable-fields-with-oneof", rule26 = {
4410
4479
  }
4411
4480
  };
4412
4481
 
4413
- // src/rules/require-nullable-result-in-root.ts
4482
+ // src/rules/require-nullable-result-in-root/index.ts
4414
4483
  import { Kind as Kind20 } from "graphql";
4415
4484
  var RULE_ID18 = "require-nullable-result-in-root", rule27 = {
4416
4485
  meta: {
@@ -4487,7 +4556,7 @@ var RULE_ID18 = "require-nullable-result-in-root", rule27 = {
4487
4556
  }
4488
4557
  };
4489
4558
 
4490
- // src/rules/require-selections.ts
4559
+ // src/rules/require-selections/index.ts
4491
4560
  import {
4492
4561
  GraphQLInterfaceType,
4493
4562
  GraphQLObjectType,
@@ -4613,13 +4682,19 @@ Include it in your selection set{{ addition }}.`
4613
4682
  let rawType = getBaseType(type);
4614
4683
  if (rawType instanceof GraphQLObjectType || rawType instanceof GraphQLInterfaceType)
4615
4684
  checkFields(rawType);
4616
- else if (rawType instanceof GraphQLUnionType) {
4617
- for (let selection of node.selections)
4685
+ else if (rawType instanceof GraphQLUnionType)
4686
+ for (let selection of node.selections) {
4687
+ let types = rawType.getTypes();
4618
4688
  if (selection.kind === Kind21.INLINE_FRAGMENT) {
4619
- let t = rawType.getTypes().find((t2) => t2.name === selection.typeCondition.name.value);
4689
+ let t = types.find((t2) => t2.name === selection.typeCondition.name.value);
4620
4690
  t && checkFields(t);
4691
+ } else if (selection.kind === Kind21.FRAGMENT_SPREAD) {
4692
+ let [foundSpread] = siblings.getFragment(selection.name.value);
4693
+ if (!foundSpread) return;
4694
+ let fragmentSpread = foundSpread.document, t = fragmentSpread.typeCondition.name.value === rawType.name ? rawType : types.find((t2) => t2.name === fragmentSpread.typeCondition.name.value);
4695
+ checkedFragmentSpreads.add(fragmentSpread.name.value), checkSelections(fragmentSpread.selectionSet, t, loc, parent, checkedFragmentSpreads);
4621
4696
  }
4622
- }
4697
+ }
4623
4698
  function checkFields(rawType2) {
4624
4699
  let fields = rawType2.getFields();
4625
4700
  if (!idNames.some((name) => fields[name]))
@@ -4672,7 +4747,7 @@ Include it in your selection set{{ addition }}.`
4672
4747
  }
4673
4748
  };
4674
4749
 
4675
- // src/rules/require-type-pattern-with-oneof.ts
4750
+ // src/rules/require-type-pattern-with-oneof/index.ts
4676
4751
  var RULE_ID20 = "require-type-pattern-with-oneof", rule29 = {
4677
4752
  meta: {
4678
4753
  type: "suggestion",
@@ -4732,7 +4807,7 @@ var RULE_ID20 = "require-type-pattern-with-oneof", rule29 = {
4732
4807
  }
4733
4808
  };
4734
4809
 
4735
- // src/rules/selection-set-depth.ts
4810
+ // src/rules/selection-set-depth/index.ts
4736
4811
  import { Kind as Kind22 } from "graphql";
4737
4812
  import depthLimit from "graphql-depth-limit";
4738
4813
  var RULE_ID21 = "selection-set-depth", schema13 = {
@@ -4825,7 +4900,7 @@ var RULE_ID21 = "selection-set-depth", schema13 = {
4825
4900
  checkFn({
4826
4901
  getDocument: () => document,
4827
4902
  reportError(error) {
4828
- let { line, column } = error.locations[0], token = context.getAncestors()[0].tokens.find(
4903
+ let { line, column } = error.locations[0], token = context.sourceCode.getAncestors(node)[0].tokens.find(
4829
4904
  (token2) => token2.loc.start.line === line && token2.loc.start.column === column - 1
4830
4905
  );
4831
4906
  context.report({
@@ -4862,7 +4937,7 @@ var RULE_ID21 = "selection-set-depth", schema13 = {
4862
4937
  }
4863
4938
  };
4864
4939
 
4865
- // src/rules/strict-id-in-types.ts
4940
+ // src/rules/strict-id-in-types/index.ts
4866
4941
  import { Kind as Kind23 } from "graphql";
4867
4942
  var RULE_ID22 = "strict-id-in-types", schema14 = {
4868
4943
  type: "array",
@@ -5007,7 +5082,7 @@ Accepted type${pluralTypesSuffix}: ${englishJoinWords(options.acceptedIdTypes)}.
5007
5082
  }
5008
5083
  };
5009
5084
 
5010
- // src/rules/unique-enum-value-names.ts
5085
+ // src/rules/unique-enum-value-names/index.ts
5011
5086
  import { Kind as Kind24 } from "graphql";
5012
5087
  var rule32 = {
5013
5088
  meta: {
@@ -5076,12 +5151,12 @@ var rule32 = {
5076
5151
  }
5077
5152
  };
5078
5153
 
5079
- // src/rules/unique-fragment-name.ts
5080
- import { relative as relative2 } from "path";
5154
+ // src/rules/unique-fragment-name/index.ts
5155
+ import { relative as relative2 } from "node:path";
5081
5156
  import { Kind as Kind25 } from "graphql";
5082
5157
  var RULE_ID23 = "unique-fragment-name", checkNode = (context, node, ruleId) => {
5083
5158
  let documentName = node.name.value, siblings = requireSiblingsOperations(ruleId, context), siblingDocuments = node.kind === Kind25.FRAGMENT_DEFINITION ? siblings.getFragment(documentName) : siblings.getOperation(documentName), filepath = context.filename, conflictingDocuments = siblingDocuments.filter((f) => {
5084
- let isSameName = f.document.name?.value === documentName, isSamePath = normalizePath(f.filePath) === normalizePath(filepath);
5159
+ let isSameName = f.document.name?.value === documentName, isSamePath = slash(f.filePath) === slash(filepath);
5085
5160
  return isSameName && !isSamePath;
5086
5161
  });
5087
5162
  conflictingDocuments.length > 0 && context.report({
@@ -5159,7 +5234,7 @@ var RULE_ID23 = "unique-fragment-name", checkNode = (context, node, ruleId) => {
5159
5234
  }
5160
5235
  };
5161
5236
 
5162
- // src/rules/unique-operation-name.ts
5237
+ // src/rules/unique-operation-name/index.ts
5163
5238
  var RULE_ID24 = "unique-operation-name", rule34 = {
5164
5239
  meta: {
5165
5240
  type: "suggestion",
@@ -5269,50 +5344,36 @@ var rules = {
5269
5344
  };
5270
5345
 
5271
5346
  // src/configs/index.ts
5272
- var import_operations_all = __toESM(require_operations_all()), import_operations_recommended = __toESM(require_operations_recommended()), import_schema_all = __toESM(require_schema_all()), import_schema_recommended = __toESM(require_schema_recommended()), import_schema_relay = __toESM(require_schema_relay()), configs = {
5347
+ var import_operations_all = __toESM(require_operations_all(), 1), import_operations_recommended = __toESM(require_operations_recommended(), 1), import_schema_all = __toESM(require_schema_all(), 1), import_schema_recommended = __toESM(require_schema_recommended(), 1), import_schema_relay = __toESM(require_schema_relay(), 1), configs = {
5273
5348
  "schema-recommended": import_schema_recommended.default,
5274
5349
  "schema-all": import_schema_all.default,
5275
5350
  "schema-relay": import_schema_relay.default,
5276
5351
  "operations-recommended": import_operations_recommended.default,
5277
- "operations-all": import_operations_all.default
5278
- };
5279
-
5280
- // src/flat-configs.ts
5281
- var languageOptions = {
5282
- parser: { parseForESLint }
5283
- }, flatConfigs = {
5284
- "operations-all": {
5285
- languageOptions,
5352
+ "operations-all": import_operations_all.default,
5353
+ "flat/schema-recommended": {
5354
+ rules: import_schema_recommended.default.rules
5355
+ },
5356
+ "flat/schema-all": {
5286
5357
  rules: {
5287
- ...configs["operations-recommended"].rules,
5288
- ...configs["operations-all"].rules
5358
+ ...import_schema_recommended.default.rules,
5359
+ ...import_schema_all.default.rules
5289
5360
  }
5290
5361
  },
5291
- "operations-recommended": {
5292
- languageOptions,
5293
- rules: configs["operations-recommended"].rules
5362
+ "flat/schema-relay": {
5363
+ rules: import_schema_relay.default.rules
5294
5364
  },
5295
- "schema-relay": {
5296
- languageOptions,
5297
- rules: configs["schema-relay"].rules
5365
+ "flat/operations-recommended": {
5366
+ rules: import_operations_recommended.default.rules
5298
5367
  },
5299
- "schema-all": {
5300
- languageOptions,
5368
+ "flat/operations-all": {
5301
5369
  rules: {
5302
- ...configs["schema-recommended"].rules,
5303
- ...configs["schema-all"].rules
5370
+ ...import_operations_recommended.default.rules,
5371
+ ...import_operations_all.default.rules
5304
5372
  }
5305
- },
5306
- "schema-recommended": {
5307
- languageOptions,
5308
- rules: configs["schema-recommended"].rules
5309
5373
  }
5310
5374
  };
5311
5375
  export {
5312
5376
  configs,
5313
- flatConfigs,
5314
- parseForESLint,
5315
- requireGraphQLSchemaFromContext,
5316
- requireSiblingsOperations,
5377
+ parser,
5317
5378
  rules
5318
5379
  };