@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
@@ -1,85 +0,0 @@
1
- ## Parser Options
2
-
3
- ### `graphQLParserOptions`
4
-
5
- With this configuration, you can specify custom configurations for GraphQL's `parse` method. By default, `graphql-eslint` parser just adds `noLocation: false` to make sure all parsed AST has `location` set, since we need this for tokenizing and for converting the GraphQL AST into ESTree.
6
-
7
- You can find the [complete set of options for this object here](https://github.com/graphql/graphql-js/blob/6e48d16f92b9a6df8638b1486354c6be2537033b/src/language/parser.ts#L73)
8
-
9
- ### `skipGraphQLConfig`
10
-
11
- If you are using [`graphql-config`](https://graphql-config.com) in your project, the parser will automatically use that to load your default GraphQL schema.
12
-
13
- You can disable this behaviour using `skipGraphQLConfig: true` in the `parserOptions`:
14
-
15
- ```json
16
- "parserOptions": {
17
- "skipGraphQLConfig": true
18
- }
19
- ```
20
-
21
- ### `schema`
22
-
23
- You can specify `parserOptions.schema` to load your GraphQL schema. The parser uses `graphql-tools` and it's loaders, that means you can either specify a URL, a path to a local `.json` (introspection) file, or a path to a local `.graphql` file(s). You can also use Glob expressions to load multiple files.
24
-
25
- Here are a few examples for a valid setup:
26
-
27
- ```json
28
- "parserOptions": {
29
- "schema": "./schema.graphql"
30
- }
31
- ```
32
-
33
- ```json
34
- "parserOptions": {
35
- "schema": "./schema.json"
36
- }
37
- ```
38
-
39
- ```json
40
- "parserOptions": {
41
- "schema": "http://my-server/graphql"
42
- }
43
- ```
44
-
45
- ```json
46
- "parserOptions": {
47
- "schema": "./src/**/*.graphql"
48
- }
49
- ```
50
-
51
- ```json
52
- "parserOptions": {
53
- "schema": [
54
- "src/schema-a.graphql",
55
- "src/schema-b.graphql",
56
- "src/schema-c.graphql"
57
- ]
58
- }
59
- ```
60
-
61
- ### `schemaOptions`
62
-
63
- If you wish to send additional configuration for the `graphql-tools` loaders that loads your schema, you can specify `schemaOptions` object:
64
-
65
- ```json
66
- "parserOptions": {
67
- "schema": "http://my-server/graphql",
68
- "schemaOptions": {
69
- "headers": {
70
- "Authorization": "Bearer MY_TOKEN"
71
- }
72
- }
73
- }
74
- ```
75
-
76
- ```json
77
- "parserOptions": {
78
- "schema": "./src/**/*.graphql",
79
- "schemaOptions": {
80
- "assumeValid": true
81
- }
82
- }
83
- ```
84
-
85
- > The configuration here is flexible, and will be sent to `graphql-tools` and it's loaders. So depends on the schema source, the options may vary. [You can read more about these loaders and their configuration here](https://graphql-tools.com/docs/api/interfaces/loaders_graphql_file_src.GraphQLFileLoaderOptions#properties).
package/docs/parser.md DELETED
@@ -1,49 +0,0 @@
1
- ## GraphQL-ESLint Parser
2
-
3
- The `graphql-eslint` parser is works in the following way:
4
-
5
- 1. Loads all relevant GraphQL code using ESLint core (either from `.graphql` files, or using [ESLint `processor`](https://eslint.org/docs/developer-guide/working-with-plugins#processors-in-plugins) to find in code-files).
6
- 1. Is uses `graphql-js` (and `graphql-tools`) to parse the found string into a `DocumentNode`.
7
- 1. Extracts all comments (marked as `# ...`) from the parsed AST, and provides to ESLint as directives hints.
8
- 1. If `graphql-config` is used, or `schema` field is provided, the schema is being loaded and provided to the rules using `parserServices`.
9
- 1. Converts the `DocumentNode` to ESTree structure (and enrich the nodes with `typeInfo`, if schema is loaded).
10
-
11
- ### ESTree Conversion
12
-
13
- The GraphQL AST structure is very similar to ESTree structure, but there are a few differences that the `parser` does.
14
-
15
- Here's a list of changes that the parser performs, in order to make the GraphQL AST compatible with ESTree:
16
-
17
- ---
18
-
19
- **Problem**: GraphQL uses `kind` field to define the kind of the AST node, while ESTree uses `type`.
20
-
21
- **Solution**: The parser adds `type` field on each node, and just copies the value from `kind` field.
22
-
23
- ---
24
-
25
- **Problem**: Some GraphQL AST nodes are using `type` field (which conflicts with the ESTree kind).
26
-
27
- **Solution**: AST nodes that has `type` field are being transformed, and the `type` field changes to `gqlType`.
28
-
29
- ---
30
-
31
- **Problem**: GraphQL AST structure allows circular JSON links (while ESTree might fail on `Maximum call stack exceeded`).
32
-
33
- **Solution**: The parser removes circular JSONs (specifically around GraphQL `Location` and the `Lexer`)
34
-
35
- ---
36
-
37
- **Problem**: GraphQL uses `location` field to store the AST locations, while ESTree also uses it in a different structure.
38
-
39
- **Solution**: The parser creates a new `location` field that is compatible with ESTree.
40
-
41
- ### Loading GraphQL Schema
42
-
43
- If you are using [`graphql-config`](https://graphql-config.com) in your project, the parser will automatically use that to load your default GraphQL schema (you can disable this behaviour using `skipGraphQLConfig: true` in the `parserOptions`).
44
-
45
- If you are not using `graphql-config`, you can specify `parserOptions.schema` to load your GraphQL schema. The parser uses `graphql-tools` and it's loaders, that means you can either specify a URL, a path to a local `.json` (introspection) file, or a path to a local `.graphql` file(s). You can also use Glob expressions to load multiple files.
46
-
47
- [You can find more detail on the `parserOptions` config here](parser-options.md)
48
-
49
- Providing the schema will make sure that rules that needs it will be able to access it, and it enriches every converted AST node with `typeInfo`.
@@ -1,178 +0,0 @@
1
- # `alphabetize`
2
-
3
- 🔧 The `--fix` option on the [command line](https://eslint.org/docs/user-guide/command-line-interface#--fix) can automatically fix some of the problems reported by this rule.
4
-
5
- - Category: `Schema & Operations`
6
- - Rule name: `@graphql-eslint/alphabetize`
7
- - Requires GraphQL Schema: `false` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
8
- - Requires GraphQL Operations: `false` [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
9
-
10
- Enforce arrange in alphabetical order for type fields, enum values, input object fields, operation selections and more.
11
-
12
- ## Usage Examples
13
-
14
- ### Incorrect
15
-
16
- ```graphql
17
- # eslint @graphql-eslint/alphabetize: ['error', { fields: ['ObjectTypeDefinition'] }]
18
-
19
- type User {
20
- password: String
21
- firstName: String! # should be before "password"
22
- age: Int # should be before "firstName"
23
- lastName: String!
24
- }
25
- ```
26
-
27
- ### Correct
28
-
29
- ```graphql
30
- # eslint @graphql-eslint/alphabetize: ['error', { fields: ['ObjectTypeDefinition'] }]
31
-
32
- type User {
33
- age: Int
34
- firstName: String!
35
- lastName: String!
36
- password: String
37
- }
38
- ```
39
-
40
- ### Incorrect
41
-
42
- ```graphql
43
- # eslint @graphql-eslint/alphabetize: ['error', { values: ['EnumTypeDefinition'] }]
44
-
45
- enum Role {
46
- SUPER_ADMIN
47
- ADMIN # should be before "SUPER_ADMIN"
48
- USER
49
- GOD # should be before "USER"
50
- }
51
- ```
52
-
53
- ### Correct
54
-
55
- ```graphql
56
- # eslint @graphql-eslint/alphabetize: ['error', { values: ['EnumTypeDefinition'] }]
57
-
58
- enum Role {
59
- ADMIN
60
- GOD
61
- SUPER_ADMIN
62
- USER
63
- }
64
- ```
65
-
66
- ### Incorrect
67
-
68
- ```graphql
69
- # eslint @graphql-eslint/alphabetize: ['error', { selections: ['OperationDefinition'] }]
70
-
71
- query {
72
- me {
73
- firstName
74
- lastName
75
- email # should be before "lastName"
76
- }
77
- }
78
- ```
79
-
80
- ### Correct
81
-
82
- ```graphql
83
- # eslint @graphql-eslint/alphabetize: ['error', { selections: ['OperationDefinition'] }]
84
-
85
- query {
86
- me {
87
- email
88
- firstName
89
- lastName
90
- }
91
- }
92
- ```
93
-
94
- ## Config Schema
95
-
96
- The schema defines the following properties:
97
-
98
- ### `fields` (array)
99
-
100
- Fields of `type`, `interface`, and `input`.
101
-
102
- The elements of the array can contain the following enum values:
103
-
104
- - `ObjectTypeDefinition`
105
- - `InterfaceTypeDefinition`
106
- - `InputObjectTypeDefinition`
107
-
108
- Additional restrictions:
109
-
110
- * Minimum items: `1`
111
- * Unique items: `true`
112
-
113
- ### `values` (array)
114
-
115
- Values of `enum`.
116
-
117
- The elements of the array can contain the following enum values:
118
-
119
- - `EnumTypeDefinition`
120
-
121
- Additional restrictions:
122
-
123
- * Minimum items: `1`
124
- * Unique items: `true`
125
-
126
- ### `selections` (array)
127
-
128
- Selections of `fragment` and operations `query`, `mutation` and `subscription`.
129
-
130
- The elements of the array can contain the following enum values:
131
-
132
- - `OperationDefinition`
133
- - `FragmentDefinition`
134
-
135
- Additional restrictions:
136
-
137
- * Minimum items: `1`
138
- * Unique items: `true`
139
-
140
- ### `variables` (array)
141
-
142
- Variables of operations `query`, `mutation` and `subscription`.
143
-
144
- The elements of the array can contain the following enum values:
145
-
146
- - `OperationDefinition`
147
-
148
- Additional restrictions:
149
-
150
- * Minimum items: `1`
151
- * Unique items: `true`
152
-
153
- ### `arguments` (array)
154
-
155
- Arguments of fields and directives.
156
-
157
- The elements of the array can contain the following enum values:
158
-
159
- - `FieldDefinition`
160
- - `Field`
161
- - `DirectiveDefinition`
162
- - `Directive`
163
-
164
- Additional restrictions:
165
-
166
- * Minimum items: `1`
167
- * Unique items: `true`
168
-
169
- ### `definitions` (boolean)
170
-
171
- Definitions – `type`, `interface`, `enum`, `scalar`, `input`, `union` and `directive`.
172
-
173
- Default: `false`
174
-
175
- ## Resources
176
-
177
- - [Rule source](../../packages/plugin/src/rules/alphabetize.ts)
178
- - [Test source](../../packages/plugin/tests/alphabetize.spec.ts)
@@ -1,54 +0,0 @@
1
- # `description-style`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/schema-recommended"` property in a configuration file enables this rule.
4
-
5
- 💡 This rule provides [suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions)
6
-
7
- - Category: `Schema`
8
- - Rule name: `@graphql-eslint/description-style`
9
- - Requires GraphQL Schema: `false` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
10
- - Requires GraphQL Operations: `false` [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
11
-
12
- Require all comments to follow the same style (either block or inline).
13
-
14
- ## Usage Examples
15
-
16
- ### Incorrect
17
-
18
- ```graphql
19
- # eslint @graphql-eslint/description-style: ['error', { style: 'inline' }]
20
-
21
- """ Description """
22
- type someTypeName {
23
- # ...
24
- }
25
- ```
26
-
27
- ### Correct
28
-
29
- ```graphql
30
- # eslint @graphql-eslint/description-style: ['error', { style: 'inline' }]
31
-
32
- " Description "
33
- type someTypeName {
34
- # ...
35
- }
36
- ```
37
-
38
- ## Config Schema
39
-
40
- The schema defines the following properties:
41
-
42
- ### `style` (enum)
43
-
44
- This element must be one of the following enum values:
45
-
46
- - `block`
47
- - `inline`
48
-
49
- Default: `"block"`
50
-
51
- ## Resources
52
-
53
- - [Rule source](../../packages/plugin/src/rules/description-style.ts)
54
- - [Test source](../../packages/plugin/tests/description-style.spec.ts)
@@ -1,17 +0,0 @@
1
- # `executable-definitions`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file enables this rule.
4
-
5
- - Category: `Operations`
6
- - Rule name: `@graphql-eslint/executable-definitions`
7
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
8
- - Requires GraphQL Operations: `false` [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
9
-
10
- A GraphQL document is only valid for execution if all definitions are either operation or fragment definitions.
11
-
12
- > This rule is a wrapper around a `graphql-js` validation function.
13
-
14
- ## Resources
15
-
16
- - [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/ExecutableDefinitionsRule.ts)
17
- - [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/ExecutableDefinitionsRule-test.ts)
@@ -1,17 +0,0 @@
1
- # `fields-on-correct-type`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file enables this rule.
4
-
5
- - Category: `Operations`
6
- - Rule name: `@graphql-eslint/fields-on-correct-type`
7
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
8
- - Requires GraphQL Operations: `false` [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
9
-
10
- A GraphQL document is only valid if all fields selected are defined by the parent type, or are an allowed meta field such as `__typename`.
11
-
12
- > This rule is a wrapper around a `graphql-js` validation function.
13
-
14
- ## Resources
15
-
16
- - [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/FieldsOnCorrectTypeRule.ts)
17
- - [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/FieldsOnCorrectTypeRule-test.ts)
@@ -1,17 +0,0 @@
1
- # `fragments-on-composite-type`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file enables this rule.
4
-
5
- - Category: `Operations`
6
- - Rule name: `@graphql-eslint/fragments-on-composite-type`
7
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
8
- - Requires GraphQL Operations: `false` [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
9
-
10
- Fragments use a type condition to determine if they apply, since fragments can only be spread into a composite type (object, interface, or union), the type condition must also be a composite type.
11
-
12
- > This rule is a wrapper around a `graphql-js` validation function.
13
-
14
- ## Resources
15
-
16
- - [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/FragmentsOnCompositeTypesRule.ts)
17
- - [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/FragmentsOnCompositeTypesRule-test.ts)
@@ -1,76 +0,0 @@
1
- # `input-name`
2
-
3
- 💡 This rule provides [suggestions](https://eslint.org/docs/developer-guide/working-with-rules#providing-suggestions)
4
-
5
- - Category: `Schema`
6
- - Rule name: `@graphql-eslint/input-name`
7
- - Requires GraphQL Schema: `false` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
8
- - Requires GraphQL Operations: `false` [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
9
-
10
- Require mutation argument to be always called "input" and input type to be called Mutation name + "Input".
11
- Using the same name for all input parameters will make your schemas easier to consume and more predictable. Using the same name as mutation for InputType will make it easier to find mutations that InputType belongs to.
12
-
13
- ## Usage Examples
14
-
15
- ### Incorrect
16
-
17
- ```graphql
18
- # eslint @graphql-eslint/input-name: ['error', { checkInputType: true }]
19
-
20
- type Mutation {
21
- SetMessage(message: InputMessage): String
22
- }
23
- ```
24
-
25
- ### Correct (with checkInputType)
26
-
27
- ```graphql
28
- # eslint @graphql-eslint/input-name: ['error', { checkInputType: true }]
29
-
30
- type Mutation {
31
- SetMessage(input: SetMessageInput): String
32
- }
33
- ```
34
-
35
- ### Correct (without checkInputType)
36
-
37
- ```graphql
38
- # eslint @graphql-eslint/input-name: ['error', { checkInputType: false }]
39
-
40
- type Mutation {
41
- SetMessage(input: AnyInputTypeName): String
42
- }
43
- ```
44
-
45
- ## Config Schema
46
-
47
- The schema defines the following properties:
48
-
49
- ### `checkInputType` (boolean)
50
-
51
- Check that the input type name follows the convention <mutationName>Input
52
-
53
- Default: `false`
54
-
55
- ### `caseSensitiveInputType` (boolean)
56
-
57
- Allow for case discrepancies in the input type name
58
-
59
- Default: `true`
60
-
61
- ### `checkQueries` (boolean)
62
-
63
- Apply the rule to Queries
64
-
65
- Default: `false`
66
-
67
- ### `checkMutations` (boolean)
68
-
69
- Apply the rule to Mutations
70
-
71
- Default: `true`
72
-
73
- ## Resources
74
-
75
- - [Rule source](../../packages/plugin/src/rules/input-name.ts)
76
- - [Test source](../../packages/plugin/tests/input-name.spec.ts)
@@ -1,17 +0,0 @@
1
- # `known-argument-names`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/schema-recommended"` and `"plugin:@graphql-eslint/operations-recommended"` property in a configuration file enables this rule.
4
-
5
- - Category: `Schema & Operations`
6
- - Rule name: `@graphql-eslint/known-argument-names`
7
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
8
- - Requires GraphQL Operations: `false` [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
9
-
10
- A GraphQL field is only valid if all supplied arguments are defined by that field.
11
-
12
- > This rule is a wrapper around a `graphql-js` validation function.
13
-
14
- ## Resources
15
-
16
- - [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/KnownArgumentNamesRule.ts)
17
- - [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/KnownArgumentNamesRule-test.ts)
@@ -1,44 +0,0 @@
1
- # `known-directives`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/schema-recommended"` and `"plugin:@graphql-eslint/operations-recommended"` property in a configuration file enables this rule.
4
-
5
- - Category: `Schema & Operations`
6
- - Rule name: `@graphql-eslint/known-directives`
7
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
8
- - Requires GraphQL Operations: `false` [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
9
-
10
- A GraphQL document is only valid if all `@directive`s are known by the schema and legally positioned.
11
-
12
- > This rule is a wrapper around a `graphql-js` validation function.
13
-
14
- ## Usage Examples
15
-
16
- ### Valid
17
-
18
- ```graphql
19
- # eslint @graphql-eslint/known-directives: ['error', { ignoreClientDirectives: ['client'] }]
20
-
21
- {
22
- product {
23
- someClientField @client
24
- }
25
- }
26
- ```
27
-
28
- ## Config Schema
29
-
30
- The schema defines the following properties:
31
-
32
- ### `ignoreClientDirectives` (array, required)
33
-
34
- The object is an array with all elements of the type `string`.
35
-
36
- Additional restrictions:
37
-
38
- * Minimum items: `1`
39
- * Unique items: `true`
40
-
41
- ## Resources
42
-
43
- - [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/KnownDirectivesRule.ts)
44
- - [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/KnownDirectivesRule-test.ts)
@@ -1,69 +0,0 @@
1
- # `known-fragment-names`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file enables this rule.
4
-
5
- - Category: `Operations`
6
- - Rule name: `@graphql-eslint/known-fragment-names`
7
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
8
- - Requires GraphQL Operations: `true` [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
9
-
10
- A GraphQL document is only valid if all `...Fragment` fragment spreads refer to fragments defined in the same document.
11
-
12
- > This rule is a wrapper around a `graphql-js` validation function.
13
-
14
- ## Usage Examples
15
-
16
- ### Incorrect
17
-
18
- ```graphql
19
- # eslint @graphql-eslint/known-fragment-names: 'error'
20
-
21
- query {
22
- user {
23
- id
24
- ...UserFields # fragment not defined in the document
25
- }
26
- }
27
- ```
28
-
29
- ### Correct
30
-
31
- ```graphql
32
- # eslint @graphql-eslint/known-fragment-names: 'error'
33
-
34
- fragment UserFields on User {
35
- firstName
36
- lastName
37
- }
38
-
39
- query {
40
- user {
41
- id
42
- ...UserFields
43
- }
44
- }
45
- ```
46
-
47
- ### Correct (`UserFields` fragment located in a separate file)
48
-
49
- ```graphql
50
- # eslint @graphql-eslint/known-fragment-names: 'error'
51
-
52
- # user.gql
53
- query {
54
- user {
55
- id
56
- ...UserFields
57
- }
58
- }
59
-
60
- # user-fields.gql
61
- fragment UserFields on User {
62
- id
63
- }
64
- ```
65
-
66
- ## Resources
67
-
68
- - [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/KnownFragmentNamesRule.ts)
69
- - [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/KnownFragmentNamesRule-test.ts)
@@ -1,17 +0,0 @@
1
- # `known-type-names`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/schema-recommended"` and `"plugin:@graphql-eslint/operations-recommended"` property in a configuration file enables this rule.
4
-
5
- - Category: `Schema & Operations`
6
- - Rule name: `@graphql-eslint/known-type-names`
7
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
8
- - Requires GraphQL Operations: `false` [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
9
-
10
- A GraphQL document is only valid if referenced types (specifically variable definitions and fragment conditions) are defined by the type schema.
11
-
12
- > This rule is a wrapper around a `graphql-js` validation function.
13
-
14
- ## Resources
15
-
16
- - [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/KnownTypeNamesRule.ts)
17
- - [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/KnownTypeNamesRule-test.ts)
@@ -1,17 +0,0 @@
1
- # `lone-anonymous-operation`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/operations-recommended"` property in a configuration file enables this rule.
4
-
5
- - Category: `Operations`
6
- - Rule name: `@graphql-eslint/lone-anonymous-operation`
7
- - Requires GraphQL Schema: `true` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
8
- - Requires GraphQL Operations: `false` [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
9
-
10
- A GraphQL document is only valid if when it contains an anonymous operation (the query short-hand) that it contains only that one operation definition.
11
-
12
- > This rule is a wrapper around a `graphql-js` validation function.
13
-
14
- ## Resources
15
-
16
- - [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/LoneAnonymousOperationRule.ts)
17
- - [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/LoneAnonymousOperationRule-test.ts)
@@ -1,17 +0,0 @@
1
- # `lone-schema-definition`
2
-
3
- ✅ The `"extends": "plugin:@graphql-eslint/schema-recommended"` property in a configuration file enables this rule.
4
-
5
- - Category: `Schema`
6
- - Rule name: `@graphql-eslint/lone-schema-definition`
7
- - Requires GraphQL Schema: `false` [ℹ️](../../README.md#extended-linting-rules-with-graphql-schema)
8
- - Requires GraphQL Operations: `false` [ℹ️](../../README.md#extended-linting-rules-with-siblings-operations)
9
-
10
- A GraphQL document is only valid if it contains only one schema definition.
11
-
12
- > This rule is a wrapper around a `graphql-js` validation function.
13
-
14
- ## Resources
15
-
16
- - [Rule source](https://github.com/graphql/graphql-js/blob/main/src/validation/rules/LoneSchemaDefinitionRule.ts)
17
- - [Test source](https://github.com/graphql/graphql-js/tree/main/src/validation/__tests__/LoneSchemaDefinitionRule-test.ts)