@graphql-eslint/eslint-plugin 4.0.0-alpha-20220821140530-e968cfc → 4.0.0-alpha-20230801163310-8bc4340

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 (347) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +13 -253
  3. package/cjs/cache.d.ts +12 -0
  4. package/cjs/cache.js +62 -0
  5. package/cjs/configs/index.d.ts +148 -0
  6. package/cjs/configs/index.js +49 -0
  7. package/cjs/configs/operations-all.d.ts +22 -0
  8. package/cjs/configs/operations-all.js +27 -0
  9. package/cjs/configs/operations-recommended.d.ts +52 -0
  10. package/{configs/operations-recommended.json → cjs/configs/operations-recommended.js} +16 -14
  11. package/cjs/configs/relay.d.ts +12 -0
  12. package/{configs/relay.json → cjs/configs/relay.js} +6 -4
  13. package/cjs/configs/schema-all.d.ts +19 -0
  14. package/cjs/configs/schema-all.js +21 -0
  15. package/cjs/configs/schema-recommended.d.ts +49 -0
  16. package/{configs/schema-recommended.json → cjs/configs/schema-recommended.js} +19 -20
  17. package/cjs/documents.d.ts +6 -0
  18. package/cjs/documents.js +81 -0
  19. package/cjs/estree-converter/converter.d.ts +8 -0
  20. package/cjs/estree-converter/converter.js +83 -0
  21. package/cjs/estree-converter/index.d.ts +8 -0
  22. package/cjs/estree-converter/index.js +26 -0
  23. package/cjs/estree-converter/types.d.ts +42 -0
  24. package/cjs/estree-converter/types.js +16 -0
  25. package/cjs/estree-converter/utils.d.ts +18 -0
  26. package/cjs/estree-converter/utils.js +135 -0
  27. package/cjs/flat-configs.d.ts +260 -0
  28. package/cjs/flat-configs.js +60 -0
  29. package/cjs/graphql-config.d.ts +13 -0
  30. package/cjs/graphql-config.js +86 -0
  31. package/cjs/index.d.ts +22 -0
  32. package/cjs/index.js +49 -0
  33. package/cjs/parser.d.ts +12 -0
  34. package/cjs/parser.js +103 -0
  35. package/cjs/processor.d.ts +9 -0
  36. package/cjs/processor.js +127 -0
  37. package/cjs/rules/alphabetize.d.ts +84 -0
  38. package/cjs/rules/alphabetize.js +395 -0
  39. package/cjs/rules/description-style.d.ts +28 -0
  40. package/cjs/rules/description-style.js +109 -0
  41. package/cjs/rules/graphql-js-validation.d.ts +12 -0
  42. package/cjs/rules/graphql-js-validation.js +669 -0
  43. package/cjs/rules/index.d.ts +125 -0
  44. package/cjs/rules/index.js +99 -0
  45. package/cjs/rules/input-name.d.ts +43 -0
  46. package/cjs/rules/input-name.js +170 -0
  47. package/cjs/rules/lone-executable-definition.d.ts +34 -0
  48. package/cjs/rules/lone-executable-definition.js +119 -0
  49. package/cjs/rules/match-document-filename.d.ts +80 -0
  50. package/cjs/rules/match-document-filename.js +282 -0
  51. package/cjs/rules/naming-convention.d.ts +107 -0
  52. package/cjs/rules/naming-convention.js +434 -0
  53. package/cjs/rules/no-anonymous-operations.d.ts +12 -0
  54. package/cjs/rules/no-anonymous-operations.js +98 -0
  55. package/cjs/rules/no-case-insensitive-enum-values-duplicates.d.ts +12 -0
  56. package/cjs/rules/no-case-insensitive-enum-values-duplicates.js +96 -0
  57. package/cjs/rules/no-deprecated.d.ts +12 -0
  58. package/cjs/rules/no-deprecated.js +157 -0
  59. package/cjs/rules/no-duplicate-fields.d.ts +12 -0
  60. package/cjs/rules/no-duplicate-fields.js +146 -0
  61. package/cjs/rules/no-hashtag-description.d.ts +13 -0
  62. package/cjs/rules/no-hashtag-description.js +140 -0
  63. package/cjs/rules/no-one-place-fragments.d.ts +12 -0
  64. package/cjs/rules/no-one-place-fragments.js +113 -0
  65. package/cjs/rules/no-root-type.d.ts +33 -0
  66. package/cjs/rules/no-root-type.js +113 -0
  67. package/cjs/rules/no-scalar-result-type-on-mutation.d.ts +12 -0
  68. package/cjs/rules/no-scalar-result-type-on-mutation.js +100 -0
  69. package/cjs/rules/no-typename-prefix.d.ts +12 -0
  70. package/cjs/rules/no-typename-prefix.js +98 -0
  71. package/cjs/rules/no-unreachable-types.d.ts +12 -0
  72. package/cjs/rules/no-unreachable-types.js +199 -0
  73. package/cjs/rules/no-unused-fields.d.ts +12 -0
  74. package/cjs/rules/no-unused-fields.js +157 -0
  75. package/cjs/rules/relay-arguments.d.ts +29 -0
  76. package/cjs/rules/relay-arguments.js +149 -0
  77. package/cjs/rules/relay-connection-types.d.ts +13 -0
  78. package/cjs/rules/relay-connection-types.js +142 -0
  79. package/cjs/rules/relay-edge-types.d.ts +39 -0
  80. package/cjs/rules/relay-edge-types.js +212 -0
  81. package/cjs/rules/relay-page-info.d.ts +12 -0
  82. package/cjs/rules/relay-page-info.js +121 -0
  83. package/cjs/rules/require-deprecation-date.d.ts +26 -0
  84. package/cjs/rules/require-deprecation-date.js +164 -0
  85. package/cjs/rules/require-deprecation-reason.d.ts +12 -0
  86. package/cjs/rules/require-deprecation-reason.js +93 -0
  87. package/cjs/rules/require-description.d.ts +23 -0
  88. package/cjs/rules/require-description.js +205 -0
  89. package/cjs/rules/require-field-of-type-query-in-mutation-result.d.ts +12 -0
  90. package/cjs/rules/require-field-of-type-query-in-mutation-result.js +102 -0
  91. package/cjs/rules/require-id-when-available.d.ts +44 -0
  92. package/cjs/rules/require-id-when-available.js +241 -0
  93. package/cjs/rules/require-import-fragment.d.ts +12 -0
  94. package/cjs/rules/require-import-fragment.js +166 -0
  95. package/cjs/rules/require-nullable-fields-with-oneof.d.ts +12 -0
  96. package/cjs/rules/require-nullable-fields-with-oneof.js +92 -0
  97. package/cjs/rules/require-nullable-result-in-root.d.ts +12 -0
  98. package/cjs/rules/require-nullable-result-in-root.js +109 -0
  99. package/cjs/rules/require-type-pattern-with-oneof.d.ts +12 -0
  100. package/cjs/rules/require-type-pattern-with-oneof.js +91 -0
  101. package/cjs/rules/selection-set-depth.d.ts +36 -0
  102. package/cjs/rules/selection-set-depth.js +175 -0
  103. package/cjs/rules/strict-id-in-types.d.ts +65 -0
  104. package/cjs/rules/strict-id-in-types.js +186 -0
  105. package/cjs/rules/unique-fragment-name.d.ts +13 -0
  106. package/cjs/rules/unique-fragment-name.js +118 -0
  107. package/cjs/rules/unique-operation-name.d.ts +12 -0
  108. package/cjs/rules/unique-operation-name.js +95 -0
  109. package/cjs/schema.d.ts +12 -0
  110. package/cjs/schema.js +65 -0
  111. package/cjs/siblings.d.ts +8 -0
  112. package/cjs/siblings.js +136 -0
  113. package/cjs/types-8d5f4ae0.d.ts +107 -0
  114. package/cjs/types.d.ts +8 -0
  115. package/cjs/types.js +16 -0
  116. package/cjs/utils.d.ts +44 -0
  117. package/cjs/utils.js +205 -0
  118. package/esm/cache.d.mts +12 -0
  119. package/esm/cache.js +29 -0
  120. package/esm/chunk-BMTV3EA2.js +8 -0
  121. package/esm/configs/index.d.mts +148 -0
  122. package/esm/configs/index.js +16 -0
  123. package/esm/configs/operations-all.d.mts +22 -0
  124. package/esm/configs/operations-all.js +34 -0
  125. package/esm/configs/operations-recommended.d.mts +52 -0
  126. package/esm/configs/operations-recommended.js +59 -0
  127. package/esm/configs/relay.d.mts +12 -0
  128. package/esm/configs/relay.js +18 -0
  129. package/esm/configs/schema-all.d.mts +19 -0
  130. package/esm/configs/schema-all.js +28 -0
  131. package/esm/configs/schema-recommended.d.mts +49 -0
  132. package/esm/configs/schema-recommended.js +55 -0
  133. package/esm/documents.d.mts +6 -0
  134. package/esm/documents.js +48 -0
  135. package/esm/estree-converter/converter.d.mts +8 -0
  136. package/esm/estree-converter/converter.js +65 -0
  137. package/esm/estree-converter/index.d.mts +8 -0
  138. package/esm/estree-converter/index.js +3 -0
  139. package/esm/estree-converter/types.d.mts +42 -0
  140. package/esm/estree-converter/types.js +0 -0
  141. package/esm/estree-converter/utils.d.mts +18 -0
  142. package/esm/estree-converter/utils.js +114 -0
  143. package/esm/flat-configs.d.mts +260 -0
  144. package/esm/flat-configs.js +37 -0
  145. package/esm/graphql-config.d.mts +13 -0
  146. package/esm/graphql-config.js +55 -0
  147. package/esm/index.d.mts +22 -0
  148. package/esm/index.js +18 -0
  149. package/esm/package.json +1 -0
  150. package/esm/parser.d.mts +12 -0
  151. package/esm/parser.js +70 -0
  152. package/esm/processor.d.mts +9 -0
  153. package/esm/processor.js +106 -0
  154. package/esm/rules/alphabetize.d.mts +84 -0
  155. package/esm/rules/alphabetize.js +364 -0
  156. package/esm/rules/description-style.d.mts +28 -0
  157. package/esm/rules/description-style.js +86 -0
  158. package/esm/rules/graphql-js-validation.d.mts +12 -0
  159. package/esm/rules/graphql-js-validation.js +658 -0
  160. package/esm/rules/index.d.mts +125 -0
  161. package/esm/rules/index.js +76 -0
  162. package/esm/rules/input-name.d.mts +43 -0
  163. package/esm/rules/input-name.js +149 -0
  164. package/esm/rules/lone-executable-definition.d.mts +34 -0
  165. package/esm/rules/lone-executable-definition.js +96 -0
  166. package/esm/rules/match-document-filename.d.mts +80 -0
  167. package/esm/rules/match-document-filename.js +263 -0
  168. package/esm/rules/naming-convention.d.mts +107 -0
  169. package/esm/rules/naming-convention.js +417 -0
  170. package/esm/rules/no-anonymous-operations.d.mts +12 -0
  171. package/esm/rules/no-anonymous-operations.js +75 -0
  172. package/esm/rules/no-case-insensitive-enum-values-duplicates.d.mts +12 -0
  173. package/esm/rules/no-case-insensitive-enum-values-duplicates.js +73 -0
  174. package/esm/rules/no-deprecated.d.mts +12 -0
  175. package/esm/rules/no-deprecated.js +134 -0
  176. package/esm/rules/no-duplicate-fields.d.mts +12 -0
  177. package/esm/rules/no-duplicate-fields.js +123 -0
  178. package/esm/rules/no-hashtag-description.d.mts +13 -0
  179. package/esm/rules/no-hashtag-description.js +116 -0
  180. package/esm/rules/no-one-place-fragments.d.mts +12 -0
  181. package/esm/rules/no-one-place-fragments.js +90 -0
  182. package/esm/rules/no-root-type.d.mts +33 -0
  183. package/esm/rules/no-root-type.js +90 -0
  184. package/esm/rules/no-scalar-result-type-on-mutation.d.mts +12 -0
  185. package/esm/rules/no-scalar-result-type-on-mutation.js +77 -0
  186. package/esm/rules/no-typename-prefix.d.mts +12 -0
  187. package/esm/rules/no-typename-prefix.js +75 -0
  188. package/esm/rules/no-unreachable-types.d.mts +12 -0
  189. package/esm/rules/no-unreachable-types.js +171 -0
  190. package/esm/rules/no-unused-fields.d.mts +12 -0
  191. package/esm/rules/no-unused-fields.js +134 -0
  192. package/esm/rules/relay-arguments.d.mts +29 -0
  193. package/esm/rules/relay-arguments.js +126 -0
  194. package/esm/rules/relay-connection-types.d.mts +13 -0
  195. package/esm/rules/relay-connection-types.js +118 -0
  196. package/esm/rules/relay-edge-types.d.mts +39 -0
  197. package/esm/rules/relay-edge-types.js +194 -0
  198. package/esm/rules/relay-page-info.d.mts +12 -0
  199. package/esm/rules/relay-page-info.js +98 -0
  200. package/esm/rules/require-deprecation-date.d.mts +26 -0
  201. package/esm/rules/require-deprecation-date.js +141 -0
  202. package/esm/rules/require-deprecation-reason.d.mts +12 -0
  203. package/esm/rules/require-deprecation-reason.js +70 -0
  204. package/esm/rules/require-description.d.mts +23 -0
  205. package/esm/rules/require-description.js +186 -0
  206. package/esm/rules/require-field-of-type-query-in-mutation-result.d.mts +12 -0
  207. package/esm/rules/require-field-of-type-query-in-mutation-result.js +79 -0
  208. package/esm/rules/require-id-when-available.d.mts +44 -0
  209. package/esm/rules/require-id-when-available.js +231 -0
  210. package/esm/rules/require-import-fragment.d.mts +12 -0
  211. package/esm/rules/require-import-fragment.js +133 -0
  212. package/esm/rules/require-nullable-fields-with-oneof.d.mts +12 -0
  213. package/esm/rules/require-nullable-fields-with-oneof.js +69 -0
  214. package/esm/rules/require-nullable-result-in-root.d.mts +12 -0
  215. package/esm/rules/require-nullable-result-in-root.js +86 -0
  216. package/esm/rules/require-type-pattern-with-oneof.d.mts +12 -0
  217. package/esm/rules/require-type-pattern-with-oneof.js +68 -0
  218. package/esm/rules/selection-set-depth.d.mts +36 -0
  219. package/esm/rules/selection-set-depth.js +142 -0
  220. package/esm/rules/strict-id-in-types.d.mts +65 -0
  221. package/esm/rules/strict-id-in-types.js +169 -0
  222. package/esm/rules/unique-fragment-name.d.mts +13 -0
  223. package/esm/rules/unique-fragment-name.js +94 -0
  224. package/esm/rules/unique-operation-name.d.mts +12 -0
  225. package/esm/rules/unique-operation-name.js +72 -0
  226. package/esm/schema.d.mts +12 -0
  227. package/esm/schema.js +32 -0
  228. package/esm/siblings.d.mts +8 -0
  229. package/esm/siblings.js +116 -0
  230. package/esm/types-ace77d86.d.ts +107 -0
  231. package/esm/types.d.mts +8 -0
  232. package/esm/types.js +0 -0
  233. package/esm/utils.d.mts +44 -0
  234. package/esm/utils.js +155 -0
  235. package/package.json +47 -34
  236. package/configs/base.json +0 -4
  237. package/configs/operations-all.json +0 -24
  238. package/configs/schema-all.json +0 -26
  239. package/docs/README.md +0 -75
  240. package/docs/custom-rules.md +0 -148
  241. package/docs/deprecated-rules.md +0 -21
  242. package/docs/parser-options.md +0 -85
  243. package/docs/parser.md +0 -49
  244. package/docs/rules/alphabetize.md +0 -178
  245. package/docs/rules/description-style.md +0 -54
  246. package/docs/rules/executable-definitions.md +0 -17
  247. package/docs/rules/fields-on-correct-type.md +0 -17
  248. package/docs/rules/fragments-on-composite-type.md +0 -17
  249. package/docs/rules/input-name.md +0 -76
  250. package/docs/rules/known-argument-names.md +0 -17
  251. package/docs/rules/known-directives.md +0 -44
  252. package/docs/rules/known-fragment-names.md +0 -69
  253. package/docs/rules/known-type-names.md +0 -17
  254. package/docs/rules/lone-anonymous-operation.md +0 -17
  255. package/docs/rules/lone-schema-definition.md +0 -17
  256. package/docs/rules/match-document-filename.md +0 -156
  257. package/docs/rules/naming-convention.md +0 -300
  258. package/docs/rules/no-anonymous-operations.md +0 -39
  259. package/docs/rules/no-case-insensitive-enum-values-duplicates.md +0 -43
  260. package/docs/rules/no-deprecated.md +0 -85
  261. package/docs/rules/no-duplicate-fields.md +0 -65
  262. package/docs/rules/no-fragment-cycles.md +0 -17
  263. package/docs/rules/no-hashtag-description.md +0 -59
  264. package/docs/rules/no-root-type.md +0 -53
  265. package/docs/rules/no-scalar-result-type-on-mutation.md +0 -37
  266. package/docs/rules/no-typename-prefix.md +0 -39
  267. package/docs/rules/no-undefined-variables.md +0 -17
  268. package/docs/rules/no-unreachable-types.md +0 -49
  269. package/docs/rules/no-unused-fields.md +0 -62
  270. package/docs/rules/no-unused-fragments.md +0 -17
  271. package/docs/rules/no-unused-variables.md +0 -17
  272. package/docs/rules/one-field-subscriptions.md +0 -17
  273. package/docs/rules/overlapping-fields-can-be-merged.md +0 -17
  274. package/docs/rules/possible-fragment-spread.md +0 -17
  275. package/docs/rules/possible-type-extension.md +0 -15
  276. package/docs/rules/provided-required-arguments.md +0 -17
  277. package/docs/rules/relay-arguments.md +0 -57
  278. package/docs/rules/relay-connection-types.md +0 -42
  279. package/docs/rules/relay-edge-types.md +0 -56
  280. package/docs/rules/relay-page-info.md +0 -32
  281. package/docs/rules/require-deprecation-date.md +0 -56
  282. package/docs/rules/require-deprecation-reason.md +0 -47
  283. package/docs/rules/require-description.md +0 -115
  284. package/docs/rules/require-field-of-type-query-in-mutation-result.md +0 -47
  285. package/docs/rules/require-id-when-available.md +0 -88
  286. package/docs/rules/scalar-leafs.md +0 -17
  287. package/docs/rules/selection-set-depth.md +0 -76
  288. package/docs/rules/strict-id-in-types.md +0 -130
  289. package/docs/rules/unique-argument-names.md +0 -17
  290. package/docs/rules/unique-directive-names-per-location.md +0 -17
  291. package/docs/rules/unique-directive-names.md +0 -17
  292. package/docs/rules/unique-enum-value-names.md +0 -15
  293. package/docs/rules/unique-field-definition-names.md +0 -17
  294. package/docs/rules/unique-fragment-name.md +0 -51
  295. package/docs/rules/unique-input-field-names.md +0 -17
  296. package/docs/rules/unique-operation-name.md +0 -55
  297. package/docs/rules/unique-operation-types.md +0 -17
  298. package/docs/rules/unique-type-names.md +0 -17
  299. package/docs/rules/unique-variable-names.md +0 -17
  300. package/docs/rules/value-literals-of-correct-type.md +0 -17
  301. package/docs/rules/variables-are-input-types.md +0 -17
  302. package/docs/rules/variables-in-allowed-position.md +0 -17
  303. package/estree-converter/converter.d.ts +0 -3
  304. package/estree-converter/index.d.ts +0 -3
  305. package/estree-converter/types.d.ts +0 -40
  306. package/estree-converter/utils.d.ts +0 -13
  307. package/graphql-config.d.ts +0 -3
  308. package/index.d.ts +0 -16
  309. package/index.js +0 -4653
  310. package/index.mjs +0 -4641
  311. package/parser.d.ts +0 -2
  312. package/processor.d.ts +0 -7
  313. package/rules/alphabetize.d.ts +0 -16
  314. package/rules/description-style.d.ts +0 -6
  315. package/rules/graphql-js-validation.d.ts +0 -2
  316. package/rules/index.d.ts +0 -41
  317. package/rules/input-name.d.ts +0 -9
  318. package/rules/match-document-filename.d.ts +0 -18
  319. package/rules/naming-convention.d.ts +0 -37
  320. package/rules/no-anonymous-operations.d.ts +0 -3
  321. package/rules/no-case-insensitive-enum-values-duplicates.d.ts +0 -3
  322. package/rules/no-deprecated.d.ts +0 -3
  323. package/rules/no-duplicate-fields.d.ts +0 -3
  324. package/rules/no-hashtag-description.d.ts +0 -3
  325. package/rules/no-root-type.d.ts +0 -7
  326. package/rules/no-scalar-result-type-on-mutation.d.ts +0 -3
  327. package/rules/no-typename-prefix.d.ts +0 -3
  328. package/rules/no-unreachable-types.d.ts +0 -3
  329. package/rules/no-unused-fields.d.ts +0 -3
  330. package/rules/relay-arguments.d.ts +0 -6
  331. package/rules/relay-connection-types.d.ts +0 -5
  332. package/rules/relay-edge-types.d.ts +0 -8
  333. package/rules/relay-page-info.d.ts +0 -3
  334. package/rules/require-deprecation-date.d.ts +0 -5
  335. package/rules/require-deprecation-reason.d.ts +0 -3
  336. package/rules/require-description.d.ts +0 -11
  337. package/rules/require-field-of-type-query-in-mutation-result.d.ts +0 -3
  338. package/rules/require-id-when-available.d.ts +0 -6
  339. package/rules/selection-set-depth.d.ts +0 -7
  340. package/rules/strict-id-in-types.d.ts +0 -11
  341. package/rules/unique-fragment-name.d.ts +0 -6
  342. package/rules/unique-operation-name.d.ts +0 -3
  343. package/schema.d.ts +0 -3
  344. package/sibling-operations.d.ts +0 -21
  345. package/testkit.d.ts +0 -27
  346. package/types.d.ts +0 -79
  347. package/utils.d.ts +0 -39
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var no_deprecated_exports = {};
20
+ __export(no_deprecated_exports, {
21
+ rule: () => rule
22
+ });
23
+ module.exports = __toCommonJS(no_deprecated_exports);
24
+ var import_graphql = require("graphql");
25
+ var import_utils = require("../utils.js");
26
+ const RULE_ID = "no-deprecated";
27
+ const rule = {
28
+ meta: {
29
+ type: "suggestion",
30
+ hasSuggestions: true,
31
+ docs: {
32
+ category: "Operations",
33
+ description: "Enforce that deprecated fields or enum values are not in use by operations.",
34
+ url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
35
+ requiresSchema: true,
36
+ examples: [
37
+ {
38
+ title: "Incorrect (field)",
39
+ code: (
40
+ /* GraphQL */
41
+ `
42
+ # In your schema
43
+ type User {
44
+ id: ID!
45
+ name: String! @deprecated(reason: "old field, please use fullName instead")
46
+ fullName: String!
47
+ }
48
+
49
+ # Query
50
+ query user {
51
+ user {
52
+ name # This is deprecated, so you'll get an error
53
+ }
54
+ }
55
+ `
56
+ )
57
+ },
58
+ {
59
+ title: "Incorrect (enum value)",
60
+ code: (
61
+ /* GraphQL */
62
+ `
63
+ # In your schema
64
+ type Mutation {
65
+ changeSomething(type: SomeType): Boolean!
66
+ }
67
+
68
+ enum SomeType {
69
+ NEW
70
+ OLD @deprecated(reason: "old field, please use NEW instead")
71
+ }
72
+
73
+ # Mutation
74
+ mutation {
75
+ changeSomething(
76
+ type: OLD # This is deprecated, so you'll get an error
77
+ ) {
78
+ ...
79
+ }
80
+ }
81
+ `
82
+ )
83
+ },
84
+ {
85
+ title: "Correct",
86
+ code: (
87
+ /* GraphQL */
88
+ `
89
+ # In your schema
90
+ type User {
91
+ id: ID!
92
+ name: String! @deprecated(reason: "old field, please use fullName instead")
93
+ fullName: String!
94
+ }
95
+
96
+ # Query
97
+ query user {
98
+ user {
99
+ id
100
+ fullName
101
+ }
102
+ }
103
+ `
104
+ )
105
+ }
106
+ ],
107
+ recommended: true
108
+ },
109
+ messages: {
110
+ [RULE_ID]: "This {{ type }} is marked as deprecated in your GraphQL schema (reason: {{ reason }})"
111
+ },
112
+ schema: []
113
+ },
114
+ create(context) {
115
+ (0, import_utils.requireGraphQLSchemaFromContext)(RULE_ID, context);
116
+ function report(node, reason) {
117
+ const nodeName = node.kind === import_graphql.Kind.ENUM ? node.value : node.name.value;
118
+ const nodeType = node.kind === import_graphql.Kind.ENUM ? "enum value" : "field";
119
+ context.report({
120
+ node,
121
+ messageId: RULE_ID,
122
+ data: {
123
+ type: nodeType,
124
+ reason
125
+ },
126
+ suggest: [
127
+ {
128
+ desc: `Remove \`${nodeName}\` ${nodeType}`,
129
+ fix: (fixer) => fixer.remove(node)
130
+ }
131
+ ]
132
+ });
133
+ }
134
+ return {
135
+ EnumValue(node) {
136
+ var _a;
137
+ const typeInfo = node.typeInfo();
138
+ const reason = (_a = typeInfo.enumValue) == null ? void 0 : _a.deprecationReason;
139
+ if (reason) {
140
+ report(node, reason);
141
+ }
142
+ },
143
+ Field(node) {
144
+ var _a;
145
+ const typeInfo = node.typeInfo();
146
+ const reason = (_a = typeInfo.fieldDef) == null ? void 0 : _a.deprecationReason;
147
+ if (reason) {
148
+ report(node, reason);
149
+ }
150
+ }
151
+ };
152
+ }
153
+ };
154
+ // Annotate the CommonJS export names for ESM import in node:
155
+ 0 && (module.exports = {
156
+ rule
157
+ });
@@ -0,0 +1,12 @@
1
+ import { f as GraphQLESLintRule } from '../types-8d5f4ae0.js';
2
+ import '@graphql-tools/utils';
3
+ import 'eslint';
4
+ import 'estree';
5
+ import 'graphql';
6
+ import 'graphql-config';
7
+ import 'json-schema-to-ts';
8
+ import '../estree-converter/types.js';
9
+
10
+ declare const rule: GraphQLESLintRule;
11
+
12
+ export { rule };
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var no_duplicate_fields_exports = {};
20
+ __export(no_duplicate_fields_exports, {
21
+ rule: () => rule
22
+ });
23
+ module.exports = __toCommonJS(no_duplicate_fields_exports);
24
+ var import_graphql = require("graphql");
25
+ const RULE_ID = "no-duplicate-fields";
26
+ const rule = {
27
+ meta: {
28
+ type: "suggestion",
29
+ hasSuggestions: true,
30
+ docs: {
31
+ description: "Checks for duplicate fields in selection set, variables in operation definition, or in arguments set of a field.",
32
+ category: "Operations",
33
+ url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
34
+ recommended: true,
35
+ examples: [
36
+ {
37
+ title: "Incorrect",
38
+ code: (
39
+ /* GraphQL */
40
+ `
41
+ query {
42
+ user {
43
+ name
44
+ email
45
+ name # duplicate field
46
+ }
47
+ }
48
+ `
49
+ )
50
+ },
51
+ {
52
+ title: "Incorrect",
53
+ code: (
54
+ /* GraphQL */
55
+ `
56
+ query {
57
+ users(
58
+ first: 100
59
+ skip: 50
60
+ after: "cji629tngfgou0b73kt7vi5jo"
61
+ first: 100 # duplicate argument
62
+ ) {
63
+ id
64
+ }
65
+ }
66
+ `
67
+ )
68
+ },
69
+ {
70
+ title: "Incorrect",
71
+ code: (
72
+ /* GraphQL */
73
+ `
74
+ query (
75
+ $first: Int!
76
+ $first: Int! # duplicate variable
77
+ ) {
78
+ users(first: $first, skip: 50) {
79
+ id
80
+ }
81
+ }
82
+ `
83
+ )
84
+ }
85
+ ]
86
+ },
87
+ messages: {
88
+ [RULE_ID]: "{{ type }} `{{ fieldName }}` defined multiple times."
89
+ },
90
+ schema: []
91
+ },
92
+ create(context) {
93
+ function checkNode(usedFields, node) {
94
+ const fieldName = node.value;
95
+ if (usedFields.has(fieldName)) {
96
+ const { parent } = node;
97
+ context.report({
98
+ node,
99
+ messageId: RULE_ID,
100
+ data: {
101
+ type: parent.type,
102
+ fieldName
103
+ },
104
+ suggest: [
105
+ {
106
+ desc: `Remove \`${fieldName}\` ${parent.type.toLowerCase()}`,
107
+ fix(fixer) {
108
+ return fixer.remove(
109
+ parent.type === import_graphql.Kind.VARIABLE ? parent.parent : parent
110
+ );
111
+ }
112
+ }
113
+ ]
114
+ });
115
+ } else {
116
+ usedFields.add(fieldName);
117
+ }
118
+ }
119
+ return {
120
+ OperationDefinition(node) {
121
+ const set = /* @__PURE__ */ new Set();
122
+ for (const varDef of node.variableDefinitions || []) {
123
+ checkNode(set, varDef.variable.name);
124
+ }
125
+ },
126
+ Field(node) {
127
+ const set = /* @__PURE__ */ new Set();
128
+ for (const arg of node.arguments || []) {
129
+ checkNode(set, arg.name);
130
+ }
131
+ },
132
+ SelectionSet(node) {
133
+ const set = /* @__PURE__ */ new Set();
134
+ for (const selection of node.selections) {
135
+ if (selection.kind === import_graphql.Kind.FIELD) {
136
+ checkNode(set, selection.alias || selection.name);
137
+ }
138
+ }
139
+ }
140
+ };
141
+ }
142
+ };
143
+ // Annotate the CommonJS export names for ESM import in node:
144
+ 0 && (module.exports = {
145
+ rule
146
+ });
@@ -0,0 +1,13 @@
1
+ import { f as GraphQLESLintRule } from '../types-8d5f4ae0.js';
2
+ import '@graphql-tools/utils';
3
+ import 'eslint';
4
+ import 'estree';
5
+ import 'graphql';
6
+ import 'graphql-config';
7
+ import 'json-schema-to-ts';
8
+ import '../estree-converter/types.js';
9
+
10
+ declare const RULE_ID = "HASHTAG_COMMENT";
11
+ declare const rule: GraphQLESLintRule;
12
+
13
+ export { RULE_ID, rule };
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var no_hashtag_description_exports = {};
20
+ __export(no_hashtag_description_exports, {
21
+ RULE_ID: () => RULE_ID,
22
+ rule: () => rule
23
+ });
24
+ module.exports = __toCommonJS(no_hashtag_description_exports);
25
+ var import_graphql = require("graphql");
26
+ var import_utils = require("../utils.js");
27
+ const RULE_ID = "HASHTAG_COMMENT";
28
+ const rule = {
29
+ meta: {
30
+ type: "suggestion",
31
+ hasSuggestions: true,
32
+ schema: [],
33
+ messages: {
34
+ [RULE_ID]: 'Unexpected GraphQL descriptions as hashtag `#` for {{ nodeName }}.\nPrefer using `"""` for multiline, or `"` for a single line description.'
35
+ },
36
+ docs: {
37
+ description: 'Requires to use `"""` or `"` for adding a GraphQL description instead of `#`.\nAllows to use hashtag for comments, as long as it\'s not attached to an AST definition.',
38
+ category: "Schema",
39
+ url: "https://the-guild.dev/graphql/eslint/rules/no-hashtag-description",
40
+ examples: [
41
+ {
42
+ title: "Incorrect",
43
+ code: (
44
+ /* GraphQL */
45
+ `
46
+ # Represents a user
47
+ type User {
48
+ id: ID!
49
+ name: String
50
+ }
51
+ `
52
+ )
53
+ },
54
+ {
55
+ title: "Correct",
56
+ code: (
57
+ /* GraphQL */
58
+ `
59
+ " Represents a user "
60
+ type User {
61
+ id: ID!
62
+ name: String
63
+ }
64
+ `
65
+ )
66
+ },
67
+ {
68
+ title: "Correct",
69
+ code: (
70
+ /* GraphQL */
71
+ `
72
+ # This file defines the basic User type.
73
+ # This comment is valid because it's not attached specifically to an AST object.
74
+
75
+ " Represents a user "
76
+ type User {
77
+ id: ID! # This one is also valid, since it comes after the AST object
78
+ name: String
79
+ }
80
+ `
81
+ )
82
+ }
83
+ ],
84
+ recommended: true
85
+ }
86
+ },
87
+ create(context) {
88
+ const selector = "Document[definitions.0.kind!=/^(OperationDefinition|FragmentDefinition)$/]";
89
+ return {
90
+ [selector](node) {
91
+ const rawNode = node.rawNode();
92
+ let token = rawNode.loc.startToken;
93
+ while (token) {
94
+ const { kind, prev, next, value, line, column } = token;
95
+ if (kind === import_graphql.TokenKind.COMMENT && prev && next) {
96
+ const isEslintComment = value.trimStart().startsWith("eslint");
97
+ const linesAfter = next.line - line;
98
+ if (!isEslintComment && line !== prev.line && next.kind === import_graphql.TokenKind.NAME && linesAfter < 2) {
99
+ const sourceCode = context.getSourceCode();
100
+ const { tokens } = sourceCode.ast;
101
+ const t = tokens.find(
102
+ (token2) => token2.loc.start.line === next.line && token2.loc.start.column === next.column - 1
103
+ );
104
+ const nextNode = sourceCode.getNodeByRangeIndex(t.range[1] + 1);
105
+ context.report({
106
+ messageId: RULE_ID,
107
+ data: {
108
+ nodeName: (0, import_utils.getNodeName)(
109
+ "name" in nextNode ? nextNode : nextNode.parent
110
+ )
111
+ },
112
+ loc: {
113
+ line,
114
+ column: column - 1
115
+ },
116
+ suggest: ['"""', '"'].map((descriptionSyntax) => ({
117
+ desc: `Replace with \`${descriptionSyntax}\` description syntax`,
118
+ fix: (fixer) => fixer.replaceTextRange(
119
+ [token.start, token.end],
120
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion -- TODO: remove `!` when drop support of graphql@15
121
+ [descriptionSyntax, value.trim(), descriptionSyntax].join("")
122
+ )
123
+ }))
124
+ });
125
+ }
126
+ }
127
+ if (!next) {
128
+ break;
129
+ }
130
+ token = next;
131
+ }
132
+ }
133
+ };
134
+ }
135
+ };
136
+ // Annotate the CommonJS export names for ESM import in node:
137
+ 0 && (module.exports = {
138
+ RULE_ID,
139
+ rule
140
+ });
@@ -0,0 +1,12 @@
1
+ import { f as GraphQLESLintRule } from '../types-8d5f4ae0.js';
2
+ import '@graphql-tools/utils';
3
+ import 'eslint';
4
+ import 'estree';
5
+ import 'graphql';
6
+ import 'graphql-config';
7
+ import 'json-schema-to-ts';
8
+ import '../estree-converter/types.js';
9
+
10
+ declare const rule: GraphQLESLintRule;
11
+
12
+ export { rule };
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var no_one_place_fragments_exports = {};
20
+ __export(no_one_place_fragments_exports, {
21
+ rule: () => rule
22
+ });
23
+ module.exports = __toCommonJS(no_one_place_fragments_exports);
24
+ var import_path = require("path");
25
+ var import_graphql = require("graphql");
26
+ var import_utils = require("../utils.js");
27
+ const RULE_ID = "no-one-place-fragments";
28
+ const rule = {
29
+ meta: {
30
+ type: "suggestion",
31
+ docs: {
32
+ category: "Operations",
33
+ description: "Disallow fragments that are used only in one place.",
34
+ url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
35
+ examples: [
36
+ {
37
+ title: "Incorrect",
38
+ code: (
39
+ /* GraphQL */
40
+ `
41
+ fragment UserFields on User {
42
+ id
43
+ }
44
+
45
+ {
46
+ user {
47
+ ...UserFields
48
+ }
49
+ }
50
+ `
51
+ )
52
+ },
53
+ {
54
+ title: "Correct",
55
+ code: (
56
+ /* GraphQL */
57
+ `
58
+ fragment UserFields on User {
59
+ id
60
+ }
61
+
62
+ {
63
+ user {
64
+ ...UserFields
65
+ friends {
66
+ ...UserFields
67
+ }
68
+ }
69
+ }
70
+ `
71
+ )
72
+ }
73
+ ],
74
+ requiresSiblings: true
75
+ },
76
+ messages: {
77
+ [RULE_ID]: 'Fragment `{{fragmentName}}` used only once. Inline him in "{{filePath}}".'
78
+ },
79
+ schema: []
80
+ },
81
+ create(context) {
82
+ const operations = (0, import_utils.requireSiblingsOperations)(RULE_ID, context);
83
+ const allDocuments = [...operations.getOperations(), ...operations.getFragments()];
84
+ const usedFragmentsMap = /* @__PURE__ */ Object.create(null);
85
+ for (const { document, filePath } of allDocuments) {
86
+ const relativeFilePath = (0, import_path.relative)(import_utils.CWD, filePath);
87
+ (0, import_graphql.visit)(document, {
88
+ FragmentSpread({ name }) {
89
+ const spreadName = name.value;
90
+ usedFragmentsMap[spreadName] || (usedFragmentsMap[spreadName] = []);
91
+ usedFragmentsMap[spreadName].push(relativeFilePath);
92
+ }
93
+ });
94
+ }
95
+ return {
96
+ "FragmentDefinition > Name"(node) {
97
+ const fragmentName = node.value;
98
+ const fragmentUsage = usedFragmentsMap[fragmentName];
99
+ if (fragmentUsage.length === 1) {
100
+ context.report({
101
+ node,
102
+ messageId: RULE_ID,
103
+ data: { fragmentName, filePath: fragmentUsage[0] }
104
+ });
105
+ }
106
+ }
107
+ };
108
+ }
109
+ };
110
+ // Annotate the CommonJS export names for ESM import in node:
111
+ 0 && (module.exports = {
112
+ rule
113
+ });
@@ -0,0 +1,33 @@
1
+ import { FromSchema } from 'json-schema-to-ts';
2
+ import { f as GraphQLESLintRule } from '../types-8d5f4ae0.js';
3
+ import '@graphql-tools/utils';
4
+ import 'eslint';
5
+ import 'estree';
6
+ import 'graphql';
7
+ import 'graphql-config';
8
+ import '../estree-converter/types.js';
9
+
10
+ declare const schema: {
11
+ readonly type: "array";
12
+ readonly minItems: 1;
13
+ readonly maxItems: 1;
14
+ readonly items: {
15
+ readonly type: "object";
16
+ readonly additionalProperties: false;
17
+ readonly required: readonly ["disallow"];
18
+ readonly properties: {
19
+ readonly disallow: {
20
+ readonly items: {
21
+ readonly enum: readonly ["mutation", "subscription"];
22
+ };
23
+ readonly type: "array";
24
+ readonly uniqueItems: true;
25
+ readonly minItems: 1;
26
+ };
27
+ };
28
+ };
29
+ };
30
+ type RuleOptions = FromSchema<typeof schema>;
31
+ declare const rule: GraphQLESLintRule<RuleOptions>;
32
+
33
+ export { RuleOptions, rule };