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

Sign up to get free protection for your applications and to get access to all the features.
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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2022 Dimitri POSTOLOV
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,266 +1,26 @@
1
- This project integrates GraphQL and ESLint, for a better developer experience.
2
-
3
- <img height="150" src="./logo.png">
1
+ # GraphQL-ESLint
4
2
 
5
3
  [![npm version](https://badge.fury.io/js/%40graphql-eslint%2Feslint-plugin.svg)](https://badge.fury.io/js/%40graphql-eslint%2Feslint-plugin)
6
4
 
7
- > Created and maintained by [The Guild](https://the-guild.dev)
8
-
9
- ## Key Features
10
-
11
- - 🚀 Integrates with ESLint core (as a ESTree parser)
12
- - 🚀 Works on `.graphql` files, `gql` usages and `/* GraphQL */` magic comments
13
- - 🚀 Lints both GraphQL schema and GraphQL operations
14
- - 🚀 Extended type info for more advanced usages
15
- - 🚀 Supports ESLint directives (for example: `eslint-disable-next-line`)
16
- - 🚀 Easily extendable - supports custom rules based on GraphQL's AST and ESLint API
17
- - 🚀 Validates, lints, prettifies and checks for best practices across GraphQL schema and GraphQL operations
18
- - 🚀 Integrates with [`graphql-config`](https://graphql-config.com)
19
- - 🚀 Integrates and visualizes lint issues in popular IDEs (VSCode / WebStorm)
20
-
21
- > Special thanks to [ilyavolodin](https://github.com/ilyavolodin) for his work on a similar project!
22
-
23
- <img src="https://thumbs.gfycat.com/ActualTerrificDog-size_restricted.gif" />
24
-
25
- ## Getting Started
26
-
27
- - [Introducing GraphQL-ESLint!](https://the-guild.dev/blog/introducing-graphql-eslint) @ `the-guild.dev`
28
-
29
- ### Installation
30
-
31
- Start by installing the plugin package, which includes everything you need:
32
-
33
- ```sh
34
- yarn add -D @graphql-eslint/eslint-plugin
35
- ```
36
-
37
- Or, with NPM:
38
-
39
- ```sh
40
- npm install --save-dev @graphql-eslint/eslint-plugin
41
- ```
42
-
43
- > Make sure you have `graphql` dependency in your project.
44
-
45
- ## Configuration
46
-
47
- To get started, define an override in your ESLint config to apply this plugin to `.graphql` files. Add the [rules](docs/README.md) you want applied.
48
-
49
- > 🚨 Important! This step is necessary even if you are declaring operations and/or schema in code files.
50
-
51
- ```json
52
- {
53
- "overrides": [
54
- {
55
- "files": ["*.graphql"],
56
- "parser": "@graphql-eslint/eslint-plugin",
57
- "plugins": ["@graphql-eslint"],
58
- "rules": {
59
- "@graphql-eslint/known-type-names": "error"
60
- }
61
- }
62
- ]
63
- }
64
- ```
65
-
66
- If your GraphQL definitions are defined only in `.graphql` files, and you're only using rules that apply to individual files, you should be good to go 👍. If you would like use a remote schema or use rules that apply across the entire collection of definitions at once, see [here](#extended-linting-rules-with-graphql-schema).
67
-
68
- ### Apply this plugin to GraphQL definitions defined in code files
69
-
70
- If you are defining GraphQL schema or GraphQL operations in code files, you'll want to define an additional override to extend the functionality of this plugin to the schema and operations in those files.
71
-
72
- ```diff
73
- {
74
- "overrides": [
75
- + {
76
- + "files": ["*.js"],
77
- + "processor": "@graphql-eslint/graphql"
78
- + },
79
- {
80
- "files": ["*.graphql"],
81
- "parser": "@graphql-eslint/eslint-plugin",
82
- "plugins": ["@graphql-eslint"],
83
- "rules": {
84
- "@graphql-eslint/known-type-names": "error"
85
- }
86
- }
87
- ]
88
- }
89
- ```
90
-
91
- Under the hood, specifying the `@graphql-eslint/graphql` processor for code files will cause `graphql-eslint/graphql` to extract the schema and operation definitions from these files into virtual GraphQL documents with `.graphql` extensions. This will allow the overrides you've defined for `.graphql` files, via `"files": ["*.graphql"]`, to get applied to the definitions defined in your code files.
92
-
93
- ### Extended linting rules with GraphQL Schema
94
-
95
- Some rules require an understanding of the entire schema at once. For example, [no-unreachable-types](https://github.com/B2o5T/graphql-eslint/blob/master/docs/rules/no-unreachable-types.md#no-unreachable-types) checks that all types are reachable by root-level fields.
96
-
97
- To use these rules, you'll need to tell ESLint how to identify the entire set of schema definitions.
98
-
99
- If you are using [`graphql-config`](https://graphql-config.com), you are good to go. `graphql-eslint` integrates with it automatically and will use it to load your schema!
100
-
101
- Alternatively, you can define `parserOptions.schema` in the `*.graphql` override in your ESLint config.
102
-
103
- The parser allows you to specify a json file / graphql files(s) / url / raw string to locate your schema (We are using `graphql-tools` to do that). Just add `parserOptions.schema` to your configuration file:
104
-
105
- ```diff
106
- {
107
- "files": ["*.graphql"],
108
- "parser": "@graphql-eslint/eslint-plugin",
109
- "plugins": ["@graphql-eslint"],
110
- "rules": {
111
- "@graphql-eslint/no-unreachable-types": "error"
112
- },
113
- + "parserOptions": {
114
- + "schema": "./schema.graphql"
115
- + }
116
- }
117
- ```
118
-
119
- > You can find a complete [documentation of the `parserOptions` here](docs/parser-options.md).
120
-
121
- > Some rules require type information to operate, it's marked in the docs for each rule!
122
-
123
- ### Extended linting rules with siblings operations
124
-
125
- While implementing this tool, we had to find solutions for a better integration of the GraphQL ecosystem and ESLint core.
126
-
127
- GraphQL operations can be distributed across many files, while ESLint operates on one file at a time. If you are using GraphQL fragments in separate files, some rules might yield incorrect results, due the missing information.
128
-
129
- To workaround that, we allow you to provide additional information on your GraphQL operations, making it available for rules while doing the actual linting.
130
-
131
- To provide that, we are using `graphql-tools` loaders to load your sibling operations and fragments, just specify a glob expression(s) that points to your code/`.graphql` files:
132
-
133
- ```diff
134
- {
135
- "files": ["*.graphql"],
136
- "parser": "@graphql-eslint/eslint-plugin",
137
- "plugins": ["@graphql-eslint"],
138
- "rules": {
139
- "@graphql-eslint/unique-operation-name": "error"
140
- },
141
- "parserOptions": {
142
- + "operations": "./src/**/*.graphql",
143
- "schema": "./schema.graphql"
144
- }
145
- }
146
- ```
147
-
148
- ### VSCode Integration
149
-
150
- Use [ESLint VSCode extension](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) to integrate ESLint into VSCode.
151
-
152
- For syntax highlighting you need a GraphQL extension (which may potentially have its own linting), for example [GraphQL (by GraphQL Foundation)](https://marketplace.visualstudio.com/items?itemName=GraphQL.vscode-graphql).
153
-
154
- ### Disabling Rules
155
-
156
- The `graphql-eslint` parser looks for GraphQL comments syntax (marked with `#`) and will send it to ESLint as directives. That means, you can use ESLint directives syntax to hint ESLint, just like in any other type of files.
157
-
158
- To disable ESLint for a specific line, you can do:
159
-
160
- ```graphql
161
- # eslint-disable-next-line
162
- type Query {
163
- foo: String!
164
- }
165
- ```
166
-
167
- You can also specify specific rules to disable, apply it over the entire file, `eslint-disable-next-line` or current `eslint-disable-line`.
168
-
169
- You can find a list of [ESLint directives here](https://eslint.org/docs/2.13.1/user-guide/configuring#disabling-rules-with-inline-comments).
170
-
171
- ## Available Rules
172
-
173
- You can find a complete list of [all available rules here](docs/README.md).
174
-
175
- ### Deprecated Rules
176
-
177
- See [docs/deprecated-rules.md](docs/deprecated-rules.md).
178
-
179
- ## Available Configs
180
-
181
- <!-- prettier-ignore-start -->
182
- |Name|Description|
183
- |:-:|-|
184
- |[`schema-recommended`](packages/plugin/src/configs/schema-recommended.json)|enables recommended rules for schema (SDL) development|
185
- |[`schema-all`](packages/plugin/src/configs/schema-all.json)|enables all rules for schema (SDL) development, except for those that require `parserOptions.operations` option|
186
- |[`operations-recommended`](packages/plugin/src/configs/operations-recommended.json) |enables recommended rules for consuming GraphQL (operations) development|
187
- |[`operations-all`](packages/plugin/src/configs/operations-all.json)|enables all rules for consuming GraphQL (operations) development|
188
- |[`relay`](packages/plugin/src/configs/relay.json)|enables rules from Relay specification for schema (SDL) development|
189
- <!-- prettier-ignore-end -->
190
-
191
- > If you are in a project that develops the GraphQL schema, you'll need `schema` rules.
192
-
193
- > If you are in a project that develops GraphQL operations (query/mutation/subscription), you'll need `operations` rules.
194
-
195
- > If you are in a monorepo project, you probably need both sets of rules, see [example of configuration](examples/monorepo/.eslintrc.cjs).
196
-
197
- ### Config usage
198
-
199
- For example, to enable the `schema-recommended` config, enable it in your `.eslintrc` file with the `extends` option:
200
-
201
- > All configs under the hood set `parser` as `@graphql-eslint/eslint-plugin` and add `@graphql-eslint` to `plugins` array, so you don't need to specify them.
202
-
203
- ```diff
204
- {
205
- "overrides": [
206
- {
207
- "files": ["*.js"],
208
- "processor": "@graphql-eslint/graphql"
209
- },
210
- {
211
- "files": ["*.graphql"],
212
- - "parser": "@graphql-eslint/eslint-plugin",
213
- - "plugins": ["@graphql-eslint"],
214
- + "extends": "plugin:@graphql-eslint/schema-recommended"
215
- }
216
- ]
217
- }
218
- ```
219
-
220
- ### `prettier` rule
221
-
222
- `eslint-plugin-prettier` supports `.graphql` files, and `v4.1.0` supports `graphql` blocks even better. You need to do the following:
223
-
224
- ```js
225
- module.exports = {
226
- overrides: [
227
- {
228
- files: ['*.js'],
229
- processor: '@graphql-eslint/graphql',
230
- extends: ['plugin:prettier/recommended']
231
- },
232
- {
233
- files: ['*.graphql'],
234
- parser: '@graphql-eslint/eslint-plugin',
235
- plugins: ['@graphql-eslint'],
236
- rules: {
237
- 'prettier/prettier': 'error'
238
- }
239
- }
240
- ]
241
- }
242
- ```
243
-
244
- You can take [`examples/prettier`](examples/prettier/.eslintrc.cjs) as example.
245
-
246
- ## Further Reading
247
-
248
- If you wish to learn more about this project, how the parser works, how to add custom rules and more please refer to the below links:
5
+ ## Documentation
249
6
 
250
- - [Writing Custom Rules](docs/custom-rules.md)
251
- - [How the parser works?](docs/parser.md)
252
- - [`parserOptions`](docs/parser-options.md)
7
+ [https://the-guild.dev/graphql/eslint](https://the-guild.dev/graphql/eslint)
253
8
 
254
9
  ## Contributions
255
10
 
256
- Contributions, issues and feature requests are very welcome. If you are using this package and fixed a bug for yourself, please consider submitting a PR!
11
+ Contributions, issues and feature requests are very welcome. If you are using this package and fixed
12
+ a bug for yourself, please consider submitting a PR!
257
13
 
258
- And if this is your first time contributing to this project, please do read our [Contributor Workflow Guide](https://github.com/the-guild-org/Stack/blob/master/CONTRIBUTING.md) before you get started off.
14
+ And if this is your first time contributing to this project, please do read our
15
+ [Contributor Workflow Guide](https://github.com/the-guild-org/Stack/blob/master/CONTRIBUTING.md)
16
+ before you get started off.
259
17
 
260
- ### Code of Conduct
18
+ ## Code of Conduct
261
19
 
262
- Help us keep GraphQL ESLint open and inclusive. Please read and follow our [Code of Conduct](https://github.com/the-guild-org/Stack/blob/master/CODE_OF_CONDUCT.md) as adopted from [Contributor Covenant](https://contributor-covenant.org).
20
+ Help us keep GraphQL ESLint open and inclusive. Please read and follow our
21
+ [Code of Conduct](https://github.com/the-guild-org/Stack/blob/master/CODE_OF_CONDUCT.md) as adopted
22
+ from [Contributor Covenant](https://contributor-covenant.org).
263
23
 
264
24
  ## License
265
25
 
266
- Released under the [MIT license](LICENSE).
26
+ Released under the [MIT license](./LICENSE).
package/cjs/cache.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ declare class ModuleCache<T, K = any> {
2
+ map: Map<K, {
3
+ lastSeen: [number, number];
4
+ result: T;
5
+ }>;
6
+ set(cacheKey: K, result: T): void;
7
+ get(cacheKey: K, settings?: {
8
+ lifetime: number;
9
+ }): T | void;
10
+ }
11
+
12
+ export { ModuleCache };
package/cjs/cache.js ADDED
@@ -0,0 +1,62 @@
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;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var cache_exports = {};
30
+ __export(cache_exports, {
31
+ ModuleCache: () => ModuleCache
32
+ });
33
+ module.exports = __toCommonJS(cache_exports);
34
+ var import_debug = __toESM(require("debug"));
35
+ const log = (0, import_debug.default)("graphql-eslint:ModuleCache");
36
+ class ModuleCache {
37
+ constructor() {
38
+ this.map = /* @__PURE__ */ new Map();
39
+ }
40
+ set(cacheKey, result) {
41
+ this.map.set(cacheKey, { lastSeen: process.hrtime(), result });
42
+ log("setting entry for", cacheKey);
43
+ }
44
+ get(cacheKey, settings = {
45
+ lifetime: 10
46
+ /* seconds */
47
+ }) {
48
+ const value = this.map.get(cacheKey);
49
+ if (!value) {
50
+ log("cache miss for", cacheKey);
51
+ return;
52
+ }
53
+ const { lastSeen, result } = value;
54
+ if (process.env.NODE || process.hrtime(lastSeen)[0] < settings.lifetime) {
55
+ return result;
56
+ }
57
+ }
58
+ }
59
+ // Annotate the CommonJS export names for ESM import in node:
60
+ 0 && (module.exports = {
61
+ ModuleCache
62
+ });
@@ -0,0 +1,148 @@
1
+ declare const configs: {
2
+ 'schema-recommended': {
3
+ parser: string;
4
+ plugins: string[];
5
+ rules: {
6
+ '@graphql-eslint/description-style': string;
7
+ '@graphql-eslint/known-argument-names': string;
8
+ '@graphql-eslint/known-directives': string;
9
+ '@graphql-eslint/known-type-names': string;
10
+ '@graphql-eslint/lone-schema-definition': string;
11
+ '@graphql-eslint/naming-convention': (string | {
12
+ types: string;
13
+ FieldDefinition: string;
14
+ InputValueDefinition: string;
15
+ Argument: string;
16
+ DirectiveDefinition: string;
17
+ EnumValueDefinition: string;
18
+ 'FieldDefinition[parent.name.value=Query]': {
19
+ forbiddenPrefixes: string[];
20
+ forbiddenSuffixes: string[];
21
+ };
22
+ 'FieldDefinition[parent.name.value=Mutation]': {
23
+ forbiddenPrefixes: string[];
24
+ forbiddenSuffixes: string[];
25
+ };
26
+ 'FieldDefinition[parent.name.value=Subscription]': {
27
+ forbiddenPrefixes: string[];
28
+ forbiddenSuffixes: string[];
29
+ };
30
+ })[];
31
+ '@graphql-eslint/no-case-insensitive-enum-values-duplicates': string;
32
+ '@graphql-eslint/no-hashtag-description': string;
33
+ '@graphql-eslint/no-typename-prefix': string;
34
+ '@graphql-eslint/no-unreachable-types': string;
35
+ '@graphql-eslint/provided-required-arguments': string;
36
+ '@graphql-eslint/require-deprecation-reason': string;
37
+ '@graphql-eslint/require-description': (string | {
38
+ types: boolean;
39
+ DirectiveDefinition: boolean;
40
+ })[];
41
+ '@graphql-eslint/strict-id-in-types': string;
42
+ '@graphql-eslint/unique-directive-names': string;
43
+ '@graphql-eslint/unique-directive-names-per-location': string;
44
+ '@graphql-eslint/unique-field-definition-names': string;
45
+ '@graphql-eslint/unique-operation-types': string;
46
+ '@graphql-eslint/unique-type-names': string;
47
+ };
48
+ };
49
+ 'schema-all': {
50
+ extends: string;
51
+ rules: {
52
+ '@graphql-eslint/alphabetize': (string | {
53
+ fields: string[];
54
+ values: string[];
55
+ arguments: string[];
56
+ })[];
57
+ '@graphql-eslint/input-name': string;
58
+ '@graphql-eslint/no-scalar-result-type-on-mutation': string;
59
+ '@graphql-eslint/require-deprecation-date': string;
60
+ '@graphql-eslint/require-field-of-type-query-in-mutation-result': string;
61
+ '@graphql-eslint/require-nullable-fields-with-oneof': string;
62
+ '@graphql-eslint/require-nullable-result-in-root': string;
63
+ '@graphql-eslint/require-type-pattern-with-oneof': string;
64
+ };
65
+ };
66
+ 'operations-recommended': {
67
+ parser: string;
68
+ plugins: string[];
69
+ rules: {
70
+ '@graphql-eslint/executable-definitions': string;
71
+ '@graphql-eslint/fields-on-correct-type': string;
72
+ '@graphql-eslint/fragments-on-composite-type': string;
73
+ '@graphql-eslint/known-argument-names': string;
74
+ '@graphql-eslint/known-directives': string;
75
+ '@graphql-eslint/known-fragment-names': string;
76
+ '@graphql-eslint/known-type-names': string;
77
+ '@graphql-eslint/lone-anonymous-operation': string;
78
+ '@graphql-eslint/naming-convention': (string | {
79
+ VariableDefinition: string;
80
+ OperationDefinition: {
81
+ style: string;
82
+ forbiddenPrefixes: string[];
83
+ forbiddenSuffixes: string[];
84
+ };
85
+ FragmentDefinition: {
86
+ style: string;
87
+ forbiddenPrefixes: string[];
88
+ forbiddenSuffixes: string[];
89
+ };
90
+ })[];
91
+ '@graphql-eslint/no-anonymous-operations': string;
92
+ '@graphql-eslint/no-deprecated': string;
93
+ '@graphql-eslint/no-duplicate-fields': string;
94
+ '@graphql-eslint/no-fragment-cycles': string;
95
+ '@graphql-eslint/no-undefined-variables': string;
96
+ '@graphql-eslint/no-unused-fragments': string;
97
+ '@graphql-eslint/no-unused-variables': string;
98
+ '@graphql-eslint/one-field-subscriptions': string;
99
+ '@graphql-eslint/overlapping-fields-can-be-merged': string;
100
+ '@graphql-eslint/possible-fragment-spread': string;
101
+ '@graphql-eslint/provided-required-arguments': string;
102
+ '@graphql-eslint/require-id-when-available': string;
103
+ '@graphql-eslint/scalar-leafs': string;
104
+ '@graphql-eslint/selection-set-depth': (string | {
105
+ maxDepth: number;
106
+ })[];
107
+ '@graphql-eslint/unique-argument-names': string;
108
+ '@graphql-eslint/unique-directive-names-per-location': string;
109
+ '@graphql-eslint/unique-input-field-names': string;
110
+ '@graphql-eslint/unique-variable-names': string;
111
+ '@graphql-eslint/value-literals-of-correct-type': string;
112
+ '@graphql-eslint/variables-are-input-types': string;
113
+ '@graphql-eslint/variables-in-allowed-position': string;
114
+ };
115
+ };
116
+ 'operations-all': {
117
+ extends: string;
118
+ rules: {
119
+ '@graphql-eslint/alphabetize': (string | {
120
+ selections: string[];
121
+ variables: string[];
122
+ arguments: string[];
123
+ })[];
124
+ '@graphql-eslint/lone-executable-definition': string;
125
+ '@graphql-eslint/match-document-filename': (string | {
126
+ query: string;
127
+ mutation: string;
128
+ subscription: string;
129
+ fragment: string;
130
+ })[];
131
+ '@graphql-eslint/no-one-place-fragments': string;
132
+ '@graphql-eslint/unique-fragment-name': string;
133
+ '@graphql-eslint/unique-operation-name': string;
134
+ };
135
+ };
136
+ relay: {
137
+ parser: string;
138
+ plugins: string[];
139
+ rules: {
140
+ '@graphql-eslint/relay-arguments': string;
141
+ '@graphql-eslint/relay-connection-types': string;
142
+ '@graphql-eslint/relay-edge-types': string;
143
+ '@graphql-eslint/relay-page-info': string;
144
+ };
145
+ };
146
+ };
147
+
148
+ export { configs };
@@ -0,0 +1,49 @@
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;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var configs_exports = {};
30
+ __export(configs_exports, {
31
+ configs: () => configs
32
+ });
33
+ module.exports = __toCommonJS(configs_exports);
34
+ var import_operations_all = __toESM(require("./operations-all.js"));
35
+ var import_operations_recommended = __toESM(require("./operations-recommended.js"));
36
+ var import_relay = __toESM(require("./relay.js"));
37
+ var import_schema_all = __toESM(require("./schema-all.js"));
38
+ var import_schema_recommended = __toESM(require("./schema-recommended.js"));
39
+ const configs = {
40
+ "schema-recommended": import_schema_recommended.default,
41
+ "schema-all": import_schema_all.default,
42
+ "operations-recommended": import_operations_recommended.default,
43
+ "operations-all": import_operations_all.default,
44
+ relay: import_relay.default
45
+ };
46
+ // Annotate the CommonJS export names for ESM import in node:
47
+ 0 && (module.exports = {
48
+ configs
49
+ });
@@ -0,0 +1,22 @@
1
+ declare const _default: {
2
+ extends: string;
3
+ rules: {
4
+ '@graphql-eslint/alphabetize': (string | {
5
+ selections: string[];
6
+ variables: string[];
7
+ arguments: string[];
8
+ })[];
9
+ '@graphql-eslint/lone-executable-definition': string;
10
+ '@graphql-eslint/match-document-filename': (string | {
11
+ query: string;
12
+ mutation: string;
13
+ subscription: string;
14
+ fragment: string;
15
+ })[];
16
+ '@graphql-eslint/no-one-place-fragments': string;
17
+ '@graphql-eslint/unique-fragment-name': string;
18
+ '@graphql-eslint/unique-operation-name': string;
19
+ };
20
+ };
21
+
22
+ export { _default as default };
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ module.exports = {
3
+ extends: "./configs/operations-recommended",
4
+ rules: {
5
+ "@graphql-eslint/alphabetize": [
6
+ "error",
7
+ {
8
+ selections: ["OperationDefinition", "FragmentDefinition"],
9
+ variables: ["OperationDefinition"],
10
+ arguments: ["Field", "Directive"]
11
+ }
12
+ ],
13
+ "@graphql-eslint/lone-executable-definition": "error",
14
+ "@graphql-eslint/match-document-filename": [
15
+ "error",
16
+ {
17
+ query: "kebab-case",
18
+ mutation: "kebab-case",
19
+ subscription: "kebab-case",
20
+ fragment: "kebab-case"
21
+ }
22
+ ],
23
+ "@graphql-eslint/no-one-place-fragments": "error",
24
+ "@graphql-eslint/unique-fragment-name": "error",
25
+ "@graphql-eslint/unique-operation-name": "error"
26
+ }
27
+ };
@@ -0,0 +1,52 @@
1
+ declare const _default: {
2
+ parser: string;
3
+ plugins: string[];
4
+ rules: {
5
+ '@graphql-eslint/executable-definitions': string;
6
+ '@graphql-eslint/fields-on-correct-type': string;
7
+ '@graphql-eslint/fragments-on-composite-type': string;
8
+ '@graphql-eslint/known-argument-names': string;
9
+ '@graphql-eslint/known-directives': string;
10
+ '@graphql-eslint/known-fragment-names': string;
11
+ '@graphql-eslint/known-type-names': string;
12
+ '@graphql-eslint/lone-anonymous-operation': string;
13
+ '@graphql-eslint/naming-convention': (string | {
14
+ VariableDefinition: string;
15
+ OperationDefinition: {
16
+ style: string;
17
+ forbiddenPrefixes: string[];
18
+ forbiddenSuffixes: string[];
19
+ };
20
+ FragmentDefinition: {
21
+ style: string;
22
+ forbiddenPrefixes: string[];
23
+ forbiddenSuffixes: string[];
24
+ };
25
+ })[];
26
+ '@graphql-eslint/no-anonymous-operations': string;
27
+ '@graphql-eslint/no-deprecated': string;
28
+ '@graphql-eslint/no-duplicate-fields': string;
29
+ '@graphql-eslint/no-fragment-cycles': string;
30
+ '@graphql-eslint/no-undefined-variables': string;
31
+ '@graphql-eslint/no-unused-fragments': string;
32
+ '@graphql-eslint/no-unused-variables': string;
33
+ '@graphql-eslint/one-field-subscriptions': string;
34
+ '@graphql-eslint/overlapping-fields-can-be-merged': string;
35
+ '@graphql-eslint/possible-fragment-spread': string;
36
+ '@graphql-eslint/provided-required-arguments': string;
37
+ '@graphql-eslint/require-id-when-available': string;
38
+ '@graphql-eslint/scalar-leafs': string;
39
+ '@graphql-eslint/selection-set-depth': (string | {
40
+ maxDepth: number;
41
+ })[];
42
+ '@graphql-eslint/unique-argument-names': string;
43
+ '@graphql-eslint/unique-directive-names-per-location': string;
44
+ '@graphql-eslint/unique-input-field-names': string;
45
+ '@graphql-eslint/unique-variable-names': string;
46
+ '@graphql-eslint/value-literals-of-correct-type': string;
47
+ '@graphql-eslint/variables-are-input-types': string;
48
+ '@graphql-eslint/variables-in-allowed-position': string;
49
+ };
50
+ };
51
+
52
+ export { _default as default };