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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (266) 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 +186 -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/cjs/rules/{index.d.ts → index.d.cts} +17 -15
  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 +34 -0
  66. package/cjs/rules/no-unused-fields/index.js +224 -0
  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 +186 -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/esm/rules/{index.d.mts → index.d.ts} +11 -9
  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 +34 -0
  159. package/esm/rules/no-unused-fields/index.js +224 -0
  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} +352 -181
  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/no-unused-fields.js +0 -132
  210. package/cjs/rules/relay-page-info.d.ts +0 -13
  211. package/cjs/rules/require-deprecation-reason.d.ts +0 -13
  212. package/cjs/rules/require-deprecation-reason.js +0 -85
  213. package/cjs/rules/require-field-of-type-query-in-mutation-result.d.ts +0 -13
  214. package/cjs/rules/require-import-fragment.d.ts +0 -13
  215. package/cjs/rules/require-nullable-fields-with-oneof.d.ts +0 -13
  216. package/cjs/rules/require-nullable-fields-with-oneof.js +0 -81
  217. package/cjs/rules/require-nullable-result-in-root.d.ts +0 -13
  218. package/cjs/rules/require-type-pattern-with-oneof.d.ts +0 -13
  219. package/cjs/rules/require-type-pattern-with-oneof.js +0 -83
  220. package/cjs/rules/unique-enum-value-names.d.ts +0 -13
  221. package/cjs/rules/unique-fragment-name.js +0 -106
  222. package/cjs/rules/unique-operation-name.d.ts +0 -13
  223. package/esm/configs/index.d.mts +0 -174
  224. package/esm/estree-converter/index.d.mts +0 -8
  225. package/esm/flat-configs.d.mts +0 -307
  226. package/esm/flat-configs.js +0 -36
  227. package/esm/index.d.mts +0 -26
  228. package/esm/package.json +0 -1
  229. package/esm/rules/no-anonymous-operations.d.mts +0 -13
  230. package/esm/rules/no-duplicate-fields.d.mts +0 -13
  231. package/esm/rules/no-one-place-fragments.d.mts +0 -13
  232. package/esm/rules/no-scalar-result-type-on-mutation.d.mts +0 -13
  233. package/esm/rules/no-typename-prefix.d.mts +0 -13
  234. package/esm/rules/no-unreachable-types.d.mts +0 -13
  235. package/esm/rules/no-unused-fields.d.mts +0 -13
  236. package/esm/rules/no-unused-fields.js +0 -113
  237. package/esm/rules/relay-page-info.d.mts +0 -13
  238. package/esm/rules/require-deprecation-reason.d.mts +0 -13
  239. package/esm/rules/require-field-of-type-query-in-mutation-result.d.mts +0 -13
  240. package/esm/rules/require-import-fragment.d.mts +0 -13
  241. package/esm/rules/require-nullable-fields-with-oneof.d.mts +0 -13
  242. package/esm/rules/require-nullable-result-in-root.d.mts +0 -13
  243. package/esm/rules/require-type-pattern-with-oneof.d.mts +0 -13
  244. package/esm/rules/unique-enum-value-names.d.mts +0 -13
  245. package/esm/rules/unique-operation-name.d.mts +0 -13
  246. /package/cjs/configs/{operations-all.d.ts → operations-all.d.cts} +0 -0
  247. /package/cjs/configs/{operations-recommended.d.ts → operations-recommended.d.cts} +0 -0
  248. /package/cjs/configs/{schema-all.d.ts → schema-all.d.cts} +0 -0
  249. /package/cjs/configs/{schema-recommended.d.ts → schema-recommended.d.cts} +0 -0
  250. /package/cjs/configs/{schema-relay.d.ts → schema-relay.d.cts} +0 -0
  251. /package/cjs/{documents.d.ts → documents.d.cts} +0 -0
  252. /package/cjs/estree-converter/{types.d.ts → types.d.cts} +0 -0
  253. /package/cjs/{siblings.d.ts → siblings.d.cts} +0 -0
  254. /package/esm/configs/{operations-all.d.mts → operations-all.d.ts} +0 -0
  255. /package/esm/configs/{operations-recommended.d.mts → operations-recommended.d.ts} +0 -0
  256. /package/esm/configs/{schema-all.d.mts → schema-all.d.ts} +0 -0
  257. /package/esm/configs/{schema-recommended.d.mts → schema-recommended.d.ts} +0 -0
  258. /package/esm/configs/{schema-relay.d.mts → schema-relay.d.ts} +0 -0
  259. /package/esm/{documents.d.mts → documents.d.ts} +0 -0
  260. /package/{cjs → esm}/estree-converter/converter.d.ts +0 -0
  261. /package/esm/estree-converter/{types.d.mts → types.d.ts} +0 -0
  262. /package/{cjs → esm}/graphql-config.d.ts +0 -0
  263. /package/{cjs → esm}/rules/graphql-js-validation.d.ts +0 -0
  264. /package/{cjs → esm}/schema.d.ts +0 -0
  265. /package/esm/{siblings.d.mts → siblings.d.ts} +0 -0
  266. /package/{cjs → esm}/types.d.ts +0 -0
@@ -1,11 +1,11 @@
1
- import "../chunk-UIAXBAMD.js";
1
+ import "../../chunk-UIAXBAMD.js";
2
2
  import { basename, extname } from "node:path";
3
3
  import { Kind } from "graphql";
4
4
  import {
5
5
  convertCase,
6
6
  REPORT_ON_FIRST_CHARACTER,
7
7
  VIRTUAL_DOCUMENT_REGEX
8
- } from "../utils.js";
8
+ } from "../../utils.js";
9
9
  const MATCH_EXTENSION = "MATCH_EXTENSION", MATCH_STYLE = "MATCH_STYLE", CASE_STYLES = [
10
10
  "camelCase",
11
11
  "PascalCase",
@@ -187,8 +187,8 @@ const MATCH_EXTENSION = "MATCH_EXTENSION", MATCH_STYLE = "MATCH_STYLE", CASE_STY
187
187
  create(context) {
188
188
  const options = context.options[0] || {
189
189
  fileExtension: null
190
- }, filePath = context.filename;
191
- if (VIRTUAL_DOCUMENT_REGEX.test(filePath))
190
+ }, filePath = context.filename, isVirtualFile = VIRTUAL_DOCUMENT_REGEX.test(filePath);
191
+ if (process.env.NODE_ENV !== "test" && isVirtualFile)
192
192
  return {};
193
193
  const fileExtension = extname(filePath), filename = basename(filePath, fileExtension);
194
194
  return {
@@ -1,11 +1,11 @@
1
1
  import { FromSchema } from 'json-schema-to-ts';
2
- import { GraphQLESLintRule } from '../types.js';
2
+ import { GraphQLESLintRule } from '../../types.js';
3
3
  import 'eslint';
4
4
  import 'estree';
5
5
  import 'graphql';
6
6
  import 'graphql-config';
7
- import '../estree-converter/types.js';
8
- import '../siblings.js';
7
+ import '../../estree-converter/types.js';
8
+ import '../../siblings.js';
9
9
  import '@graphql-tools/utils';
10
10
 
11
11
  type AllowedStyle = 'camelCase' | 'PascalCase' | 'snake_case' | 'UPPER_CASE';
@@ -102,7 +102,9 @@ declare const schema: {
102
102
  readonly description: string;
103
103
  };
104
104
  };
105
- type RuleOptions = FromSchema<typeof schema>;
105
+ type RuleOptions = FromSchema<typeof schema, {
106
+ keepDefaultedPropertiesOptional: true;
107
+ }>;
106
108
  declare const rule: GraphQLESLintRule<RuleOptions>;
107
109
 
108
110
  export { type RuleOptions, rule };
@@ -1,4 +1,4 @@
1
- import "../chunk-UIAXBAMD.js";
1
+ import "../../chunk-UIAXBAMD.js";
2
2
  import { Kind } from "graphql";
3
3
  import {
4
4
  ARRAY_DEFAULT_OPTIONS,
@@ -6,7 +6,7 @@ import {
6
6
  englishJoinWords,
7
7
  truthy,
8
8
  TYPES_KINDS
9
- } from "../utils.js";
9
+ } from "../../utils.js";
10
10
  const KindToDisplayName = {
11
11
  // types
12
12
  [Kind.OBJECT_TYPE_DEFINITION]: "Type",
@@ -1,11 +1,11 @@
1
- import { GraphQLESLintRule } from '../types.js';
1
+ import { GraphQLESLintRule } from '../../types.js';
2
2
  import 'eslint';
3
3
  import 'estree';
4
4
  import 'graphql';
5
5
  import 'graphql-config';
6
6
  import 'json-schema-to-ts';
7
- import '../estree-converter/types.js';
8
- import '../siblings.js';
7
+ import '../../estree-converter/types.js';
8
+ import '../../siblings.js';
9
9
  import '@graphql-tools/utils';
10
10
 
11
11
  declare const rule: GraphQLESLintRule;
@@ -1,6 +1,6 @@
1
- import "../chunk-UIAXBAMD.js";
1
+ import "../../chunk-UIAXBAMD.js";
2
2
  import { Kind } from "graphql";
3
- import { getLocation } from "../utils.js";
3
+ import { getLocation } from "../../utils.js";
4
4
  const RULE_ID = "no-anonymous-operations", rule = {
5
5
  meta: {
6
6
  type: "suggestion",
@@ -1,11 +1,11 @@
1
- import { GraphQLESLintRule } from '../types.js';
1
+ import { GraphQLESLintRule } from '../../types.js';
2
2
  import 'eslint';
3
3
  import 'estree';
4
4
  import 'graphql';
5
5
  import 'graphql-config';
6
6
  import 'json-schema-to-ts';
7
- import '../estree-converter/types.js';
8
- import '../siblings.js';
7
+ import '../../estree-converter/types.js';
8
+ import '../../siblings.js';
9
9
  import '@graphql-tools/utils';
10
10
 
11
11
  declare const rule: GraphQLESLintRule<[], true>;
@@ -1,6 +1,6 @@
1
- import "../chunk-UIAXBAMD.js";
1
+ import "../../chunk-UIAXBAMD.js";
2
2
  import { Kind } from "graphql";
3
- import { requireGraphQLSchemaFromContext } from "../utils.js";
3
+ import { requireGraphQLSchemaFromContext } from "../../utils.js";
4
4
  const RULE_ID = "no-deprecated", rule = {
5
5
  meta: {
6
6
  type: "suggestion",
@@ -1,11 +1,11 @@
1
- import { GraphQLESLintRule } from '../types.js';
1
+ import { GraphQLESLintRule } from '../../types.js';
2
2
  import 'eslint';
3
3
  import 'estree';
4
4
  import 'graphql';
5
5
  import 'graphql-config';
6
6
  import 'json-schema-to-ts';
7
- import '../estree-converter/types.js';
8
- import '../siblings.js';
7
+ import '../../estree-converter/types.js';
8
+ import '../../siblings.js';
9
9
  import '@graphql-tools/utils';
10
10
 
11
11
  declare const rule: GraphQLESLintRule;
@@ -1,4 +1,4 @@
1
- import "../chunk-UIAXBAMD.js";
1
+ import "../../chunk-UIAXBAMD.js";
2
2
  import { Kind } from "graphql";
3
3
  const RULE_ID = "no-duplicate-fields", rule = {
4
4
  meta: {
@@ -1,11 +1,11 @@
1
- import { GraphQLESLintRule } from '../types.mjs';
1
+ import { GraphQLESLintRule } from '../../types.js';
2
2
  import 'eslint';
3
3
  import 'estree';
4
4
  import 'graphql';
5
5
  import 'graphql-config';
6
6
  import 'json-schema-to-ts';
7
- import '../estree-converter/types.mjs';
8
- import '../siblings.mjs';
7
+ import '../../estree-converter/types.js';
8
+ import '../../siblings.js';
9
9
  import '@graphql-tools/utils';
10
10
 
11
11
  declare const RULE_ID = "HASHTAG_COMMENT";
@@ -1,6 +1,6 @@
1
- import "../chunk-UIAXBAMD.js";
1
+ import "../../chunk-UIAXBAMD.js";
2
2
  import { TokenKind } from "graphql";
3
- import { getNodeName } from "../utils.js";
3
+ import { getNodeName } from "../../utils.js";
4
4
  const RULE_ID = "HASHTAG_COMMENT", rule = {
5
5
  meta: {
6
6
  type: "suggestion",
@@ -1,11 +1,11 @@
1
- import { GraphQLESLintRule } from '../types.js';
1
+ import { GraphQLESLintRule } from '../../types.js';
2
2
  import 'eslint';
3
3
  import 'estree';
4
4
  import 'graphql';
5
5
  import 'graphql-config';
6
6
  import 'json-schema-to-ts';
7
- import '../estree-converter/types.js';
8
- import '../siblings.js';
7
+ import '../../estree-converter/types.js';
8
+ import '../../siblings.js';
9
9
  import '@graphql-tools/utils';
10
10
 
11
11
  declare const rule: GraphQLESLintRule;
@@ -1,7 +1,7 @@
1
- import "../chunk-UIAXBAMD.js";
1
+ import "../../chunk-UIAXBAMD.js";
2
2
  import { relative } from "node:path";
3
3
  import { visit } from "graphql";
4
- import { CWD, requireSiblingsOperations } from "../utils.js";
4
+ import { CWD, requireSiblingsOperations } from "../../utils.js";
5
5
  const RULE_ID = "no-one-place-fragments", rule = {
6
6
  meta: {
7
7
  type: "suggestion",
@@ -1,11 +1,11 @@
1
1
  import { FromSchema } from 'json-schema-to-ts';
2
- import { GraphQLESLintRule } from '../types.mjs';
2
+ import { GraphQLESLintRule } from '../../types.js';
3
3
  import 'eslint';
4
4
  import 'estree';
5
5
  import 'graphql';
6
6
  import 'graphql-config';
7
- import '../estree-converter/types.mjs';
8
- import '../siblings.mjs';
7
+ import '../../estree-converter/types.js';
8
+ import '../../siblings.js';
9
9
  import '@graphql-tools/utils';
10
10
 
11
11
  declare const schema: {
@@ -1,5 +1,5 @@
1
- import "../chunk-UIAXBAMD.js";
2
- import { ARRAY_DEFAULT_OPTIONS, requireGraphQLSchemaFromContext, truthy } from "../utils.js";
1
+ import "../../chunk-UIAXBAMD.js";
2
+ import { ARRAY_DEFAULT_OPTIONS, requireGraphQLSchemaFromContext, truthy } from "../../utils.js";
3
3
  const schema = {
4
4
  type: "array",
5
5
  minItems: 1,
@@ -1,11 +1,11 @@
1
- import { GraphQLESLintRule } from '../types.js';
1
+ import { GraphQLESLintRule } from '../../types.js';
2
2
  import 'eslint';
3
3
  import 'estree';
4
4
  import 'graphql';
5
5
  import 'graphql-config';
6
6
  import 'json-schema-to-ts';
7
- import '../estree-converter/types.js';
8
- import '../siblings.js';
7
+ import '../../estree-converter/types.js';
8
+ import '../../siblings.js';
9
9
  import '@graphql-tools/utils';
10
10
 
11
11
  declare const rule: GraphQLESLintRule;
@@ -1,6 +1,6 @@
1
- import "../chunk-UIAXBAMD.js";
1
+ import "../../chunk-UIAXBAMD.js";
2
2
  import { isScalarType, Kind } from "graphql";
3
- import { getNodeName, requireGraphQLSchemaFromContext } from "../utils.js";
3
+ import { getNodeName, requireGraphQLSchemaFromContext } from "../../utils.js";
4
4
  const RULE_ID = "no-scalar-result-type-on-mutation", rule = {
5
5
  meta: {
6
6
  type: "suggestion",
@@ -0,0 +1,13 @@
1
+ import { GraphQLESLintRule } from '../../types.js';
2
+ import 'eslint';
3
+ import 'estree';
4
+ import 'graphql';
5
+ import 'graphql-config';
6
+ import 'json-schema-to-ts';
7
+ import '../../estree-converter/types.js';
8
+ import '../../siblings.js';
9
+ import '@graphql-tools/utils';
10
+
11
+ declare const rule: GraphQLESLintRule;
12
+
13
+ export { rule };
@@ -1,4 +1,4 @@
1
- import "../chunk-UIAXBAMD.js";
1
+ import "../../chunk-UIAXBAMD.js";
2
2
  const NO_TYPENAME_PREFIX = "NO_TYPENAME_PREFIX", rule = {
3
3
  meta: {
4
4
  type: "suggestion",
@@ -0,0 +1,13 @@
1
+ import { GraphQLESLintRule } from '../../types.js';
2
+ import 'eslint';
3
+ import 'estree';
4
+ import 'graphql';
5
+ import 'graphql-config';
6
+ import 'json-schema-to-ts';
7
+ import '../../estree-converter/types.js';
8
+ import '../../siblings.js';
9
+ import '@graphql-tools/utils';
10
+
11
+ declare const rule: GraphQLESLintRule;
12
+
13
+ export { rule };
@@ -1,4 +1,4 @@
1
- import "../chunk-UIAXBAMD.js";
1
+ import "../../chunk-UIAXBAMD.js";
2
2
  import {
3
3
  DirectiveLocation,
4
4
  isInterfaceType,
@@ -6,7 +6,8 @@ import {
6
6
  visit
7
7
  } from "graphql";
8
8
  import lowerCase from "lodash.lowercase";
9
- import { getTypeName, requireGraphQLSchemaFromContext } from "../utils.js";
9
+ import { ModuleCache } from "../../cache.js";
10
+ import { getTypeName, requireGraphQLSchemaFromContext } from "../../utils.js";
10
11
  const RULE_ID = "no-unreachable-types", KINDS = [
11
12
  Kind.DIRECTIVE_DEFINITION,
12
13
  Kind.OBJECT_TYPE_DEFINITION,
@@ -21,9 +22,7 @@ const RULE_ID = "no-unreachable-types", KINDS = [
21
22
  Kind.UNION_TYPE_EXTENSION,
22
23
  Kind.ENUM_TYPE_DEFINITION,
23
24
  Kind.ENUM_TYPE_EXTENSION
24
- ];
25
- let reachableTypesCache;
26
- const RequestDirectiveLocations = /* @__PURE__ */ new Set([
25
+ ], reachableTypesCache = new ModuleCache(), RequestDirectiveLocations = /* @__PURE__ */ new Set([
27
26
  DirectiveLocation.QUERY,
28
27
  DirectiveLocation.MUTATION,
29
28
  DirectiveLocation.SUBSCRIPTION,
@@ -34,8 +33,9 @@ const RequestDirectiveLocations = /* @__PURE__ */ new Set([
34
33
  DirectiveLocation.VARIABLE_DEFINITION
35
34
  ]);
36
35
  function getReachableTypes(schema) {
37
- if (reachableTypesCache)
38
- return reachableTypesCache;
36
+ const cachedValue = reachableTypesCache.get(schema);
37
+ if (process.env.NODE_ENV !== "test" && cachedValue)
38
+ return cachedValue;
39
39
  const reachableTypes = /* @__PURE__ */ new Set(), collect = (node) => {
40
40
  const typeName = getTypeName(node);
41
41
  if (reachableTypes.has(typeName))
@@ -72,7 +72,7 @@ function getReachableTypes(schema) {
72
72
  argTypeName && reachableTypes.add(argTypeName);
73
73
  }
74
74
  }
75
- return reachableTypesCache = reachableTypes, reachableTypesCache;
75
+ return reachableTypesCache.set(schema, reachableTypes), reachableTypes;
76
76
  }
77
77
  const rule = {
78
78
  meta: {
@@ -0,0 +1,34 @@
1
+ import { FromSchema } from 'json-schema-to-ts';
2
+ import { GraphQLESLintRule } from '../../types.js';
3
+ import 'eslint';
4
+ import 'estree';
5
+ import 'graphql';
6
+ import 'graphql-config';
7
+ import '../../estree-converter/types.js';
8
+ import '../../siblings.js';
9
+ import '@graphql-tools/utils';
10
+
11
+ declare const schema: {
12
+ readonly type: "array";
13
+ readonly maxItems: 1;
14
+ readonly items: {
15
+ readonly type: "object";
16
+ readonly additionalProperties: false;
17
+ readonly properties: {
18
+ readonly ignoredFieldSelectors: {
19
+ readonly type: "array";
20
+ readonly uniqueItems: true;
21
+ readonly minItems: 1;
22
+ readonly description: string;
23
+ readonly items: {
24
+ readonly type: "string";
25
+ readonly pattern: "^\\[(.+)]$";
26
+ };
27
+ };
28
+ };
29
+ };
30
+ };
31
+ type RuleOptions = FromSchema<typeof schema>;
32
+ declare const rule: GraphQLESLintRule<RuleOptions>;
33
+
34
+ export { type RuleOptions, rule };
@@ -0,0 +1,224 @@
1
+ import "../../chunk-UIAXBAMD.js";
2
+ import { TypeInfo, visit, visitWithTypeInfo } from "graphql";
3
+ import { ModuleCache } from "../../cache.js";
4
+ import { requireGraphQLSchemaFromContext, requireSiblingsOperations } from "../../utils.js";
5
+ const RULE_ID = "no-unused-fields", RELAY_SCHEMA = (
6
+ /* GraphQL */
7
+ `
8
+ # Root Query Type
9
+ type Query {
10
+ user: User
11
+ }
12
+
13
+ # User Type
14
+ type User {
15
+ id: ID!
16
+ name: String!
17
+ friends(first: Int, after: String): FriendConnection!
18
+ }
19
+
20
+ # FriendConnection Type (Relay Connection)
21
+ type FriendConnection {
22
+ edges: [FriendEdge]
23
+ pageInfo: PageInfo!
24
+ }
25
+
26
+ # FriendEdge Type
27
+ type FriendEdge {
28
+ cursor: String!
29
+ node: Friend!
30
+ }
31
+
32
+ # Friend Type
33
+ type Friend {
34
+ id: ID!
35
+ name: String!
36
+ }
37
+
38
+ # PageInfo Type (Relay Pagination)
39
+ type PageInfo {
40
+ hasPreviousPage: Boolean!
41
+ hasNextPage: Boolean!
42
+ startCursor: String
43
+ endCursor: String
44
+ }
45
+ `
46
+ ), RELAY_QUERY = (
47
+ /* GraphQL */
48
+ `
49
+ query {
50
+ user {
51
+ id
52
+ name
53
+ friends(first: 10) {
54
+ edges {
55
+ node {
56
+ id
57
+ name
58
+ }
59
+ }
60
+ }
61
+ }
62
+ }
63
+ `
64
+ ), RELAY_DEFAULT_IGNORED_FIELD_SELECTORS = [
65
+ "[parent.name.value=PageInfo][name.value=/(endCursor|startCursor|hasNextPage|hasPreviousPage)/]",
66
+ "[parent.name.value=/Edge$/][name.value=cursor]",
67
+ "[parent.name.value=/Connection$/][name.value=pageInfo]"
68
+ ], schema = {
69
+ type: "array",
70
+ maxItems: 1,
71
+ items: {
72
+ type: "object",
73
+ additionalProperties: !1,
74
+ properties: {
75
+ ignoredFieldSelectors: {
76
+ type: "array",
77
+ uniqueItems: !0,
78
+ minItems: 1,
79
+ description: [
80
+ "Fields that will be ignored and are allowed to be unused.",
81
+ "",
82
+ "E.g. The following selector will ignore all the relay pagination fields for every connection exposed in the schema:",
83
+ "```json",
84
+ JSON.stringify(RELAY_DEFAULT_IGNORED_FIELD_SELECTORS, null, 2),
85
+ "```",
86
+ "",
87
+ "> These fields are defined by ESLint [`selectors`](https://eslint.org/docs/developer-guide/selectors).",
88
+ "> Paste or drop code into the editor in [ASTExplorer](https://astexplorer.net) and inspect the generated AST to compose your selector."
89
+ ].join(`
90
+ `),
91
+ items: {
92
+ type: "string",
93
+ pattern: "^\\[(.+)]$"
94
+ }
95
+ }
96
+ }
97
+ }
98
+ }, usedFieldsCache = new ModuleCache();
99
+ function getUsedFields(schema2, operations) {
100
+ const cachedValue = usedFieldsCache.get(schema2);
101
+ if (process.env.NODE_ENV !== "test" && cachedValue)
102
+ return cachedValue;
103
+ const usedFields = /* @__PURE__ */ Object.create(null), typeInfo = new TypeInfo(schema2), visitor = visitWithTypeInfo(typeInfo, {
104
+ Field(node) {
105
+ if (!typeInfo.getFieldDef())
106
+ return !1;
107
+ const parentTypeName = typeInfo.getParentType().name, fieldName = node.name.value;
108
+ usedFields[parentTypeName] ??= /* @__PURE__ */ new Set(), usedFields[parentTypeName].add(fieldName);
109
+ }
110
+ }), allDocuments = [...operations.getOperations(), ...operations.getFragments()];
111
+ for (const { document } of allDocuments)
112
+ visit(document, visitor);
113
+ return usedFieldsCache.set(schema2, usedFields), usedFields;
114
+ }
115
+ const rule = {
116
+ meta: {
117
+ messages: {
118
+ [RULE_ID]: 'Field "{{fieldName}}" is unused'
119
+ },
120
+ docs: {
121
+ description: "Requires all fields to be used at some level by siblings operations.",
122
+ category: "Schema",
123
+ url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
124
+ requiresSiblings: !0,
125
+ requiresSchema: !0,
126
+ // Requires documents to be set
127
+ isDisabledForAllConfig: !0,
128
+ examples: [
129
+ {
130
+ title: "Incorrect",
131
+ code: (
132
+ /* GraphQL */
133
+ `
134
+ type User {
135
+ id: ID!
136
+ name: String
137
+ someUnusedField: String
138
+ }
139
+
140
+ type Query {
141
+ me: User
142
+ }
143
+
144
+ query {
145
+ me {
146
+ id
147
+ name
148
+ }
149
+ }
150
+ `
151
+ )
152
+ },
153
+ {
154
+ title: "Correct",
155
+ code: (
156
+ /* GraphQL */
157
+ `
158
+ type User {
159
+ id: ID!
160
+ name: String
161
+ }
162
+
163
+ type Query {
164
+ me: User
165
+ }
166
+
167
+ query {
168
+ me {
169
+ id
170
+ name
171
+ }
172
+ }
173
+ `
174
+ )
175
+ },
176
+ {
177
+ title: "Correct (ignoring fields)",
178
+ usage: [{ ignoredFieldSelectors: RELAY_DEFAULT_IGNORED_FIELD_SELECTORS }],
179
+ code: (
180
+ /* GraphQL */
181
+ `
182
+ ### 1\uFE0F\u20E3 YOUR SCHEMA
183
+ ${RELAY_SCHEMA}
184
+
185
+ ### 2\uFE0F\u20E3 YOUR QUERY
186
+ ${RELAY_QUERY}
187
+ `
188
+ )
189
+ }
190
+ ]
191
+ },
192
+ type: "suggestion",
193
+ schema,
194
+ hasSuggestions: !0
195
+ },
196
+ create(context) {
197
+ const schema2 = requireGraphQLSchemaFromContext(RULE_ID, context), siblingsOperations = requireSiblingsOperations(RULE_ID, context), usedFields = getUsedFields(schema2, siblingsOperations), { ignoredFieldSelectors } = context.options[0] || {};
198
+ return {
199
+ [(ignoredFieldSelectors || []).reduce(
200
+ (acc, selector2) => `${acc}:not(${selector2})`,
201
+ "FieldDefinition"
202
+ )](node) {
203
+ const fieldName = node.name.value, parentTypeName = node.parent.name.value;
204
+ usedFields[parentTypeName]?.has(fieldName) || context.report({
205
+ node: node.name,
206
+ messageId: RULE_ID,
207
+ data: { fieldName },
208
+ suggest: [
209
+ {
210
+ desc: `Remove \`${fieldName}\` field`,
211
+ fix(fixer) {
212
+ const sourceCode = context.getSourceCode(), tokenBefore = sourceCode.getTokenBefore(node), tokenAfter = sourceCode.getTokenAfter(node), isEmptyType = tokenBefore.type === "{" && tokenAfter.type === "}";
213
+ return fixer.remove(isEmptyType ? node.parent : node);
214
+ }
215
+ }
216
+ ]
217
+ });
218
+ }
219
+ };
220
+ }
221
+ };
222
+ export {
223
+ rule
224
+ };
@@ -1,11 +1,11 @@
1
1
  import { FromSchema } from 'json-schema-to-ts';
2
- import { GraphQLESLintRule } from '../types.js';
2
+ import { GraphQLESLintRule } from '../../types.js';
3
3
  import 'eslint';
4
4
  import 'estree';
5
5
  import 'graphql';
6
6
  import 'graphql-config';
7
- import '../estree-converter/types.js';
8
- import '../siblings.js';
7
+ import '../../estree-converter/types.js';
8
+ import '../../siblings.js';
9
9
  import '@graphql-tools/utils';
10
10
 
11
11
  declare const schema: {
@@ -1,6 +1,6 @@
1
- import "../chunk-UIAXBAMD.js";
1
+ import "../../chunk-UIAXBAMD.js";
2
2
  import { isScalarType, Kind } from "graphql";
3
- import { requireGraphQLSchemaFromContext } from "../utils.js";
3
+ import { requireGraphQLSchemaFromContext } from "../../utils.js";
4
4
  const RULE_ID = "relay-arguments", MISSING_ARGUMENTS = "MISSING_ARGUMENTS", schema = {
5
5
  type: "array",
6
6
  maxItems: 1,
@@ -1,11 +1,11 @@
1
1
  import { Kind } from 'graphql';
2
- import { GraphQLESLintRule } from '../types.js';
2
+ import { GraphQLESLintRule } from '../../types.js';
3
3
  import 'eslint';
4
4
  import 'estree';
5
5
  import 'graphql-config';
6
6
  import 'json-schema-to-ts';
7
- import '../estree-converter/types.js';
8
- import '../siblings.js';
7
+ import '../../estree-converter/types.js';
8
+ import '../../siblings.js';
9
9
  import '@graphql-tools/utils';
10
10
 
11
11
  declare const NON_OBJECT_TYPES: Kind[];
@@ -1,4 +1,4 @@
1
- import "../chunk-UIAXBAMD.js";
1
+ import "../../chunk-UIAXBAMD.js";
2
2
  import { Kind } from "graphql";
3
3
  const 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 = [
4
4
  Kind.SCALAR_TYPE_DEFINITION,