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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (347) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +13 -253
  3. package/cjs/cache.d.ts +12 -0
  4. package/cjs/cache.js +62 -0
  5. package/cjs/configs/index.d.ts +148 -0
  6. package/cjs/configs/index.js +49 -0
  7. package/cjs/configs/operations-all.d.ts +22 -0
  8. package/cjs/configs/operations-all.js +27 -0
  9. package/cjs/configs/operations-recommended.d.ts +52 -0
  10. package/{configs/operations-recommended.json → cjs/configs/operations-recommended.js} +16 -14
  11. package/cjs/configs/relay.d.ts +12 -0
  12. package/{configs/relay.json → cjs/configs/relay.js} +6 -4
  13. package/cjs/configs/schema-all.d.ts +19 -0
  14. package/cjs/configs/schema-all.js +21 -0
  15. package/cjs/configs/schema-recommended.d.ts +49 -0
  16. package/{configs/schema-recommended.json → cjs/configs/schema-recommended.js} +19 -20
  17. package/cjs/documents.d.ts +6 -0
  18. package/cjs/documents.js +81 -0
  19. package/cjs/estree-converter/converter.d.ts +8 -0
  20. package/cjs/estree-converter/converter.js +83 -0
  21. package/cjs/estree-converter/index.d.ts +8 -0
  22. package/cjs/estree-converter/index.js +26 -0
  23. package/cjs/estree-converter/types.d.ts +42 -0
  24. package/cjs/estree-converter/types.js +16 -0
  25. package/cjs/estree-converter/utils.d.ts +18 -0
  26. package/cjs/estree-converter/utils.js +135 -0
  27. package/cjs/flat-configs.d.ts +260 -0
  28. package/cjs/flat-configs.js +60 -0
  29. package/cjs/graphql-config.d.ts +13 -0
  30. package/cjs/graphql-config.js +86 -0
  31. package/cjs/index.d.ts +22 -0
  32. package/cjs/index.js +49 -0
  33. package/cjs/parser.d.ts +12 -0
  34. package/cjs/parser.js +103 -0
  35. package/cjs/processor.d.ts +9 -0
  36. package/cjs/processor.js +127 -0
  37. package/cjs/rules/alphabetize.d.ts +84 -0
  38. package/cjs/rules/alphabetize.js +395 -0
  39. package/cjs/rules/description-style.d.ts +28 -0
  40. package/cjs/rules/description-style.js +109 -0
  41. package/cjs/rules/graphql-js-validation.d.ts +12 -0
  42. package/cjs/rules/graphql-js-validation.js +669 -0
  43. package/cjs/rules/index.d.ts +125 -0
  44. package/cjs/rules/index.js +99 -0
  45. package/cjs/rules/input-name.d.ts +43 -0
  46. package/cjs/rules/input-name.js +170 -0
  47. package/cjs/rules/lone-executable-definition.d.ts +34 -0
  48. package/cjs/rules/lone-executable-definition.js +119 -0
  49. package/cjs/rules/match-document-filename.d.ts +80 -0
  50. package/cjs/rules/match-document-filename.js +282 -0
  51. package/cjs/rules/naming-convention.d.ts +107 -0
  52. package/cjs/rules/naming-convention.js +434 -0
  53. package/cjs/rules/no-anonymous-operations.d.ts +12 -0
  54. package/cjs/rules/no-anonymous-operations.js +98 -0
  55. package/cjs/rules/no-case-insensitive-enum-values-duplicates.d.ts +12 -0
  56. package/cjs/rules/no-case-insensitive-enum-values-duplicates.js +96 -0
  57. package/cjs/rules/no-deprecated.d.ts +12 -0
  58. package/cjs/rules/no-deprecated.js +157 -0
  59. package/cjs/rules/no-duplicate-fields.d.ts +12 -0
  60. package/cjs/rules/no-duplicate-fields.js +146 -0
  61. package/cjs/rules/no-hashtag-description.d.ts +13 -0
  62. package/cjs/rules/no-hashtag-description.js +140 -0
  63. package/cjs/rules/no-one-place-fragments.d.ts +12 -0
  64. package/cjs/rules/no-one-place-fragments.js +113 -0
  65. package/cjs/rules/no-root-type.d.ts +33 -0
  66. package/cjs/rules/no-root-type.js +113 -0
  67. package/cjs/rules/no-scalar-result-type-on-mutation.d.ts +12 -0
  68. package/cjs/rules/no-scalar-result-type-on-mutation.js +100 -0
  69. package/cjs/rules/no-typename-prefix.d.ts +12 -0
  70. package/cjs/rules/no-typename-prefix.js +98 -0
  71. package/cjs/rules/no-unreachable-types.d.ts +12 -0
  72. package/cjs/rules/no-unreachable-types.js +199 -0
  73. package/cjs/rules/no-unused-fields.d.ts +12 -0
  74. package/cjs/rules/no-unused-fields.js +157 -0
  75. package/cjs/rules/relay-arguments.d.ts +29 -0
  76. package/cjs/rules/relay-arguments.js +149 -0
  77. package/cjs/rules/relay-connection-types.d.ts +13 -0
  78. package/cjs/rules/relay-connection-types.js +142 -0
  79. package/cjs/rules/relay-edge-types.d.ts +39 -0
  80. package/cjs/rules/relay-edge-types.js +212 -0
  81. package/cjs/rules/relay-page-info.d.ts +12 -0
  82. package/cjs/rules/relay-page-info.js +121 -0
  83. package/cjs/rules/require-deprecation-date.d.ts +26 -0
  84. package/cjs/rules/require-deprecation-date.js +164 -0
  85. package/cjs/rules/require-deprecation-reason.d.ts +12 -0
  86. package/cjs/rules/require-deprecation-reason.js +93 -0
  87. package/cjs/rules/require-description.d.ts +23 -0
  88. package/cjs/rules/require-description.js +205 -0
  89. package/cjs/rules/require-field-of-type-query-in-mutation-result.d.ts +12 -0
  90. package/cjs/rules/require-field-of-type-query-in-mutation-result.js +102 -0
  91. package/cjs/rules/require-id-when-available.d.ts +44 -0
  92. package/cjs/rules/require-id-when-available.js +241 -0
  93. package/cjs/rules/require-import-fragment.d.ts +12 -0
  94. package/cjs/rules/require-import-fragment.js +166 -0
  95. package/cjs/rules/require-nullable-fields-with-oneof.d.ts +12 -0
  96. package/cjs/rules/require-nullable-fields-with-oneof.js +92 -0
  97. package/cjs/rules/require-nullable-result-in-root.d.ts +12 -0
  98. package/cjs/rules/require-nullable-result-in-root.js +109 -0
  99. package/cjs/rules/require-type-pattern-with-oneof.d.ts +12 -0
  100. package/cjs/rules/require-type-pattern-with-oneof.js +91 -0
  101. package/cjs/rules/selection-set-depth.d.ts +36 -0
  102. package/cjs/rules/selection-set-depth.js +175 -0
  103. package/cjs/rules/strict-id-in-types.d.ts +65 -0
  104. package/cjs/rules/strict-id-in-types.js +186 -0
  105. package/cjs/rules/unique-fragment-name.d.ts +13 -0
  106. package/cjs/rules/unique-fragment-name.js +118 -0
  107. package/cjs/rules/unique-operation-name.d.ts +12 -0
  108. package/cjs/rules/unique-operation-name.js +95 -0
  109. package/cjs/schema.d.ts +12 -0
  110. package/cjs/schema.js +65 -0
  111. package/cjs/siblings.d.ts +8 -0
  112. package/cjs/siblings.js +136 -0
  113. package/cjs/types-8d5f4ae0.d.ts +107 -0
  114. package/cjs/types.d.ts +8 -0
  115. package/cjs/types.js +16 -0
  116. package/cjs/utils.d.ts +44 -0
  117. package/cjs/utils.js +205 -0
  118. package/esm/cache.d.mts +12 -0
  119. package/esm/cache.js +29 -0
  120. package/esm/chunk-BMTV3EA2.js +8 -0
  121. package/esm/configs/index.d.mts +148 -0
  122. package/esm/configs/index.js +16 -0
  123. package/esm/configs/operations-all.d.mts +22 -0
  124. package/esm/configs/operations-all.js +34 -0
  125. package/esm/configs/operations-recommended.d.mts +52 -0
  126. package/esm/configs/operations-recommended.js +59 -0
  127. package/esm/configs/relay.d.mts +12 -0
  128. package/esm/configs/relay.js +18 -0
  129. package/esm/configs/schema-all.d.mts +19 -0
  130. package/esm/configs/schema-all.js +28 -0
  131. package/esm/configs/schema-recommended.d.mts +49 -0
  132. package/esm/configs/schema-recommended.js +55 -0
  133. package/esm/documents.d.mts +6 -0
  134. package/esm/documents.js +48 -0
  135. package/esm/estree-converter/converter.d.mts +8 -0
  136. package/esm/estree-converter/converter.js +65 -0
  137. package/esm/estree-converter/index.d.mts +8 -0
  138. package/esm/estree-converter/index.js +3 -0
  139. package/esm/estree-converter/types.d.mts +42 -0
  140. package/esm/estree-converter/types.js +0 -0
  141. package/esm/estree-converter/utils.d.mts +18 -0
  142. package/esm/estree-converter/utils.js +114 -0
  143. package/esm/flat-configs.d.mts +260 -0
  144. package/esm/flat-configs.js +37 -0
  145. package/esm/graphql-config.d.mts +13 -0
  146. package/esm/graphql-config.js +55 -0
  147. package/esm/index.d.mts +22 -0
  148. package/esm/index.js +18 -0
  149. package/esm/package.json +1 -0
  150. package/esm/parser.d.mts +12 -0
  151. package/esm/parser.js +70 -0
  152. package/esm/processor.d.mts +9 -0
  153. package/esm/processor.js +106 -0
  154. package/esm/rules/alphabetize.d.mts +84 -0
  155. package/esm/rules/alphabetize.js +364 -0
  156. package/esm/rules/description-style.d.mts +28 -0
  157. package/esm/rules/description-style.js +86 -0
  158. package/esm/rules/graphql-js-validation.d.mts +12 -0
  159. package/esm/rules/graphql-js-validation.js +658 -0
  160. package/esm/rules/index.d.mts +125 -0
  161. package/esm/rules/index.js +76 -0
  162. package/esm/rules/input-name.d.mts +43 -0
  163. package/esm/rules/input-name.js +149 -0
  164. package/esm/rules/lone-executable-definition.d.mts +34 -0
  165. package/esm/rules/lone-executable-definition.js +96 -0
  166. package/esm/rules/match-document-filename.d.mts +80 -0
  167. package/esm/rules/match-document-filename.js +263 -0
  168. package/esm/rules/naming-convention.d.mts +107 -0
  169. package/esm/rules/naming-convention.js +417 -0
  170. package/esm/rules/no-anonymous-operations.d.mts +12 -0
  171. package/esm/rules/no-anonymous-operations.js +75 -0
  172. package/esm/rules/no-case-insensitive-enum-values-duplicates.d.mts +12 -0
  173. package/esm/rules/no-case-insensitive-enum-values-duplicates.js +73 -0
  174. package/esm/rules/no-deprecated.d.mts +12 -0
  175. package/esm/rules/no-deprecated.js +134 -0
  176. package/esm/rules/no-duplicate-fields.d.mts +12 -0
  177. package/esm/rules/no-duplicate-fields.js +123 -0
  178. package/esm/rules/no-hashtag-description.d.mts +13 -0
  179. package/esm/rules/no-hashtag-description.js +116 -0
  180. package/esm/rules/no-one-place-fragments.d.mts +12 -0
  181. package/esm/rules/no-one-place-fragments.js +90 -0
  182. package/esm/rules/no-root-type.d.mts +33 -0
  183. package/esm/rules/no-root-type.js +90 -0
  184. package/esm/rules/no-scalar-result-type-on-mutation.d.mts +12 -0
  185. package/esm/rules/no-scalar-result-type-on-mutation.js +77 -0
  186. package/esm/rules/no-typename-prefix.d.mts +12 -0
  187. package/esm/rules/no-typename-prefix.js +75 -0
  188. package/esm/rules/no-unreachable-types.d.mts +12 -0
  189. package/esm/rules/no-unreachable-types.js +171 -0
  190. package/esm/rules/no-unused-fields.d.mts +12 -0
  191. package/esm/rules/no-unused-fields.js +134 -0
  192. package/esm/rules/relay-arguments.d.mts +29 -0
  193. package/esm/rules/relay-arguments.js +126 -0
  194. package/esm/rules/relay-connection-types.d.mts +13 -0
  195. package/esm/rules/relay-connection-types.js +118 -0
  196. package/esm/rules/relay-edge-types.d.mts +39 -0
  197. package/esm/rules/relay-edge-types.js +194 -0
  198. package/esm/rules/relay-page-info.d.mts +12 -0
  199. package/esm/rules/relay-page-info.js +98 -0
  200. package/esm/rules/require-deprecation-date.d.mts +26 -0
  201. package/esm/rules/require-deprecation-date.js +141 -0
  202. package/esm/rules/require-deprecation-reason.d.mts +12 -0
  203. package/esm/rules/require-deprecation-reason.js +70 -0
  204. package/esm/rules/require-description.d.mts +23 -0
  205. package/esm/rules/require-description.js +186 -0
  206. package/esm/rules/require-field-of-type-query-in-mutation-result.d.mts +12 -0
  207. package/esm/rules/require-field-of-type-query-in-mutation-result.js +79 -0
  208. package/esm/rules/require-id-when-available.d.mts +44 -0
  209. package/esm/rules/require-id-when-available.js +231 -0
  210. package/esm/rules/require-import-fragment.d.mts +12 -0
  211. package/esm/rules/require-import-fragment.js +133 -0
  212. package/esm/rules/require-nullable-fields-with-oneof.d.mts +12 -0
  213. package/esm/rules/require-nullable-fields-with-oneof.js +69 -0
  214. package/esm/rules/require-nullable-result-in-root.d.mts +12 -0
  215. package/esm/rules/require-nullable-result-in-root.js +86 -0
  216. package/esm/rules/require-type-pattern-with-oneof.d.mts +12 -0
  217. package/esm/rules/require-type-pattern-with-oneof.js +68 -0
  218. package/esm/rules/selection-set-depth.d.mts +36 -0
  219. package/esm/rules/selection-set-depth.js +142 -0
  220. package/esm/rules/strict-id-in-types.d.mts +65 -0
  221. package/esm/rules/strict-id-in-types.js +169 -0
  222. package/esm/rules/unique-fragment-name.d.mts +13 -0
  223. package/esm/rules/unique-fragment-name.js +94 -0
  224. package/esm/rules/unique-operation-name.d.mts +12 -0
  225. package/esm/rules/unique-operation-name.js +72 -0
  226. package/esm/schema.d.mts +12 -0
  227. package/esm/schema.js +32 -0
  228. package/esm/siblings.d.mts +8 -0
  229. package/esm/siblings.js +116 -0
  230. package/esm/types-ace77d86.d.ts +107 -0
  231. package/esm/types.d.mts +8 -0
  232. package/esm/types.js +0 -0
  233. package/esm/utils.d.mts +44 -0
  234. package/esm/utils.js +155 -0
  235. package/package.json +47 -34
  236. package/configs/base.json +0 -4
  237. package/configs/operations-all.json +0 -24
  238. package/configs/schema-all.json +0 -26
  239. package/docs/README.md +0 -75
  240. package/docs/custom-rules.md +0 -148
  241. package/docs/deprecated-rules.md +0 -21
  242. package/docs/parser-options.md +0 -85
  243. package/docs/parser.md +0 -49
  244. package/docs/rules/alphabetize.md +0 -178
  245. package/docs/rules/description-style.md +0 -54
  246. package/docs/rules/executable-definitions.md +0 -17
  247. package/docs/rules/fields-on-correct-type.md +0 -17
  248. package/docs/rules/fragments-on-composite-type.md +0 -17
  249. package/docs/rules/input-name.md +0 -76
  250. package/docs/rules/known-argument-names.md +0 -17
  251. package/docs/rules/known-directives.md +0 -44
  252. package/docs/rules/known-fragment-names.md +0 -69
  253. package/docs/rules/known-type-names.md +0 -17
  254. package/docs/rules/lone-anonymous-operation.md +0 -17
  255. package/docs/rules/lone-schema-definition.md +0 -17
  256. package/docs/rules/match-document-filename.md +0 -156
  257. package/docs/rules/naming-convention.md +0 -300
  258. package/docs/rules/no-anonymous-operations.md +0 -39
  259. package/docs/rules/no-case-insensitive-enum-values-duplicates.md +0 -43
  260. package/docs/rules/no-deprecated.md +0 -85
  261. package/docs/rules/no-duplicate-fields.md +0 -65
  262. package/docs/rules/no-fragment-cycles.md +0 -17
  263. package/docs/rules/no-hashtag-description.md +0 -59
  264. package/docs/rules/no-root-type.md +0 -53
  265. package/docs/rules/no-scalar-result-type-on-mutation.md +0 -37
  266. package/docs/rules/no-typename-prefix.md +0 -39
  267. package/docs/rules/no-undefined-variables.md +0 -17
  268. package/docs/rules/no-unreachable-types.md +0 -49
  269. package/docs/rules/no-unused-fields.md +0 -62
  270. package/docs/rules/no-unused-fragments.md +0 -17
  271. package/docs/rules/no-unused-variables.md +0 -17
  272. package/docs/rules/one-field-subscriptions.md +0 -17
  273. package/docs/rules/overlapping-fields-can-be-merged.md +0 -17
  274. package/docs/rules/possible-fragment-spread.md +0 -17
  275. package/docs/rules/possible-type-extension.md +0 -15
  276. package/docs/rules/provided-required-arguments.md +0 -17
  277. package/docs/rules/relay-arguments.md +0 -57
  278. package/docs/rules/relay-connection-types.md +0 -42
  279. package/docs/rules/relay-edge-types.md +0 -56
  280. package/docs/rules/relay-page-info.md +0 -32
  281. package/docs/rules/require-deprecation-date.md +0 -56
  282. package/docs/rules/require-deprecation-reason.md +0 -47
  283. package/docs/rules/require-description.md +0 -115
  284. package/docs/rules/require-field-of-type-query-in-mutation-result.md +0 -47
  285. package/docs/rules/require-id-when-available.md +0 -88
  286. package/docs/rules/scalar-leafs.md +0 -17
  287. package/docs/rules/selection-set-depth.md +0 -76
  288. package/docs/rules/strict-id-in-types.md +0 -130
  289. package/docs/rules/unique-argument-names.md +0 -17
  290. package/docs/rules/unique-directive-names-per-location.md +0 -17
  291. package/docs/rules/unique-directive-names.md +0 -17
  292. package/docs/rules/unique-enum-value-names.md +0 -15
  293. package/docs/rules/unique-field-definition-names.md +0 -17
  294. package/docs/rules/unique-fragment-name.md +0 -51
  295. package/docs/rules/unique-input-field-names.md +0 -17
  296. package/docs/rules/unique-operation-name.md +0 -55
  297. package/docs/rules/unique-operation-types.md +0 -17
  298. package/docs/rules/unique-type-names.md +0 -17
  299. package/docs/rules/unique-variable-names.md +0 -17
  300. package/docs/rules/value-literals-of-correct-type.md +0 -17
  301. package/docs/rules/variables-are-input-types.md +0 -17
  302. package/docs/rules/variables-in-allowed-position.md +0 -17
  303. package/estree-converter/converter.d.ts +0 -3
  304. package/estree-converter/index.d.ts +0 -3
  305. package/estree-converter/types.d.ts +0 -40
  306. package/estree-converter/utils.d.ts +0 -13
  307. package/graphql-config.d.ts +0 -3
  308. package/index.d.ts +0 -16
  309. package/index.js +0 -4653
  310. package/index.mjs +0 -4641
  311. package/parser.d.ts +0 -2
  312. package/processor.d.ts +0 -7
  313. package/rules/alphabetize.d.ts +0 -16
  314. package/rules/description-style.d.ts +0 -6
  315. package/rules/graphql-js-validation.d.ts +0 -2
  316. package/rules/index.d.ts +0 -41
  317. package/rules/input-name.d.ts +0 -9
  318. package/rules/match-document-filename.d.ts +0 -18
  319. package/rules/naming-convention.d.ts +0 -37
  320. package/rules/no-anonymous-operations.d.ts +0 -3
  321. package/rules/no-case-insensitive-enum-values-duplicates.d.ts +0 -3
  322. package/rules/no-deprecated.d.ts +0 -3
  323. package/rules/no-duplicate-fields.d.ts +0 -3
  324. package/rules/no-hashtag-description.d.ts +0 -3
  325. package/rules/no-root-type.d.ts +0 -7
  326. package/rules/no-scalar-result-type-on-mutation.d.ts +0 -3
  327. package/rules/no-typename-prefix.d.ts +0 -3
  328. package/rules/no-unreachable-types.d.ts +0 -3
  329. package/rules/no-unused-fields.d.ts +0 -3
  330. package/rules/relay-arguments.d.ts +0 -6
  331. package/rules/relay-connection-types.d.ts +0 -5
  332. package/rules/relay-edge-types.d.ts +0 -8
  333. package/rules/relay-page-info.d.ts +0 -3
  334. package/rules/require-deprecation-date.d.ts +0 -5
  335. package/rules/require-deprecation-reason.d.ts +0 -3
  336. package/rules/require-description.d.ts +0 -11
  337. package/rules/require-field-of-type-query-in-mutation-result.d.ts +0 -3
  338. package/rules/require-id-when-available.d.ts +0 -6
  339. package/rules/selection-set-depth.d.ts +0 -7
  340. package/rules/strict-id-in-types.d.ts +0 -11
  341. package/rules/unique-fragment-name.d.ts +0 -6
  342. package/rules/unique-operation-name.d.ts +0 -3
  343. package/schema.d.ts +0 -3
  344. package/sibling-operations.d.ts +0 -21
  345. package/testkit.d.ts +0 -27
  346. package/types.d.ts +0 -79
  347. package/utils.d.ts +0 -39
@@ -0,0 +1,395 @@
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 alphabetize_exports = {};
30
+ __export(alphabetize_exports, {
31
+ rule: () => rule
32
+ });
33
+ module.exports = __toCommonJS(alphabetize_exports);
34
+ var import_graphql = require("graphql");
35
+ var import_lodash = __toESM(require("lodash.lowercase"));
36
+ var import_utils = require("../utils.js");
37
+ const RULE_ID = "alphabetize";
38
+ const fieldsEnum = [
39
+ import_graphql.Kind.OBJECT_TYPE_DEFINITION,
40
+ import_graphql.Kind.INTERFACE_TYPE_DEFINITION,
41
+ import_graphql.Kind.INPUT_OBJECT_TYPE_DEFINITION
42
+ ];
43
+ const valuesEnum = [import_graphql.Kind.ENUM_TYPE_DEFINITION];
44
+ const selectionsEnum = [
45
+ import_graphql.Kind.OPERATION_DEFINITION,
46
+ import_graphql.Kind.FRAGMENT_DEFINITION
47
+ ];
48
+ const variablesEnum = [import_graphql.Kind.OPERATION_DEFINITION];
49
+ const argumentsEnum = [
50
+ import_graphql.Kind.FIELD_DEFINITION,
51
+ import_graphql.Kind.FIELD,
52
+ import_graphql.Kind.DIRECTIVE_DEFINITION,
53
+ import_graphql.Kind.DIRECTIVE
54
+ ];
55
+ const schema = {
56
+ type: "array",
57
+ minItems: 1,
58
+ maxItems: 1,
59
+ items: {
60
+ type: "object",
61
+ additionalProperties: false,
62
+ minProperties: 1,
63
+ properties: {
64
+ fields: {
65
+ ...import_utils.ARRAY_DEFAULT_OPTIONS,
66
+ items: {
67
+ enum: fieldsEnum
68
+ },
69
+ description: "Fields of `type`, `interface`, and `input`."
70
+ },
71
+ values: {
72
+ ...import_utils.ARRAY_DEFAULT_OPTIONS,
73
+ items: {
74
+ enum: valuesEnum
75
+ },
76
+ description: "Values of `enum`."
77
+ },
78
+ selections: {
79
+ ...import_utils.ARRAY_DEFAULT_OPTIONS,
80
+ items: {
81
+ enum: selectionsEnum
82
+ },
83
+ description: "Selections of `fragment` and operations `query`, `mutation` and `subscription`."
84
+ },
85
+ variables: {
86
+ ...import_utils.ARRAY_DEFAULT_OPTIONS,
87
+ items: {
88
+ enum: variablesEnum
89
+ },
90
+ description: "Variables of operations `query`, `mutation` and `subscription`."
91
+ },
92
+ arguments: {
93
+ ...import_utils.ARRAY_DEFAULT_OPTIONS,
94
+ items: {
95
+ enum: argumentsEnum
96
+ },
97
+ description: "Arguments of fields and directives."
98
+ },
99
+ definitions: {
100
+ type: "boolean",
101
+ description: "Definitions \u2013 `type`, `interface`, `enum`, `scalar`, `input`, `union` and `directive`.",
102
+ default: false
103
+ },
104
+ groups: {
105
+ ...import_utils.ARRAY_DEFAULT_OPTIONS,
106
+ minItems: 2,
107
+ description: "Custom order group. Example: `['id', '*', 'createdAt', 'updatedAt']` where `*` says for everything else."
108
+ }
109
+ }
110
+ }
111
+ };
112
+ const rule = {
113
+ meta: {
114
+ type: "suggestion",
115
+ fixable: "code",
116
+ docs: {
117
+ category: ["Schema", "Operations"],
118
+ description: "Enforce arrange in alphabetical order for type fields, enum values, input object fields, operation selections and more.",
119
+ url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
120
+ examples: [
121
+ {
122
+ title: "Incorrect",
123
+ usage: [{ fields: [import_graphql.Kind.OBJECT_TYPE_DEFINITION] }],
124
+ code: (
125
+ /* GraphQL */
126
+ `
127
+ type User {
128
+ password: String
129
+ firstName: String! # should be before "password"
130
+ age: Int # should be before "firstName"
131
+ lastName: String!
132
+ }
133
+ `
134
+ )
135
+ },
136
+ {
137
+ title: "Correct",
138
+ usage: [{ fields: [import_graphql.Kind.OBJECT_TYPE_DEFINITION] }],
139
+ code: (
140
+ /* GraphQL */
141
+ `
142
+ type User {
143
+ age: Int
144
+ firstName: String!
145
+ lastName: String!
146
+ password: String
147
+ }
148
+ `
149
+ )
150
+ },
151
+ {
152
+ title: "Incorrect",
153
+ usage: [{ values: [import_graphql.Kind.ENUM_TYPE_DEFINITION] }],
154
+ code: (
155
+ /* GraphQL */
156
+ `
157
+ enum Role {
158
+ SUPER_ADMIN
159
+ ADMIN # should be before "SUPER_ADMIN"
160
+ USER
161
+ GOD # should be before "USER"
162
+ }
163
+ `
164
+ )
165
+ },
166
+ {
167
+ title: "Correct",
168
+ usage: [{ values: [import_graphql.Kind.ENUM_TYPE_DEFINITION] }],
169
+ code: (
170
+ /* GraphQL */
171
+ `
172
+ enum Role {
173
+ ADMIN
174
+ GOD
175
+ SUPER_ADMIN
176
+ USER
177
+ }
178
+ `
179
+ )
180
+ },
181
+ {
182
+ title: "Incorrect",
183
+ usage: [{ selections: [import_graphql.Kind.OPERATION_DEFINITION] }],
184
+ code: (
185
+ /* GraphQL */
186
+ `
187
+ query {
188
+ me {
189
+ firstName
190
+ lastName
191
+ email # should be before "lastName"
192
+ }
193
+ }
194
+ `
195
+ )
196
+ },
197
+ {
198
+ title: "Correct",
199
+ usage: [{ selections: [import_graphql.Kind.OPERATION_DEFINITION] }],
200
+ code: (
201
+ /* GraphQL */
202
+ `
203
+ query {
204
+ me {
205
+ email
206
+ firstName
207
+ lastName
208
+ }
209
+ }
210
+ `
211
+ )
212
+ }
213
+ ],
214
+ configOptions: {
215
+ schema: [
216
+ {
217
+ fields: fieldsEnum,
218
+ values: valuesEnum,
219
+ arguments: argumentsEnum
220
+ // TODO: add in graphql-eslint v4
221
+ // definitions: true,
222
+ // groups: ['id', '*', 'createdAt', 'updatedAt']
223
+ }
224
+ ],
225
+ operations: [
226
+ {
227
+ selections: selectionsEnum,
228
+ variables: variablesEnum,
229
+ arguments: [import_graphql.Kind.FIELD, import_graphql.Kind.DIRECTIVE]
230
+ }
231
+ ]
232
+ }
233
+ },
234
+ messages: {
235
+ [RULE_ID]: "{{ currNode }} should be before {{ prevNode }}"
236
+ },
237
+ schema
238
+ },
239
+ create(context) {
240
+ var _a, _b, _c, _d, _e;
241
+ const sourceCode = context.getSourceCode();
242
+ function isNodeAndCommentOnSameLine(node, comment) {
243
+ return node.loc.end.line === comment.loc.start.line;
244
+ }
245
+ function getBeforeComments(node) {
246
+ const commentsBefore = sourceCode.getCommentsBefore(node);
247
+ if (commentsBefore.length === 0) {
248
+ return [];
249
+ }
250
+ const tokenBefore = sourceCode.getTokenBefore(node);
251
+ if (tokenBefore) {
252
+ return commentsBefore.filter((comment) => !isNodeAndCommentOnSameLine(tokenBefore, comment));
253
+ }
254
+ const filteredComments = [];
255
+ const nodeLine = node.loc.start.line;
256
+ for (let i = commentsBefore.length - 1; i >= 0; i -= 1) {
257
+ const comment = commentsBefore[i];
258
+ if (nodeLine - comment.loc.start.line - filteredComments.length > 1) {
259
+ break;
260
+ }
261
+ filteredComments.unshift(comment);
262
+ }
263
+ return filteredComments;
264
+ }
265
+ function getRangeWithComments(node) {
266
+ if (node.kind === import_graphql.Kind.VARIABLE) {
267
+ node = node.parent;
268
+ }
269
+ const [firstBeforeComment] = getBeforeComments(node);
270
+ const [firstAfterComment] = sourceCode.getCommentsAfter(node);
271
+ const from = firstBeforeComment || node;
272
+ const to = firstAfterComment && isNodeAndCommentOnSameLine(node, firstAfterComment) ? firstAfterComment : node;
273
+ return [from.range[0], to.range[1]];
274
+ }
275
+ function checkNodes(nodes = []) {
276
+ var _a2, _b2, _c2, _d2;
277
+ for (let i = 1; i < nodes.length; i += 1) {
278
+ const currNode = nodes[i];
279
+ const currName = "alias" in currNode && ((_a2 = currNode.alias) == null ? void 0 : _a2.value) || "name" in currNode && ((_b2 = currNode.name) == null ? void 0 : _b2.value);
280
+ if (!currName) {
281
+ continue;
282
+ }
283
+ const prevNode = nodes[i - 1];
284
+ const prevName = "alias" in prevNode && ((_c2 = prevNode.alias) == null ? void 0 : _c2.value) || "name" in prevNode && ((_d2 = prevNode.name) == null ? void 0 : _d2.value);
285
+ if (prevName) {
286
+ const compareResult = prevName.localeCompare(currName);
287
+ const { groups } = opts;
288
+ let shouldSortByGroup = false;
289
+ if (groups == null ? void 0 : groups.length) {
290
+ if (!groups.includes("*")) {
291
+ throw new Error("`groups` option should contain `*` string.");
292
+ }
293
+ let indexForPrev = groups.indexOf(prevName);
294
+ if (indexForPrev === -1)
295
+ indexForPrev = groups.indexOf("*");
296
+ let indexForCurr = groups.indexOf(currName);
297
+ if (indexForCurr === -1)
298
+ indexForCurr = groups.indexOf("*");
299
+ shouldSortByGroup = indexForPrev - indexForCurr > 0;
300
+ if (indexForPrev < indexForCurr) {
301
+ continue;
302
+ }
303
+ }
304
+ const shouldSort = compareResult === 1;
305
+ if (!shouldSortByGroup && !shouldSort) {
306
+ const isSameName = compareResult === 0;
307
+ if (!isSameName || !prevNode.kind.endsWith("Extension") || currNode.kind.endsWith("Extension")) {
308
+ continue;
309
+ }
310
+ }
311
+ }
312
+ context.report({
313
+ // @ts-expect-error can't be undefined
314
+ node: "alias" in currNode && currNode.alias || currNode.name,
315
+ messageId: RULE_ID,
316
+ data: {
317
+ currNode: (0, import_utils.displayNodeName)(currNode),
318
+ prevNode: prevName ? (0, import_utils.displayNodeName)(prevNode) : (0, import_lodash.default)(prevNode.kind)
319
+ },
320
+ *fix(fixer) {
321
+ const prevRange = getRangeWithComments(prevNode);
322
+ const currRange = getRangeWithComments(currNode);
323
+ yield fixer.replaceTextRange(
324
+ prevRange,
325
+ sourceCode.getText({ range: currRange })
326
+ );
327
+ yield fixer.replaceTextRange(
328
+ currRange,
329
+ sourceCode.getText({ range: prevRange })
330
+ );
331
+ }
332
+ });
333
+ }
334
+ }
335
+ const opts = context.options[0];
336
+ const fields = new Set((_a = opts.fields) != null ? _a : []);
337
+ const listeners = {};
338
+ const kinds = [
339
+ fields.has(import_graphql.Kind.OBJECT_TYPE_DEFINITION) && [
340
+ import_graphql.Kind.OBJECT_TYPE_DEFINITION,
341
+ import_graphql.Kind.OBJECT_TYPE_EXTENSION
342
+ ],
343
+ fields.has(import_graphql.Kind.INTERFACE_TYPE_DEFINITION) && [
344
+ import_graphql.Kind.INTERFACE_TYPE_DEFINITION,
345
+ import_graphql.Kind.INTERFACE_TYPE_EXTENSION
346
+ ],
347
+ fields.has(import_graphql.Kind.INPUT_OBJECT_TYPE_DEFINITION) && [
348
+ import_graphql.Kind.INPUT_OBJECT_TYPE_DEFINITION,
349
+ import_graphql.Kind.INPUT_OBJECT_TYPE_EXTENSION
350
+ ]
351
+ ].filter(import_utils.truthy).flat();
352
+ const fieldsSelector = kinds.join(",");
353
+ const hasEnumValues = ((_b = opts.values) == null ? void 0 : _b[0]) === import_graphql.Kind.ENUM_TYPE_DEFINITION;
354
+ const selectionsSelector = (_c = opts.selections) == null ? void 0 : _c.join(",");
355
+ const hasVariables = ((_d = opts.variables) == null ? void 0 : _d[0]) === import_graphql.Kind.OPERATION_DEFINITION;
356
+ const argumentsSelector = (_e = opts.arguments) == null ? void 0 : _e.join(",");
357
+ if (fieldsSelector) {
358
+ listeners[fieldsSelector] = (node) => {
359
+ checkNodes(node.fields);
360
+ };
361
+ }
362
+ if (hasEnumValues) {
363
+ const enumValuesSelector = [import_graphql.Kind.ENUM_TYPE_DEFINITION, import_graphql.Kind.ENUM_TYPE_EXTENSION].join(",");
364
+ listeners[enumValuesSelector] = (node) => {
365
+ checkNodes(node.values);
366
+ };
367
+ }
368
+ if (selectionsSelector) {
369
+ listeners[`:matches(${selectionsSelector}) SelectionSet`] = (node) => {
370
+ checkNodes(node.selections);
371
+ };
372
+ }
373
+ if (hasVariables) {
374
+ listeners.OperationDefinition = (node) => {
375
+ var _a2;
376
+ checkNodes((_a2 = node.variableDefinitions) == null ? void 0 : _a2.map((varDef) => varDef.variable));
377
+ };
378
+ }
379
+ if (argumentsSelector) {
380
+ listeners[argumentsSelector] = (node) => {
381
+ checkNodes(node.arguments);
382
+ };
383
+ }
384
+ if (opts.definitions) {
385
+ listeners.Document = (node) => {
386
+ checkNodes(node.definitions);
387
+ };
388
+ }
389
+ return listeners;
390
+ }
391
+ };
392
+ // Annotate the CommonJS export names for ESM import in node:
393
+ 0 && (module.exports = {
394
+ rule
395
+ });
@@ -0,0 +1,28 @@
1
+ import { FromSchema } from 'json-schema-to-ts';
2
+ import { f as GraphQLESLintRule } from '../types-8d5f4ae0.js';
3
+ import '@graphql-tools/utils';
4
+ import 'eslint';
5
+ import 'estree';
6
+ import 'graphql';
7
+ import 'graphql-config';
8
+ import '../estree-converter/types.js';
9
+
10
+ declare const schema: {
11
+ readonly type: "array";
12
+ readonly maxItems: 1;
13
+ readonly items: {
14
+ readonly type: "object";
15
+ readonly additionalProperties: false;
16
+ readonly minProperties: 1;
17
+ readonly properties: {
18
+ readonly style: {
19
+ readonly enum: readonly ["block", "inline"];
20
+ readonly default: "block";
21
+ };
22
+ };
23
+ };
24
+ };
25
+ type RuleOptions = FromSchema<typeof schema>;
26
+ declare const rule: GraphQLESLintRule<RuleOptions>;
27
+
28
+ export { RuleOptions, rule };
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var description_style_exports = {};
20
+ __export(description_style_exports, {
21
+ rule: () => rule
22
+ });
23
+ module.exports = __toCommonJS(description_style_exports);
24
+ var import_utils = require("../utils.js");
25
+ const schema = {
26
+ type: "array",
27
+ maxItems: 1,
28
+ items: {
29
+ type: "object",
30
+ additionalProperties: false,
31
+ minProperties: 1,
32
+ properties: {
33
+ style: {
34
+ enum: ["block", "inline"],
35
+ default: "block"
36
+ }
37
+ }
38
+ }
39
+ };
40
+ const rule = {
41
+ meta: {
42
+ type: "suggestion",
43
+ hasSuggestions: true,
44
+ docs: {
45
+ examples: [
46
+ {
47
+ title: "Incorrect",
48
+ usage: [{ style: "inline" }],
49
+ code: (
50
+ /* GraphQL */
51
+ `
52
+ """ Description """
53
+ type someTypeName {
54
+ # ...
55
+ }
56
+ `
57
+ )
58
+ },
59
+ {
60
+ title: "Correct",
61
+ usage: [{ style: "inline" }],
62
+ code: (
63
+ /* GraphQL */
64
+ `
65
+ " Description "
66
+ type someTypeName {
67
+ # ...
68
+ }
69
+ `
70
+ )
71
+ }
72
+ ],
73
+ description: "Require all comments to follow the same style (either block or inline).",
74
+ category: "Schema",
75
+ url: "https://the-guild.dev/graphql/eslint/rules/description-style",
76
+ recommended: true
77
+ },
78
+ schema
79
+ },
80
+ create(context) {
81
+ const { style = "block" } = context.options[0] || {};
82
+ const isBlock = style === "block";
83
+ return {
84
+ [`.description[type=StringValue][block!=${isBlock}]`](node) {
85
+ context.report({
86
+ loc: isBlock ? node.loc : node.loc.start,
87
+ message: `Unexpected ${isBlock ? "inline" : "block"} description for ${(0, import_utils.getNodeName)(
88
+ node.parent
89
+ )}`,
90
+ suggest: [
91
+ {
92
+ desc: `Change to ${isBlock ? "block" : "inline"} style description`,
93
+ fix(fixer) {
94
+ const sourceCode = context.getSourceCode();
95
+ const originalText = sourceCode.getText(node);
96
+ const newText = isBlock ? originalText.replace(/(^")|("$)/g, '"""') : originalText.replace(/(^""")|("""$)/g, '"').replace(/\s+/g, " ");
97
+ return fixer.replaceText(node, newText);
98
+ }
99
+ }
100
+ ]
101
+ });
102
+ }
103
+ };
104
+ }
105
+ };
106
+ // Annotate the CommonJS export names for ESM import in node:
107
+ 0 && (module.exports = {
108
+ rule
109
+ });
@@ -0,0 +1,12 @@
1
+ import { f as GraphQLESLintRule } from '../types-8d5f4ae0.js';
2
+ import '@graphql-tools/utils';
3
+ import 'eslint';
4
+ import 'estree';
5
+ import 'graphql';
6
+ import 'graphql-config';
7
+ import 'json-schema-to-ts';
8
+ import '../estree-converter/types.js';
9
+
10
+ declare const GRAPHQL_JS_VALIDATIONS: Record<string, GraphQLESLintRule>;
11
+
12
+ export { GRAPHQL_JS_VALIDATIONS };