@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,91 @@
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 no_typename_prefix_exports = {};
17
+ __export(no_typename_prefix_exports, {
18
+ rule: () => rule
19
+ });
20
+ module.exports = __toCommonJS(no_typename_prefix_exports);
21
+ const NO_TYPENAME_PREFIX = "NO_TYPENAME_PREFIX", rule = {
22
+ meta: {
23
+ type: "suggestion",
24
+ hasSuggestions: !0,
25
+ docs: {
26
+ category: "Schema",
27
+ description: "Enforces users to avoid using the type name in a field name while defining your schema.",
28
+ recommended: !0,
29
+ url: "https://the-guild.dev/graphql/eslint/rules/no-typename-prefix",
30
+ examples: [
31
+ {
32
+ title: "Incorrect",
33
+ code: (
34
+ /* GraphQL */
35
+ `
36
+ type User {
37
+ userId: ID!
38
+ }
39
+ `
40
+ )
41
+ },
42
+ {
43
+ title: "Correct",
44
+ code: (
45
+ /* GraphQL */
46
+ `
47
+ type User {
48
+ id: ID!
49
+ }
50
+ `
51
+ )
52
+ }
53
+ ]
54
+ },
55
+ messages: {
56
+ [NO_TYPENAME_PREFIX]: 'Field "{{ fieldName }}" starts with the name of the parent type "{{ typeName }}"'
57
+ },
58
+ schema: []
59
+ },
60
+ create(context) {
61
+ return {
62
+ "ObjectTypeDefinition, ObjectTypeExtension, InterfaceTypeDefinition, InterfaceTypeExtension"(node) {
63
+ const typeName = node.name.value, lowerTypeName = typeName.toLowerCase();
64
+ for (const field of node.fields || []) {
65
+ const fieldName = field.name.value;
66
+ fieldName.toLowerCase().startsWith(lowerTypeName) && context.report({
67
+ data: {
68
+ fieldName,
69
+ typeName
70
+ },
71
+ messageId: NO_TYPENAME_PREFIX,
72
+ node: field.name,
73
+ suggest: [
74
+ {
75
+ desc: `Remove \`${fieldName.slice(0, typeName.length)}\` prefix`,
76
+ fix: (fixer) => fixer.replaceText(
77
+ field.name,
78
+ fieldName.replace(new RegExp(`^${typeName}`, "i"), "")
79
+ )
80
+ }
81
+ ]
82
+ });
83
+ }
84
+ }
85
+ };
86
+ }
87
+ };
88
+ // Annotate the CommonJS export names for ESM import in node:
89
+ 0 && (module.exports = {
90
+ rule
91
+ });
@@ -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,177 @@
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 no_unreachable_types_exports = {};
25
+ __export(no_unreachable_types_exports, {
26
+ rule: () => rule
27
+ });
28
+ module.exports = __toCommonJS(no_unreachable_types_exports);
29
+ var import_graphql = require("graphql"), import_lodash = __toESM(require("lodash.lowercase")), import_utils = require("../utils.js");
30
+ const RULE_ID = "no-unreachable-types", KINDS = [
31
+ import_graphql.Kind.DIRECTIVE_DEFINITION,
32
+ import_graphql.Kind.OBJECT_TYPE_DEFINITION,
33
+ import_graphql.Kind.OBJECT_TYPE_EXTENSION,
34
+ import_graphql.Kind.INTERFACE_TYPE_DEFINITION,
35
+ import_graphql.Kind.INTERFACE_TYPE_EXTENSION,
36
+ import_graphql.Kind.SCALAR_TYPE_DEFINITION,
37
+ import_graphql.Kind.SCALAR_TYPE_EXTENSION,
38
+ import_graphql.Kind.INPUT_OBJECT_TYPE_DEFINITION,
39
+ import_graphql.Kind.INPUT_OBJECT_TYPE_EXTENSION,
40
+ import_graphql.Kind.UNION_TYPE_DEFINITION,
41
+ import_graphql.Kind.UNION_TYPE_EXTENSION,
42
+ import_graphql.Kind.ENUM_TYPE_DEFINITION,
43
+ import_graphql.Kind.ENUM_TYPE_EXTENSION
44
+ ];
45
+ let reachableTypesCache;
46
+ const RequestDirectiveLocations = /* @__PURE__ */ new Set([
47
+ import_graphql.DirectiveLocation.QUERY,
48
+ import_graphql.DirectiveLocation.MUTATION,
49
+ import_graphql.DirectiveLocation.SUBSCRIPTION,
50
+ import_graphql.DirectiveLocation.FIELD,
51
+ import_graphql.DirectiveLocation.FRAGMENT_DEFINITION,
52
+ import_graphql.DirectiveLocation.FRAGMENT_SPREAD,
53
+ import_graphql.DirectiveLocation.INLINE_FRAGMENT,
54
+ import_graphql.DirectiveLocation.VARIABLE_DEFINITION
55
+ ]);
56
+ function getReachableTypes(schema) {
57
+ if (reachableTypesCache)
58
+ return reachableTypesCache;
59
+ const reachableTypes = /* @__PURE__ */ new Set(), collect = (node) => {
60
+ const typeName = (0, import_utils.getTypeName)(node);
61
+ if (reachableTypes.has(typeName))
62
+ return;
63
+ reachableTypes.add(typeName);
64
+ const type = schema.getType(typeName) || schema.getDirective(typeName);
65
+ if ((0, import_graphql.isInterfaceType)(type)) {
66
+ const { objects, interfaces } = schema.getImplementations(type);
67
+ for (const { astNode } of [...objects, ...interfaces])
68
+ (0, import_graphql.visit)(astNode, visitor);
69
+ } else
70
+ type?.astNode && (0, import_graphql.visit)(type.astNode, visitor);
71
+ }, visitor = {
72
+ InterfaceTypeDefinition: collect,
73
+ ObjectTypeDefinition: collect,
74
+ InputValueDefinition: collect,
75
+ UnionTypeDefinition: collect,
76
+ FieldDefinition: collect,
77
+ Directive: collect,
78
+ NamedType: collect
79
+ };
80
+ for (const type of [
81
+ schema,
82
+ // visiting SchemaDefinition node
83
+ schema.getQueryType(),
84
+ schema.getMutationType(),
85
+ schema.getSubscriptionType()
86
+ ])
87
+ type?.astNode && (0, import_graphql.visit)(type.astNode, visitor);
88
+ for (const node of schema.getDirectives())
89
+ if (node.locations.some((location) => RequestDirectiveLocations.has(location))) {
90
+ reachableTypes.add(node.name);
91
+ for (const arg of node.args) {
92
+ const argTypeName = "name" in arg.type && arg.type.name;
93
+ argTypeName && reachableTypes.add(argTypeName);
94
+ }
95
+ }
96
+ return reachableTypesCache = reachableTypes, reachableTypesCache;
97
+ }
98
+ const rule = {
99
+ meta: {
100
+ messages: {
101
+ [RULE_ID]: "{{ type }} `{{ typeName }}` is unreachable."
102
+ },
103
+ docs: {
104
+ description: "Requires all types to be reachable at some level by root level fields.",
105
+ category: "Schema",
106
+ url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
107
+ requiresSchema: !0,
108
+ examples: [
109
+ {
110
+ title: "Incorrect",
111
+ code: (
112
+ /* GraphQL */
113
+ `
114
+ type User {
115
+ id: ID!
116
+ name: String
117
+ }
118
+
119
+ type Query {
120
+ me: String
121
+ }
122
+ `
123
+ )
124
+ },
125
+ {
126
+ title: "Correct",
127
+ code: (
128
+ /* GraphQL */
129
+ `
130
+ type User {
131
+ id: ID!
132
+ name: String
133
+ }
134
+
135
+ type Query {
136
+ me: User
137
+ }
138
+ `
139
+ )
140
+ }
141
+ ],
142
+ recommended: !0
143
+ },
144
+ type: "suggestion",
145
+ schema: [],
146
+ hasSuggestions: !0
147
+ },
148
+ create(context) {
149
+ const schema = (0, import_utils.requireGraphQLSchemaFromContext)(RULE_ID, context), reachableTypes = getReachableTypes(schema);
150
+ return {
151
+ [`:matches(${KINDS}) > .name`](node) {
152
+ const typeName = node.value;
153
+ if (!reachableTypes.has(typeName)) {
154
+ const type = (0, import_lodash.default)(node.parent.kind.replace(/(Extension|Definition)$/, ""));
155
+ context.report({
156
+ node,
157
+ messageId: RULE_ID,
158
+ data: {
159
+ type: type[0].toUpperCase() + type.slice(1),
160
+ typeName
161
+ },
162
+ suggest: [
163
+ {
164
+ desc: `Remove \`${typeName}\``,
165
+ fix: (fixer) => fixer.remove(node.parent)
166
+ }
167
+ ]
168
+ });
169
+ }
170
+ }
171
+ };
172
+ }
173
+ };
174
+ // Annotate the CommonJS export names for ESM import in node:
175
+ 0 && (module.exports = {
176
+ rule
177
+ });
@@ -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,132 @@
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 no_unused_fields_exports = {};
17
+ __export(no_unused_fields_exports, {
18
+ rule: () => rule
19
+ });
20
+ module.exports = __toCommonJS(no_unused_fields_exports);
21
+ var import_graphql = require("graphql"), import_utils = require("../utils.js");
22
+ const RULE_ID = "no-unused-fields";
23
+ let usedFieldsCache;
24
+ function getUsedFields(schema, operations) {
25
+ if (usedFieldsCache)
26
+ return usedFieldsCache;
27
+ const usedFields = /* @__PURE__ */ Object.create(null), typeInfo = new import_graphql.TypeInfo(schema), visitor = (0, import_graphql.visitWithTypeInfo)(typeInfo, {
28
+ Field(node) {
29
+ if (!typeInfo.getFieldDef())
30
+ return !1;
31
+ const parentTypeName = typeInfo.getParentType().name, fieldName = node.name.value;
32
+ usedFields[parentTypeName] ??= /* @__PURE__ */ new Set(), usedFields[parentTypeName].add(fieldName);
33
+ }
34
+ }), allDocuments = [...operations.getOperations(), ...operations.getFragments()];
35
+ for (const { document } of allDocuments)
36
+ (0, import_graphql.visit)(document, visitor);
37
+ return usedFieldsCache = usedFields, usedFieldsCache;
38
+ }
39
+ const rule = {
40
+ meta: {
41
+ messages: {
42
+ [RULE_ID]: 'Field "{{fieldName}}" is unused'
43
+ },
44
+ docs: {
45
+ description: "Requires all fields to be used at some level by siblings operations.",
46
+ category: "Schema",
47
+ url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
48
+ requiresSiblings: !0,
49
+ requiresSchema: !0,
50
+ // Requires documents to be set
51
+ isDisabledForAllConfig: !0,
52
+ examples: [
53
+ {
54
+ title: "Incorrect",
55
+ code: (
56
+ /* GraphQL */
57
+ `
58
+ type User {
59
+ id: ID!
60
+ name: String
61
+ someUnusedField: String
62
+ }
63
+
64
+ type Query {
65
+ me: User
66
+ }
67
+
68
+ query {
69
+ me {
70
+ id
71
+ name
72
+ }
73
+ }
74
+ `
75
+ )
76
+ },
77
+ {
78
+ title: "Correct",
79
+ code: (
80
+ /* GraphQL */
81
+ `
82
+ type User {
83
+ id: ID!
84
+ name: String
85
+ }
86
+
87
+ type Query {
88
+ me: User
89
+ }
90
+
91
+ query {
92
+ me {
93
+ id
94
+ name
95
+ }
96
+ }
97
+ `
98
+ )
99
+ }
100
+ ]
101
+ },
102
+ type: "suggestion",
103
+ schema: [],
104
+ hasSuggestions: !0
105
+ },
106
+ create(context) {
107
+ const schema = (0, import_utils.requireGraphQLSchemaFromContext)(RULE_ID, context), siblingsOperations = (0, import_utils.requireSiblingsOperations)(RULE_ID, context), usedFields = getUsedFields(schema, siblingsOperations);
108
+ return {
109
+ FieldDefinition(node) {
110
+ const fieldName = node.name.value, parentTypeName = node.parent.name.value;
111
+ usedFields[parentTypeName]?.has(fieldName) || context.report({
112
+ node: node.name,
113
+ messageId: RULE_ID,
114
+ data: { fieldName },
115
+ suggest: [
116
+ {
117
+ desc: `Remove \`${fieldName}\` field`,
118
+ fix(fixer) {
119
+ const sourceCode = context.getSourceCode(), tokenBefore = sourceCode.getTokenBefore(node), tokenAfter = sourceCode.getTokenAfter(node), isEmptyType = tokenBefore.type === "{" && tokenAfter.type === "}";
120
+ return fixer.remove(isEmptyType ? node.parent : node);
121
+ }
122
+ }
123
+ ]
124
+ });
125
+ }
126
+ };
127
+ }
128
+ };
129
+ // Annotate the CommonJS export names for ESM import in node:
130
+ 0 && (module.exports = {
131
+ rule
132
+ });
@@ -0,0 +1,30 @@
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 '../siblings.js';
7
+ import '@graphql-tools/utils';
8
+ import '../estree-converter/types.js';
9
+ import 'graphql-config';
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 minProperties: 1;
18
+ readonly properties: {
19
+ readonly includeBoth: {
20
+ readonly type: "boolean";
21
+ readonly default: true;
22
+ readonly description: "Enforce including both forward and backward pagination arguments";
23
+ };
24
+ };
25
+ };
26
+ };
27
+ type RuleOptions = FromSchema<typeof schema>;
28
+ declare const rule: GraphQLESLintRule<RuleOptions, true>;
29
+
30
+ export { RuleOptions, rule };
@@ -0,0 +1,126 @@
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 relay_arguments_exports = {};
17
+ __export(relay_arguments_exports, {
18
+ rule: () => rule
19
+ });
20
+ module.exports = __toCommonJS(relay_arguments_exports);
21
+ var import_graphql = require("graphql"), import_utils = require("../utils.js");
22
+ const RULE_ID = "relay-arguments", MISSING_ARGUMENTS = "MISSING_ARGUMENTS", schema = {
23
+ type: "array",
24
+ maxItems: 1,
25
+ items: {
26
+ type: "object",
27
+ additionalProperties: !1,
28
+ minProperties: 1,
29
+ properties: {
30
+ includeBoth: {
31
+ type: "boolean",
32
+ default: !0,
33
+ description: "Enforce including both forward and backward pagination arguments"
34
+ }
35
+ }
36
+ }
37
+ }, rule = {
38
+ meta: {
39
+ type: "problem",
40
+ docs: {
41
+ category: "Schema",
42
+ description: [
43
+ "Set of rules to follow Relay specification for Arguments.",
44
+ "",
45
+ "- A field that returns a Connection type must include forward pagination arguments (`first` and `after`), backward pagination arguments (`last` and `before`), or both",
46
+ "",
47
+ "Forward pagination arguments",
48
+ "",
49
+ "- `first` takes a non-negative integer",
50
+ "- `after` takes the Cursor type",
51
+ "",
52
+ "Backward pagination arguments",
53
+ "",
54
+ "- `last` takes a non-negative integer",
55
+ "- `before` takes the Cursor type"
56
+ ].join(`
57
+ `),
58
+ url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
59
+ examples: [
60
+ {
61
+ title: "Incorrect",
62
+ code: (
63
+ /* GraphQL */
64
+ `
65
+ type User {
66
+ posts: PostConnection
67
+ }
68
+ `
69
+ )
70
+ },
71
+ {
72
+ title: "Correct",
73
+ code: (
74
+ /* GraphQL */
75
+ `
76
+ type User {
77
+ posts(after: String, first: Int, before: String, last: Int): PostConnection
78
+ }
79
+ `
80
+ )
81
+ }
82
+ ],
83
+ isDisabledForAllConfig: !0
84
+ },
85
+ messages: {
86
+ [MISSING_ARGUMENTS]: "A field that returns a Connection type must include forward pagination arguments (`first` and `after`), backward pagination arguments (`last` and `before`), or both."
87
+ },
88
+ schema
89
+ },
90
+ create(context) {
91
+ const schema2 = (0, import_utils.requireGraphQLSchemaFromContext)(RULE_ID, context), { includeBoth = !0 } = context.options[0] || {};
92
+ return {
93
+ "FieldDefinition > .gqlType Name[value=/Connection$/]"(node) {
94
+ let fieldNode = node.parent;
95
+ for (; fieldNode.kind !== import_graphql.Kind.FIELD_DEFINITION; )
96
+ fieldNode = fieldNode.parent;
97
+ const args = Object.fromEntries(
98
+ fieldNode.arguments?.map((argument) => [argument.name.value, argument]) || []
99
+ ), hasForwardPagination = !!(args.first && args.after), hasBackwardPagination = !!(args.last && args.before);
100
+ if (!hasForwardPagination && !hasBackwardPagination) {
101
+ context.report({
102
+ node: fieldNode.name,
103
+ messageId: MISSING_ARGUMENTS
104
+ });
105
+ return;
106
+ }
107
+ function checkField(typeName, argumentName) {
108
+ const argument = args[argumentName], hasArgument = !!argument;
109
+ let type = argument;
110
+ if (hasArgument && type.gqlType.kind === import_graphql.Kind.NON_NULL_TYPE && (type = type.gqlType), !(hasArgument && type.gqlType.kind === import_graphql.Kind.NAMED_TYPE && (type.gqlType.name.value === typeName || typeName === "String" && (0, import_graphql.isScalarType)(schema2.getType(type.gqlType.name.value))))) {
111
+ const returnType = typeName === "String" ? "String or Scalar" : typeName;
112
+ context.report({
113
+ node: (argument || fieldNode).name,
114
+ message: hasArgument ? `Argument \`${argumentName}\` must return ${returnType}.` : `Field \`${fieldNode.name.value}\` must contain an argument \`${argumentName}\`, that return ${returnType}.`
115
+ });
116
+ }
117
+ }
118
+ (includeBoth || args.first || args.after) && (checkField("Int", "first"), checkField("String", "after")), (includeBoth || args.last || args.before) && (checkField("Int", "last"), checkField("String", "before"));
119
+ }
120
+ };
121
+ }
122
+ };
123
+ // Annotate the CommonJS export names for ESM import in node:
124
+ 0 && (module.exports = {
125
+ rule
126
+ });
@@ -0,0 +1,14 @@
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 NON_OBJECT_TYPES: Kind[];
12
+ declare const rule: GraphQLESLintRule;
13
+
14
+ export { NON_OBJECT_TYPES, rule };