@graphql-eslint/eslint-plugin 4.0.0-alpha-20220821140530-e968cfc → 4.0.0-alpha-20230810155929-e89edf7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (346) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +14 -252
  3. package/cjs/cache.d.ts +12 -0
  4. package/cjs/cache.js +53 -0
  5. package/cjs/configs/index.d.ts +174 -0
  6. package/cjs/configs/index.js +40 -0
  7. package/cjs/configs/operations-all.d.ts +23 -0
  8. package/cjs/configs/operations-all.js +28 -0
  9. package/cjs/configs/operations-recommended.d.ts +54 -0
  10. package/{configs/operations-recommended.json → cjs/configs/operations-recommended.js} +19 -15
  11. package/cjs/configs/schema-all.d.ts +24 -0
  12. package/cjs/configs/schema-all.js +24 -0
  13. package/cjs/configs/schema-recommended.d.ts +67 -0
  14. package/cjs/configs/schema-recommended.js +68 -0
  15. package/cjs/configs/schema-relay.d.ts +12 -0
  16. package/{configs/relay.json → cjs/configs/schema-relay.js} +6 -4
  17. package/cjs/documents.d.ts +6 -0
  18. package/cjs/documents.js +66 -0
  19. package/cjs/estree-converter/converter.d.ts +8 -0
  20. package/cjs/estree-converter/converter.js +70 -0
  21. package/cjs/estree-converter/index.d.ts +8 -0
  22. package/cjs/estree-converter/index.js +23 -0
  23. package/cjs/estree-converter/types.d.ts +42 -0
  24. package/cjs/estree-converter/types.js +14 -0
  25. package/cjs/estree-converter/utils.d.ts +17 -0
  26. package/cjs/estree-converter/utils.js +105 -0
  27. package/cjs/flat-configs.d.ts +307 -0
  28. package/cjs/flat-configs.js +55 -0
  29. package/cjs/graphql-config.d.ts +14 -0
  30. package/cjs/graphql-config.js +65 -0
  31. package/cjs/index.d.ts +28 -0
  32. package/cjs/index.js +41 -0
  33. package/cjs/parser.d.ts +13 -0
  34. package/cjs/parser.js +96 -0
  35. package/cjs/processor.d.ts +13 -0
  36. package/cjs/processor.js +95 -0
  37. package/cjs/rules/alphabetize.d.ts +74 -0
  38. package/cjs/rules/alphabetize.js +323 -0
  39. package/cjs/rules/description-style.d.ts +29 -0
  40. package/cjs/rules/description-style.js +102 -0
  41. package/cjs/rules/graphql-js-validation.d.ts +13 -0
  42. package/cjs/rules/graphql-js-validation.js +595 -0
  43. package/cjs/rules/index.d.ts +127 -0
  44. package/cjs/rules/index.js +62 -0
  45. package/cjs/rules/input-name.d.ts +44 -0
  46. package/cjs/rules/input-name.js +154 -0
  47. package/cjs/rules/lone-executable-definition.d.ts +35 -0
  48. package/cjs/rules/lone-executable-definition.js +105 -0
  49. package/cjs/rules/match-document-filename.d.ts +81 -0
  50. package/cjs/rules/match-document-filename.js +251 -0
  51. package/cjs/rules/naming-convention.d.ts +108 -0
  52. package/cjs/rules/naming-convention.js +416 -0
  53. package/cjs/rules/no-anonymous-operations.d.ts +13 -0
  54. package/cjs/rules/no-anonymous-operations.js +91 -0
  55. package/cjs/rules/no-deprecated.d.ts +13 -0
  56. package/cjs/rules/no-deprecated.js +143 -0
  57. package/cjs/rules/no-duplicate-fields.d.ts +13 -0
  58. package/cjs/rules/no-duplicate-fields.js +136 -0
  59. package/cjs/rules/no-hashtag-description.d.ts +14 -0
  60. package/cjs/rules/no-hashtag-description.js +127 -0
  61. package/cjs/rules/no-one-place-fragments.d.ts +13 -0
  62. package/cjs/rules/no-one-place-fragments.js +101 -0
  63. package/cjs/rules/no-root-type.d.ts +34 -0
  64. package/cjs/rules/no-root-type.js +103 -0
  65. package/cjs/rules/no-scalar-result-type-on-mutation.d.ts +13 -0
  66. package/cjs/rules/no-scalar-result-type-on-mutation.js +88 -0
  67. package/cjs/rules/no-typename-prefix.d.ts +13 -0
  68. package/cjs/rules/no-typename-prefix.js +91 -0
  69. package/cjs/rules/no-unreachable-types.d.ts +13 -0
  70. package/cjs/rules/no-unreachable-types.js +177 -0
  71. package/cjs/rules/no-unused-fields.d.ts +13 -0
  72. package/cjs/rules/no-unused-fields.js +132 -0
  73. package/cjs/rules/relay-arguments.d.ts +30 -0
  74. package/cjs/rules/relay-arguments.js +126 -0
  75. package/cjs/rules/relay-connection-types.d.ts +14 -0
  76. package/cjs/rules/relay-connection-types.js +111 -0
  77. package/cjs/rules/relay-edge-types.d.ts +40 -0
  78. package/cjs/rules/relay-edge-types.js +161 -0
  79. package/cjs/rules/relay-page-info.d.ts +13 -0
  80. package/cjs/rules/relay-page-info.js +98 -0
  81. package/cjs/rules/require-deprecation-date.d.ts +27 -0
  82. package/cjs/rules/require-deprecation-date.js +148 -0
  83. package/cjs/rules/require-deprecation-reason.d.ts +13 -0
  84. package/cjs/rules/require-deprecation-reason.js +85 -0
  85. package/cjs/rules/require-description.d.ts +24 -0
  86. package/cjs/rules/require-description.js +179 -0
  87. package/cjs/rules/require-field-of-type-query-in-mutation-result.d.ts +13 -0
  88. package/cjs/rules/require-field-of-type-query-in-mutation-result.js +87 -0
  89. package/cjs/rules/require-import-fragment.d.ts +13 -0
  90. package/cjs/rules/require-import-fragment.js +148 -0
  91. package/cjs/rules/require-nullable-fields-with-oneof.d.ts +13 -0
  92. package/cjs/rules/require-nullable-fields-with-oneof.js +81 -0
  93. package/cjs/rules/require-nullable-result-in-root.d.ts +13 -0
  94. package/cjs/rules/require-nullable-result-in-root.js +99 -0
  95. package/cjs/rules/require-selections.d.ts +45 -0
  96. package/cjs/rules/require-selections.js +198 -0
  97. package/cjs/rules/require-type-pattern-with-oneof.d.ts +13 -0
  98. package/cjs/rules/require-type-pattern-with-oneof.js +83 -0
  99. package/cjs/rules/selection-set-depth.d.ts +37 -0
  100. package/cjs/rules/selection-set-depth.js +159 -0
  101. package/cjs/rules/strict-id-in-types.d.ts +66 -0
  102. package/cjs/rules/strict-id-in-types.js +168 -0
  103. package/cjs/rules/unique-enum-value-names.d.ts +13 -0
  104. package/cjs/rules/unique-enum-value-names.js +91 -0
  105. package/cjs/rules/unique-fragment-name.d.ts +14 -0
  106. package/cjs/rules/unique-fragment-name.js +106 -0
  107. package/cjs/rules/unique-operation-name.d.ts +13 -0
  108. package/cjs/rules/unique-operation-name.js +93 -0
  109. package/cjs/schema.d.ts +13 -0
  110. package/cjs/schema.js +52 -0
  111. package/{sibling-operations.d.ts → cjs/siblings.d.ts} +9 -6
  112. package/cjs/siblings.js +96 -0
  113. package/cjs/types.d.ts +75 -0
  114. package/cjs/types.js +14 -0
  115. package/cjs/utils.d.ts +45 -0
  116. package/cjs/utils.js +188 -0
  117. package/esm/cache.d.mts +12 -0
  118. package/esm/cache.js +25 -0
  119. package/esm/chunk-U3TKCM4X.js +8 -0
  120. package/esm/configs/index.d.mts +174 -0
  121. package/esm/configs/index.js +16 -0
  122. package/esm/configs/operations-all.d.mts +23 -0
  123. package/esm/configs/operations-all.js +35 -0
  124. package/esm/configs/operations-recommended.d.mts +54 -0
  125. package/esm/configs/operations-recommended.js +61 -0
  126. package/esm/configs/schema-all.d.mts +24 -0
  127. package/esm/configs/schema-all.js +31 -0
  128. package/esm/configs/schema-recommended.d.mts +67 -0
  129. package/esm/configs/schema-recommended.js +75 -0
  130. package/esm/configs/schema-relay.d.mts +12 -0
  131. package/esm/configs/schema-relay.js +18 -0
  132. package/esm/documents.d.mts +6 -0
  133. package/esm/documents.js +41 -0
  134. package/esm/estree-converter/converter.d.mts +8 -0
  135. package/esm/estree-converter/converter.js +56 -0
  136. package/esm/estree-converter/index.d.mts +8 -0
  137. package/esm/estree-converter/index.js +3 -0
  138. package/esm/estree-converter/types.d.mts +42 -0
  139. package/esm/estree-converter/types.js +0 -0
  140. package/esm/estree-converter/utils.d.mts +17 -0
  141. package/esm/estree-converter/utils.js +87 -0
  142. package/esm/flat-configs.d.mts +307 -0
  143. package/esm/flat-configs.js +36 -0
  144. package/esm/graphql-config.d.mts +14 -0
  145. package/esm/graphql-config.js +39 -0
  146. package/esm/index.d.mts +28 -0
  147. package/esm/index.js +18 -0
  148. package/esm/package.json +1 -0
  149. package/esm/parser.d.mts +13 -0
  150. package/esm/parser.js +76 -0
  151. package/esm/processor.d.mts +13 -0
  152. package/esm/processor.js +81 -0
  153. package/esm/rules/alphabetize.d.mts +74 -0
  154. package/esm/rules/alphabetize.js +299 -0
  155. package/esm/rules/description-style.d.mts +29 -0
  156. package/esm/rules/description-style.js +82 -0
  157. package/esm/rules/graphql-js-validation.d.mts +13 -0
  158. package/esm/rules/graphql-js-validation.js +618 -0
  159. package/esm/rules/index.d.mts +127 -0
  160. package/esm/rules/index.js +76 -0
  161. package/esm/rules/input-name.d.mts +44 -0
  162. package/esm/rules/input-name.js +136 -0
  163. package/esm/rules/lone-executable-definition.d.mts +35 -0
  164. package/esm/rules/lone-executable-definition.js +86 -0
  165. package/esm/rules/match-document-filename.d.mts +81 -0
  166. package/esm/rules/match-document-filename.js +237 -0
  167. package/esm/rules/naming-convention.d.mts +108 -0
  168. package/esm/rules/naming-convention.js +403 -0
  169. package/esm/rules/no-anonymous-operations.d.mts +13 -0
  170. package/esm/rules/no-anonymous-operations.js +72 -0
  171. package/esm/rules/no-deprecated.d.mts +13 -0
  172. package/esm/rules/no-deprecated.js +124 -0
  173. package/esm/rules/no-duplicate-fields.d.mts +13 -0
  174. package/esm/rules/no-duplicate-fields.js +116 -0
  175. package/esm/rules/no-hashtag-description.d.mts +14 -0
  176. package/esm/rules/no-hashtag-description.js +107 -0
  177. package/esm/rules/no-one-place-fragments.d.mts +13 -0
  178. package/esm/rules/no-one-place-fragments.js +83 -0
  179. package/esm/rules/no-root-type.d.mts +34 -0
  180. package/esm/rules/no-root-type.js +83 -0
  181. package/esm/rules/no-scalar-result-type-on-mutation.d.mts +13 -0
  182. package/esm/rules/no-scalar-result-type-on-mutation.js +69 -0
  183. package/esm/rules/no-typename-prefix.d.mts +13 -0
  184. package/esm/rules/no-typename-prefix.js +71 -0
  185. package/esm/rules/no-unreachable-types.d.mts +13 -0
  186. package/esm/rules/no-unreachable-types.js +156 -0
  187. package/esm/rules/no-unused-fields.d.mts +13 -0
  188. package/esm/rules/no-unused-fields.js +113 -0
  189. package/esm/rules/relay-arguments.d.mts +30 -0
  190. package/esm/rules/relay-arguments.js +107 -0
  191. package/esm/rules/relay-connection-types.d.mts +14 -0
  192. package/esm/rules/relay-connection-types.js +90 -0
  193. package/esm/rules/relay-edge-types.d.mts +40 -0
  194. package/esm/rules/relay-edge-types.js +148 -0
  195. package/esm/rules/relay-page-info.d.mts +13 -0
  196. package/esm/rules/relay-page-info.js +80 -0
  197. package/esm/rules/require-deprecation-date.d.mts +27 -0
  198. package/esm/rules/require-deprecation-date.js +129 -0
  199. package/esm/rules/require-deprecation-reason.d.mts +13 -0
  200. package/esm/rules/require-deprecation-reason.js +66 -0
  201. package/esm/rules/require-description.d.mts +24 -0
  202. package/esm/rules/require-description.js +165 -0
  203. package/esm/rules/require-field-of-type-query-in-mutation-result.d.mts +13 -0
  204. package/esm/rules/require-field-of-type-query-in-mutation-result.js +68 -0
  205. package/esm/rules/require-import-fragment.d.mts +13 -0
  206. package/esm/rules/require-import-fragment.js +121 -0
  207. package/esm/rules/require-nullable-fields-with-oneof.d.mts +13 -0
  208. package/esm/rules/require-nullable-fields-with-oneof.js +62 -0
  209. package/esm/rules/require-nullable-result-in-root.d.mts +13 -0
  210. package/esm/rules/require-nullable-result-in-root.js +80 -0
  211. package/esm/rules/require-selections.d.mts +45 -0
  212. package/esm/rules/require-selections.js +194 -0
  213. package/esm/rules/require-type-pattern-with-oneof.d.mts +13 -0
  214. package/esm/rules/require-type-pattern-with-oneof.js +63 -0
  215. package/esm/rules/selection-set-depth.d.mts +37 -0
  216. package/esm/rules/selection-set-depth.js +133 -0
  217. package/esm/rules/strict-id-in-types.d.mts +66 -0
  218. package/esm/rules/strict-id-in-types.js +155 -0
  219. package/esm/rules/unique-enum-value-names.d.mts +13 -0
  220. package/esm/rules/unique-enum-value-names.js +72 -0
  221. package/esm/rules/unique-fragment-name.d.mts +14 -0
  222. package/esm/rules/unique-fragment-name.js +87 -0
  223. package/esm/rules/unique-operation-name.d.mts +13 -0
  224. package/esm/rules/unique-operation-name.js +73 -0
  225. package/esm/schema.d.mts +13 -0
  226. package/esm/schema.js +27 -0
  227. package/esm/siblings.d.mts +24 -0
  228. package/esm/siblings.js +80 -0
  229. package/esm/types.d.mts +75 -0
  230. package/esm/types.js +0 -0
  231. package/esm/utils.d.mts +45 -0
  232. package/esm/utils.js +144 -0
  233. package/index.browser.mjs +5323 -0
  234. package/package.json +43 -35
  235. package/configs/base.json +0 -4
  236. package/configs/operations-all.json +0 -24
  237. package/configs/schema-all.json +0 -26
  238. package/configs/schema-recommended.json +0 -49
  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/testkit.d.ts +0 -27
  345. package/types.d.ts +0 -79
  346. package/utils.d.ts +0 -39
@@ -0,0 +1,85 @@
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: !0 });
9
+ }, __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from == "object" || typeof from == "function")
11
+ for (let key of __getOwnPropNames(from))
12
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
+ return to;
14
+ };
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
16
+ var require_deprecation_reason_exports = {};
17
+ __export(require_deprecation_reason_exports, {
18
+ rule: () => rule
19
+ });
20
+ module.exports = __toCommonJS(require_deprecation_reason_exports);
21
+ var import_estree_converter = require("../estree-converter/index.js"), import_utils = require("../utils.js");
22
+ const rule = {
23
+ meta: {
24
+ docs: {
25
+ description: "Require all deprecation directives to specify a reason.",
26
+ category: "Schema",
27
+ url: "https://the-guild.dev/graphql/eslint/rules/require-deprecation-reason",
28
+ recommended: !0,
29
+ examples: [
30
+ {
31
+ title: "Incorrect",
32
+ code: (
33
+ /* GraphQL */
34
+ `
35
+ type MyType {
36
+ name: String @deprecated
37
+ }
38
+ `
39
+ )
40
+ },
41
+ {
42
+ title: "Incorrect",
43
+ code: (
44
+ /* GraphQL */
45
+ `
46
+ type MyType {
47
+ name: String @deprecated(reason: "")
48
+ }
49
+ `
50
+ )
51
+ },
52
+ {
53
+ title: "Correct",
54
+ code: (
55
+ /* GraphQL */
56
+ `
57
+ type MyType {
58
+ name: String @deprecated(reason: "no longer relevant, please use fullName field")
59
+ }
60
+ `
61
+ )
62
+ }
63
+ ]
64
+ },
65
+ type: "suggestion",
66
+ schema: []
67
+ },
68
+ create(context) {
69
+ return {
70
+ "Directive[name.value=deprecated]"(node) {
71
+ const reasonArgument = node.arguments?.find(
72
+ (arg) => arg.name.value === "reason"
73
+ );
74
+ reasonArgument && String((0, import_estree_converter.valueFromNode)(reasonArgument.value)).trim() || context.report({
75
+ node: node.name,
76
+ message: `Deprecation reason is required for ${(0, import_utils.getNodeName)(node.parent)}.`
77
+ });
78
+ }
79
+ };
80
+ }
81
+ };
82
+ // Annotate the CommonJS export names for ESM import in node:
83
+ 0 && (module.exports = {
84
+ rule
85
+ });
@@ -0,0 +1,24 @@
1
+ import { Kind } from 'graphql';
2
+ import { GraphQLESLintRule } from '../types.js';
3
+ import 'eslint';
4
+ import 'estree';
5
+ import 'json-schema-to-ts';
6
+ import '../siblings.js';
7
+ import '@graphql-tools/utils';
8
+ import '../estree-converter/types.js';
9
+ import 'graphql-config';
10
+
11
+ declare const RULE_ID = "require-description";
12
+ declare const ALLOWED_KINDS: readonly [Kind.OBJECT_TYPE_DEFINITION, Kind.INTERFACE_TYPE_DEFINITION, Kind.ENUM_TYPE_DEFINITION, Kind.SCALAR_TYPE_DEFINITION, Kind.INPUT_OBJECT_TYPE_DEFINITION, Kind.UNION_TYPE_DEFINITION, Kind.DIRECTIVE_DEFINITION, Kind.FIELD_DEFINITION, Kind.INPUT_VALUE_DEFINITION, Kind.ENUM_VALUE_DEFINITION, Kind.OPERATION_DEFINITION];
13
+ type AllowedKind = (typeof ALLOWED_KINDS)[number];
14
+ type RuleOptions = [
15
+ {
16
+ [key in AllowedKind]?: boolean;
17
+ } & {
18
+ types?: boolean;
19
+ rootField?: boolean;
20
+ }
21
+ ];
22
+ declare const rule: GraphQLESLintRule<RuleOptions>;
23
+
24
+ export { RULE_ID, RuleOptions, rule };
@@ -0,0 +1,179 @@
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: !0 });
9
+ }, __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from == "object" || typeof from == "function")
11
+ for (let key of __getOwnPropNames(from))
12
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
+ return to;
14
+ };
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
16
+ var require_description_exports = {};
17
+ __export(require_description_exports, {
18
+ RULE_ID: () => RULE_ID,
19
+ rule: () => rule
20
+ });
21
+ module.exports = __toCommonJS(require_description_exports);
22
+ var import_utils = require("@graphql-tools/utils"), import_graphql = require("graphql"), import_utils2 = require("../utils.js");
23
+ const RULE_ID = "require-description", ALLOWED_KINDS = [
24
+ ...import_utils2.TYPES_KINDS,
25
+ import_graphql.Kind.DIRECTIVE_DEFINITION,
26
+ import_graphql.Kind.FIELD_DEFINITION,
27
+ import_graphql.Kind.INPUT_VALUE_DEFINITION,
28
+ import_graphql.Kind.ENUM_VALUE_DEFINITION,
29
+ import_graphql.Kind.OPERATION_DEFINITION
30
+ ], schema = {
31
+ type: "array",
32
+ minItems: 1,
33
+ maxItems: 1,
34
+ items: {
35
+ type: "object",
36
+ additionalProperties: !1,
37
+ minProperties: 1,
38
+ properties: {
39
+ types: {
40
+ type: "boolean",
41
+ description: `Includes:
42
+ ${import_utils2.TYPES_KINDS.map((kind) => `- \`${kind}\``).join(`
43
+ `)}`
44
+ },
45
+ rootField: {
46
+ type: "boolean",
47
+ description: "Definitions within `Query`, `Mutation`, and `Subscription` root types."
48
+ },
49
+ ...Object.fromEntries(
50
+ [...ALLOWED_KINDS].sort().map((kind) => {
51
+ let description = `Read more about this kind on [spec.graphql.org](https://spec.graphql.org/October2021/#${kind}).`;
52
+ return kind === import_graphql.Kind.OPERATION_DEFINITION && (description += '\n> You must use only comment syntax `#` and not description syntax `"""` or `"`.'), [kind, { type: "boolean", description }];
53
+ })
54
+ )
55
+ }
56
+ }
57
+ }, rule = {
58
+ meta: {
59
+ docs: {
60
+ category: "Schema",
61
+ description: "Enforce descriptions in type definitions and operations.",
62
+ url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
63
+ examples: [
64
+ {
65
+ title: "Incorrect",
66
+ usage: [{ types: !0, FieldDefinition: !0 }],
67
+ code: (
68
+ /* GraphQL */
69
+ `
70
+ type someTypeName {
71
+ name: String
72
+ }
73
+ `
74
+ )
75
+ },
76
+ {
77
+ title: "Correct",
78
+ usage: [{ types: !0, FieldDefinition: !0 }],
79
+ code: (
80
+ /* GraphQL */
81
+ `
82
+ """
83
+ Some type description
84
+ """
85
+ type someTypeName {
86
+ """
87
+ Name description
88
+ """
89
+ name: String
90
+ }
91
+ `
92
+ )
93
+ },
94
+ {
95
+ title: "Correct",
96
+ usage: [{ OperationDefinition: !0 }],
97
+ code: (
98
+ /* GraphQL */
99
+ `
100
+ # Create a new user
101
+ mutation createUser {
102
+ # ...
103
+ }
104
+ `
105
+ )
106
+ },
107
+ {
108
+ title: "Correct",
109
+ usage: [{ rootField: !0 }],
110
+ code: (
111
+ /* GraphQL */
112
+ `
113
+ type Mutation {
114
+ "Create a new user"
115
+ createUser: User
116
+ }
117
+
118
+ type User {
119
+ name: String
120
+ }
121
+ `
122
+ )
123
+ }
124
+ ],
125
+ configOptions: [
126
+ {
127
+ types: !0,
128
+ [import_graphql.Kind.DIRECTIVE_DEFINITION]: !0,
129
+ rootField: !0
130
+ }
131
+ ],
132
+ recommended: !0
133
+ },
134
+ type: "suggestion",
135
+ messages: {
136
+ [RULE_ID]: "Description is required for {{ nodeName }}"
137
+ },
138
+ schema
139
+ },
140
+ create(context) {
141
+ const { types, rootField, ...restOptions } = context.options[0] || {}, kinds = new Set(types ? import_utils2.TYPES_KINDS : []);
142
+ for (const [kind, isEnabled] of Object.entries(restOptions))
143
+ isEnabled ? kinds.add(kind) : kinds.delete(kind);
144
+ if (rootField) {
145
+ const schema2 = (0, import_utils2.requireGraphQLSchemaFromContext)(RULE_ID, context), rootTypeNames = (0, import_utils.getRootTypeNames)(schema2);
146
+ kinds.add(
147
+ `:matches(ObjectTypeDefinition, ObjectTypeExtension)[name.value=/^(${[
148
+ ...rootTypeNames
149
+ ].join(",")})$/] > FieldDefinition`
150
+ );
151
+ }
152
+ return {
153
+ [[...kinds].join(",")](node) {
154
+ let description = "";
155
+ const isOperation = node.kind === import_graphql.Kind.OPERATION_DEFINITION;
156
+ if (isOperation) {
157
+ const rawNode = node.rawNode(), { prev, line } = rawNode.loc.startToken;
158
+ if (prev?.kind === import_graphql.TokenKind.COMMENT) {
159
+ const value = prev.value.trim(), linesBefore = line - prev.line;
160
+ !value.startsWith("eslint") && linesBefore === 1 && (description = value);
161
+ }
162
+ } else
163
+ description = node.description?.value.trim() || "";
164
+ description.length === 0 && context.report({
165
+ loc: isOperation ? (0, import_utils2.getLocation)(node.loc.start, node.operation) : node.name.loc,
166
+ messageId: RULE_ID,
167
+ data: {
168
+ nodeName: (0, import_utils2.getNodeName)(node)
169
+ }
170
+ });
171
+ }
172
+ };
173
+ }
174
+ };
175
+ // Annotate the CommonJS export names for ESM import in node:
176
+ 0 && (module.exports = {
177
+ RULE_ID,
178
+ rule
179
+ });
@@ -0,0 +1,13 @@
1
+ import { GraphQLESLintRule } from '../types.js';
2
+ import 'eslint';
3
+ import 'estree';
4
+ import 'graphql';
5
+ import 'json-schema-to-ts';
6
+ import '../siblings.js';
7
+ import '@graphql-tools/utils';
8
+ import '../estree-converter/types.js';
9
+ import 'graphql-config';
10
+
11
+ declare const rule: GraphQLESLintRule;
12
+
13
+ export { rule };
@@ -0,0 +1,87 @@
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: !0 });
9
+ }, __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from == "object" || typeof from == "function")
11
+ for (let key of __getOwnPropNames(from))
12
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
+ return to;
14
+ };
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
16
+ var require_field_of_type_query_in_mutation_result_exports = {};
17
+ __export(require_field_of_type_query_in_mutation_result_exports, {
18
+ rule: () => rule
19
+ });
20
+ module.exports = __toCommonJS(require_field_of_type_query_in_mutation_result_exports);
21
+ var import_graphql = require("graphql"), import_utils = require("../utils.js");
22
+ const RULE_ID = "require-field-of-type-query-in-mutation-result", rule = {
23
+ meta: {
24
+ type: "suggestion",
25
+ docs: {
26
+ category: "Schema",
27
+ description: "Allow the client in one round-trip not only to call mutation but also to get a wagon of data to update their application.\n> Currently, no errors are reported for result type `union`, `interface` and `scalar`.",
28
+ url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
29
+ requiresSchema: !0,
30
+ examples: [
31
+ {
32
+ title: "Incorrect",
33
+ code: (
34
+ /* GraphQL */
35
+ `
36
+ type User { ... }
37
+
38
+ type Mutation {
39
+ createUser: User!
40
+ }
41
+ `
42
+ )
43
+ },
44
+ {
45
+ title: "Correct",
46
+ code: (
47
+ /* GraphQL */
48
+ `
49
+ type User { ... }
50
+
51
+ type Query { ... }
52
+
53
+ type CreateUserPayload {
54
+ user: User!
55
+ query: Query!
56
+ }
57
+
58
+ type Mutation {
59
+ createUser: CreateUserPayload!
60
+ }
61
+ `
62
+ )
63
+ }
64
+ ]
65
+ },
66
+ schema: []
67
+ },
68
+ create(context) {
69
+ const schema = (0, import_utils.requireGraphQLSchemaFromContext)(RULE_ID, context), mutationType = schema.getMutationType(), queryType = schema.getQueryType();
70
+ return !mutationType || !queryType ? {} : {
71
+ [`:matches(ObjectTypeDefinition, ObjectTypeExtension)[name.value=${mutationType.name}] > FieldDefinition > .gqlType Name`](node) {
72
+ const typeName = node.value, graphQLType = schema.getType(typeName);
73
+ if ((0, import_graphql.isObjectType)(graphQLType)) {
74
+ const { fields } = graphQLType.astNode;
75
+ fields?.some((field) => (0, import_utils.getTypeName)(field) === queryType.name) || context.report({
76
+ node,
77
+ message: `Mutation result type "${graphQLType.name}" must contain field of type "${queryType.name}"`
78
+ });
79
+ }
80
+ }
81
+ };
82
+ }
83
+ };
84
+ // Annotate the CommonJS export names for ESM import in node:
85
+ 0 && (module.exports = {
86
+ rule
87
+ });
@@ -0,0 +1,13 @@
1
+ import { GraphQLESLintRule } from '../types.js';
2
+ import 'eslint';
3
+ import 'estree';
4
+ import 'graphql';
5
+ import 'json-schema-to-ts';
6
+ import '../siblings.js';
7
+ import '@graphql-tools/utils';
8
+ import '../estree-converter/types.js';
9
+ import 'graphql-config';
10
+
11
+ declare const rule: GraphQLESLintRule;
12
+
13
+ export { rule };
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf, __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: !0 });
10
+ }, __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from == "object" || typeof from == "function")
12
+ for (let key of __getOwnPropNames(from))
13
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ return to;
15
+ };
16
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
17
+ // If the importer is in node compatibility mode or this is not an ESM
18
+ // file that has been converted to a CommonJS file using a Babel-
19
+ // compatible transform (i.e. "__esModule" has not been set), then set
20
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: !0 }) : target,
22
+ mod
23
+ )), __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
24
+ var require_import_fragment_exports = {};
25
+ __export(require_import_fragment_exports, {
26
+ rule: () => rule
27
+ });
28
+ module.exports = __toCommonJS(require_import_fragment_exports);
29
+ var import_node_path = __toESM(require("node:path")), import_utils = require("../utils.js");
30
+ const RULE_ID = "require-import-fragment", SUGGESTION_ID = "add-import-expression", rule = {
31
+ meta: {
32
+ type: "suggestion",
33
+ docs: {
34
+ category: "Operations",
35
+ description: "Require fragments to be imported via an import expression.",
36
+ url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
37
+ examples: [
38
+ {
39
+ title: "Incorrect",
40
+ code: (
41
+ /* GraphQL */
42
+ `
43
+ query {
44
+ user {
45
+ ...UserFields
46
+ }
47
+ }
48
+ `
49
+ )
50
+ },
51
+ {
52
+ title: "Incorrect",
53
+ code: (
54
+ /* GraphQL */
55
+ `
56
+ # import 'post-fields.fragment.graphql'
57
+ query {
58
+ user {
59
+ ...UserFields
60
+ }
61
+ }
62
+ `
63
+ )
64
+ },
65
+ {
66
+ title: "Incorrect",
67
+ code: (
68
+ /* GraphQL */
69
+ `
70
+ # import UserFields from 'post-fields.fragment.graphql'
71
+ query {
72
+ user {
73
+ ...UserFields
74
+ }
75
+ }
76
+ `
77
+ )
78
+ },
79
+ {
80
+ title: "Correct",
81
+ code: (
82
+ /* GraphQL */
83
+ `
84
+ # import UserFields from 'user-fields.fragment.graphql'
85
+ query {
86
+ user {
87
+ ...UserFields
88
+ }
89
+ }
90
+ `
91
+ )
92
+ }
93
+ ],
94
+ requiresSiblings: !0
95
+ },
96
+ hasSuggestions: !0,
97
+ messages: {
98
+ [RULE_ID]: 'Expected "{{fragmentName}}" fragment to be imported.',
99
+ [SUGGESTION_ID]: 'Add import expression for "{{fragmentName}}".'
100
+ },
101
+ schema: []
102
+ },
103
+ create(context) {
104
+ const comments = context.getSourceCode().getAllComments(), siblings = (0, import_utils.requireSiblingsOperations)(RULE_ID, context), filePath = context.filename;
105
+ return {
106
+ "FragmentSpread > .name"(node) {
107
+ const fragmentName = node.value, fragmentsFromSiblings = siblings.getFragment(fragmentName);
108
+ for (const comment of comments) {
109
+ if (comment.type !== "Line" || !new RegExp(
110
+ `^\\s*import\\s+(${fragmentName}\\s+from\\s+)?['"]`
111
+ ).test(comment.value))
112
+ continue;
113
+ const extractedImportPath = comment.value.match(/(["'])((?:\1|.)*?)\1/)?.[2];
114
+ if (!extractedImportPath)
115
+ continue;
116
+ const importPath = import_node_path.default.join(import_node_path.default.dirname(filePath), extractedImportPath);
117
+ if (fragmentsFromSiblings.some(
118
+ (source) => source.filePath === importPath
119
+ ))
120
+ return;
121
+ }
122
+ if (fragmentsFromSiblings.some(
123
+ (source) => source.filePath === filePath
124
+ ))
125
+ return;
126
+ const suggestedFilePaths = fragmentsFromSiblings.length ? fragmentsFromSiblings.map((o) => import_node_path.default.relative(import_node_path.default.dirname(filePath), o.filePath)) : ["CHANGE_ME.graphql"];
127
+ context.report({
128
+ node,
129
+ messageId: RULE_ID,
130
+ data: { fragmentName },
131
+ suggest: suggestedFilePaths.map((suggestedPath) => ({
132
+ messageId: SUGGESTION_ID,
133
+ data: { fragmentName },
134
+ fix: (fixer) => fixer.insertTextBeforeRange(
135
+ [0, 0],
136
+ `# import ${fragmentName} from '${suggestedPath}'
137
+ `
138
+ )
139
+ }))
140
+ });
141
+ }
142
+ };
143
+ }
144
+ };
145
+ // Annotate the CommonJS export names for ESM import in node:
146
+ 0 && (module.exports = {
147
+ rule
148
+ });
@@ -0,0 +1,13 @@
1
+ import { GraphQLESLintRule } from '../types.js';
2
+ import 'eslint';
3
+ import 'estree';
4
+ import 'graphql';
5
+ import 'json-schema-to-ts';
6
+ import '../siblings.js';
7
+ import '@graphql-tools/utils';
8
+ import '../estree-converter/types.js';
9
+ import 'graphql-config';
10
+
11
+ declare const rule: GraphQLESLintRule;
12
+
13
+ export { rule };
@@ -0,0 +1,81 @@
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: !0 });
9
+ }, __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from == "object" || typeof from == "function")
11
+ for (let key of __getOwnPropNames(from))
12
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
+ return to;
14
+ };
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
16
+ var require_nullable_fields_with_oneof_exports = {};
17
+ __export(require_nullable_fields_with_oneof_exports, {
18
+ rule: () => rule
19
+ });
20
+ module.exports = __toCommonJS(require_nullable_fields_with_oneof_exports);
21
+ var import_graphql = require("graphql"), import_utils = require("../utils.js");
22
+ const RULE_ID = "require-nullable-fields-with-oneof", rule = {
23
+ meta: {
24
+ type: "suggestion",
25
+ docs: {
26
+ category: "Schema",
27
+ description: "Require `input` or `type` fields to be non-nullable with `@oneOf` directive.",
28
+ url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
29
+ examples: [
30
+ {
31
+ title: "Incorrect",
32
+ code: (
33
+ /* GraphQL */
34
+ `
35
+ input Input @oneOf {
36
+ foo: String!
37
+ b: Int
38
+ }
39
+ `
40
+ )
41
+ },
42
+ {
43
+ title: "Correct",
44
+ code: (
45
+ /* GraphQL */
46
+ `
47
+ input Input @oneOf {
48
+ foo: String
49
+ bar: Int
50
+ }
51
+ `
52
+ )
53
+ }
54
+ ]
55
+ },
56
+ messages: {
57
+ [RULE_ID]: '{{ nodeName }} must be nullable when "@oneOf" is in use'
58
+ },
59
+ schema: []
60
+ },
61
+ create(context) {
62
+ return {
63
+ "Directive[name.value=oneOf]"({ parent }) {
64
+ if ([
65
+ import_graphql.Kind.OBJECT_TYPE_DEFINITION,
66
+ import_graphql.Kind.INPUT_OBJECT_TYPE_DEFINITION
67
+ ].includes(parent.kind))
68
+ for (const field of parent.fields || [])
69
+ field.gqlType.kind === import_graphql.Kind.NON_NULL_TYPE && context.report({
70
+ node: field.name,
71
+ messageId: RULE_ID,
72
+ data: { nodeName: (0, import_utils.getNodeName)(field) }
73
+ });
74
+ }
75
+ };
76
+ }
77
+ };
78
+ // Annotate the CommonJS export names for ESM import in node:
79
+ 0 && (module.exports = {
80
+ rule
81
+ });
@@ -0,0 +1,13 @@
1
+ import { GraphQLESLintRule } from '../types.js';
2
+ import 'eslint';
3
+ import 'estree';
4
+ import 'graphql';
5
+ import 'json-schema-to-ts';
6
+ import '../siblings.js';
7
+ import '@graphql-tools/utils';
8
+ import '../estree-converter/types.js';
9
+ import 'graphql-config';
10
+
11
+ declare const rule: GraphQLESLintRule;
12
+
13
+ export { rule };