@graphql-eslint/eslint-plugin 3.19.3 → 3.20.0-alpha-20230703154330-0d51273

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 (302) hide show
  1. package/{typings → cjs}/cache.d.ts +3 -1
  2. package/cjs/cache.js +57 -26
  3. package/{typings → cjs}/configs/index.d.ts +3 -1
  4. package/cjs/configs/index.js +47 -14
  5. package/{typings → cjs}/configs/operations-all.d.ts +2 -1
  6. package/cjs/configs/operations-all.js +47 -30
  7. package/{typings → cjs}/configs/operations-recommended.d.ts +2 -1
  8. package/cjs/configs/operations-recommended.js +72 -55
  9. package/{typings → cjs}/configs/relay.d.ts +2 -1
  10. package/cjs/configs/relay.js +31 -11
  11. package/{typings → cjs}/configs/schema-all.d.ts +2 -1
  12. package/cjs/configs/schema-all.js +41 -24
  13. package/{typings → cjs}/configs/schema-recommended.d.ts +2 -1
  14. package/cjs/configs/schema-recommended.js +68 -51
  15. package/{typings → cjs}/documents.d.ts +4 -1
  16. package/cjs/documents.js +74 -43
  17. package/cjs/estree-converter/converter.d.ts +8 -0
  18. package/cjs/estree-converter/converter.js +80 -59
  19. package/cjs/estree-converter/index.d.ts +8 -0
  20. package/cjs/estree-converter/index.js +25 -5
  21. package/{typings → cjs}/estree-converter/types.d.ts +7 -5
  22. package/cjs/estree-converter/types.js +16 -0
  23. package/cjs/estree-converter/utils.d.ts +18 -0
  24. package/cjs/estree-converter/utils.js +119 -95
  25. package/{typings → cjs}/flat-configs.d.ts +12 -1
  26. package/cjs/flat-configs.js +56 -32
  27. package/cjs/graphql-config.d.ts +13 -0
  28. package/cjs/graphql-config.js +78 -47
  29. package/cjs/index.d.ts +22 -0
  30. package/cjs/index.js +50 -18
  31. package/cjs/parser.d.ts +12 -0
  32. package/cjs/parser.js +96 -76
  33. package/cjs/processor.d.ts +9 -0
  34. package/cjs/processor.js +119 -88
  35. package/{typings → cjs}/rules/alphabetize.d.ts +12 -4
  36. package/cjs/rules/alphabetize.js +337 -295
  37. package/{typings → cjs}/rules/description-style.d.ts +12 -4
  38. package/cjs/rules/description-style.js +96 -66
  39. package/cjs/rules/graphql-js-validation.d.ts +12 -0
  40. package/cjs/rules/graphql-js-validation.js +595 -433
  41. package/cjs/rules/index.d.ts +125 -0
  42. package/cjs/rules/index.js +97 -76
  43. package/{typings → cjs}/rules/input-name.d.ts +12 -4
  44. package/cjs/rules/input-name.js +153 -123
  45. package/{typings → cjs}/rules/lone-executable-definition.d.ts +12 -4
  46. package/cjs/rules/lone-executable-definition.js +101 -72
  47. package/{typings → cjs}/rules/match-document-filename.d.ts +14 -6
  48. package/cjs/rules/match-document-filename.js +229 -182
  49. package/{typings → cjs}/rules/naming-convention.d.ts +12 -4
  50. package/cjs/rules/naming-convention.js +380 -316
  51. package/cjs/rules/no-anonymous-operations.d.ts +12 -0
  52. package/cjs/rules/no-anonymous-operations.js +88 -57
  53. package/cjs/rules/no-case-insensitive-enum-values-duplicates.d.ts +12 -0
  54. package/cjs/rules/no-case-insensitive-enum-values-duplicates.js +82 -50
  55. package/cjs/rules/no-deprecated.d.ts +12 -0
  56. package/cjs/rules/no-deprecated.js +106 -75
  57. package/cjs/rules/no-duplicate-fields.d.ts +12 -0
  58. package/cjs/rules/no-duplicate-fields.js +116 -82
  59. package/cjs/rules/no-hashtag-description.d.ts +13 -0
  60. package/cjs/rules/no-hashtag-description.js +119 -82
  61. package/cjs/rules/no-one-place-fragments.d.ts +12 -0
  62. package/cjs/rules/no-one-place-fragments.js +88 -58
  63. package/{typings → cjs}/rules/no-root-type.d.ts +12 -4
  64. package/cjs/rules/no-root-type.js +101 -74
  65. package/cjs/rules/no-scalar-result-type-on-mutation.d.ts +12 -0
  66. package/cjs/rules/no-scalar-result-type-on-mutation.js +90 -60
  67. package/cjs/rules/no-typename-prefix.d.ts +12 -0
  68. package/cjs/rules/no-typename-prefix.js +88 -55
  69. package/cjs/rules/no-unreachable-types.d.ts +12 -0
  70. package/cjs/rules/no-unreachable-types.js +169 -134
  71. package/cjs/rules/no-unused-fields.d.ts +12 -0
  72. package/cjs/rules/no-unused-fields.js +117 -92
  73. package/{typings → cjs}/rules/relay-arguments.d.ts +12 -4
  74. package/cjs/rules/relay-arguments.js +136 -110
  75. package/cjs/rules/relay-connection-types.d.ts +13 -0
  76. package/cjs/rules/relay-connection-types.js +123 -94
  77. package/{typings → cjs}/rules/relay-edge-types.d.ts +12 -4
  78. package/cjs/rules/relay-edge-types.js +196 -179
  79. package/cjs/rules/relay-page-info.d.ts +12 -0
  80. package/cjs/rules/relay-page-info.js +108 -89
  81. package/{typings → cjs}/rules/require-deprecation-date.d.ts +12 -4
  82. package/cjs/rules/require-deprecation-date.js +143 -112
  83. package/cjs/rules/require-deprecation-reason.d.ts +12 -0
  84. package/cjs/rules/require-deprecation-reason.js +80 -46
  85. package/{typings → cjs}/rules/require-description.d.ts +13 -5
  86. package/cjs/rules/require-description.js +170 -132
  87. package/cjs/rules/require-field-of-type-query-in-mutation-result.d.ts +12 -0
  88. package/cjs/rules/require-field-of-type-query-in-mutation-result.js +81 -51
  89. package/{typings → cjs}/rules/require-id-when-available.d.ts +12 -4
  90. package/cjs/rules/require-id-when-available.js +196 -173
  91. package/cjs/rules/require-import-fragment.d.ts +12 -0
  92. package/cjs/rules/require-import-fragment.js +138 -88
  93. package/cjs/rules/require-nullable-fields-with-oneof.d.ts +12 -0
  94. package/cjs/rules/require-nullable-fields-with-oneof.js +80 -50
  95. package/cjs/rules/require-nullable-result-in-root.d.ts +12 -0
  96. package/cjs/rules/require-nullable-result-in-root.js +97 -68
  97. package/cjs/rules/require-type-pattern-with-oneof.d.ts +12 -0
  98. package/cjs/rules/require-type-pattern-with-oneof.js +70 -42
  99. package/{typings → cjs}/rules/selection-set-depth.d.ts +12 -4
  100. package/cjs/rules/selection-set-depth.js +147 -107
  101. package/{typings → cjs}/rules/strict-id-in-types.d.ts +12 -4
  102. package/cjs/rules/strict-id-in-types.js +143 -122
  103. package/cjs/rules/unique-fragment-name.d.ts +13 -0
  104. package/cjs/rules/unique-fragment-name.js +88 -62
  105. package/cjs/rules/unique-operation-name.d.ts +12 -0
  106. package/cjs/rules/unique-operation-name.js +65 -35
  107. package/cjs/schema.d.ts +12 -0
  108. package/cjs/schema.js +62 -30
  109. package/cjs/siblings.d.ts +8 -0
  110. package/cjs/siblings.js +124 -106
  111. package/cjs/testkit.d.ts +8 -0
  112. package/cjs/testkit.js +165 -144
  113. package/cjs/types-e3367e3c.d.ts +129 -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 +181 -124
  118. package/{typings/cache.d.cts → esm/cache.d.mts} +3 -1
  119. package/esm/cache.js +25 -23
  120. package/{typings/configs/index.d.cts → esm/configs/index.d.mts} +3 -1
  121. package/esm/configs/index.js +14 -11
  122. package/{typings/configs/operations-all.d.cts → esm/configs/operations-all.d.mts} +2 -1
  123. package/esm/configs/operations-all.js +28 -28
  124. package/{typings/configs/operations-recommended.d.cts → esm/configs/operations-recommended.d.mts} +2 -1
  125. package/esm/configs/operations-recommended.js +53 -53
  126. package/{typings/configs/relay.d.cts → esm/configs/relay.d.mts} +2 -1
  127. package/esm/configs/relay.js +12 -9
  128. package/{typings/configs/schema-all.d.cts → esm/configs/schema-all.d.mts} +2 -1
  129. package/esm/configs/schema-all.js +22 -22
  130. package/{typings/configs/schema-recommended.d.cts → esm/configs/schema-recommended.d.mts} +2 -1
  131. package/esm/configs/schema-recommended.js +49 -49
  132. package/{typings/documents.d.cts → esm/documents.d.mts} +4 -1
  133. package/esm/documents.js +41 -39
  134. package/esm/estree-converter/converter.d.mts +8 -0
  135. package/esm/estree-converter/converter.js +63 -57
  136. package/esm/estree-converter/index.d.mts +8 -0
  137. package/esm/estree-converter/index.js +3 -3
  138. package/{typings/estree-converter/types.d.cts → esm/estree-converter/types.d.mts} +7 -5
  139. package/esm/estree-converter/utils.d.mts +18 -0
  140. package/esm/estree-converter/utils.js +102 -93
  141. package/{typings/flat-configs.d.cts → esm/flat-configs.d.mts} +13 -2
  142. package/esm/flat-configs.js +33 -30
  143. package/esm/graphql-config.d.mts +13 -0
  144. package/esm/graphql-config.js +49 -44
  145. package/esm/index.d.mts +22 -0
  146. package/esm/index.js +18 -9
  147. package/esm/package.json +1 -1
  148. package/esm/parser.d.mts +12 -0
  149. package/esm/parser.js +64 -73
  150. package/esm/processor.d.mts +9 -0
  151. package/esm/processor.js +98 -86
  152. package/{typings/rules/alphabetize.d.cts → esm/rules/alphabetize.d.mts} +12 -4
  153. package/esm/rules/alphabetize.js +304 -290
  154. package/{typings/rules/description-style.d.cts → esm/rules/description-style.d.mts} +12 -4
  155. package/esm/rules/description-style.js +73 -64
  156. package/esm/rules/graphql-js-validation.d.mts +12 -0
  157. package/esm/rules/graphql-js-validation.js +580 -429
  158. package/esm/rules/index.d.mts +125 -0
  159. package/esm/rules/index.js +74 -74
  160. package/{typings/rules/input-name.d.cts → esm/rules/input-name.d.mts} +12 -4
  161. package/esm/rules/input-name.js +132 -121
  162. package/{typings/rules/lone-executable-definition.d.cts → esm/rules/lone-executable-definition.d.mts} +12 -4
  163. package/esm/rules/lone-executable-definition.js +78 -70
  164. package/{typings/rules/match-document-filename.d.cts → esm/rules/match-document-filename.d.mts} +14 -6
  165. package/esm/rules/match-document-filename.js +210 -180
  166. package/{typings/rules/naming-convention.d.cts → esm/rules/naming-convention.d.mts} +12 -4
  167. package/esm/rules/naming-convention.js +363 -314
  168. package/esm/rules/no-anonymous-operations.d.mts +12 -0
  169. package/esm/rules/no-anonymous-operations.js +65 -55
  170. package/esm/rules/no-case-insensitive-enum-values-duplicates.d.mts +12 -0
  171. package/esm/rules/no-case-insensitive-enum-values-duplicates.js +59 -48
  172. package/esm/rules/no-deprecated.d.mts +12 -0
  173. package/esm/rules/no-deprecated.js +83 -73
  174. package/esm/rules/no-duplicate-fields.d.mts +12 -0
  175. package/esm/rules/no-duplicate-fields.js +93 -80
  176. package/esm/rules/no-hashtag-description.d.mts +13 -0
  177. package/esm/rules/no-hashtag-description.js +95 -80
  178. package/esm/rules/no-one-place-fragments.d.mts +12 -0
  179. package/esm/rules/no-one-place-fragments.js +65 -56
  180. package/{typings/rules/no-root-type.d.cts → esm/rules/no-root-type.d.mts} +12 -4
  181. package/esm/rules/no-root-type.js +78 -72
  182. package/esm/rules/no-scalar-result-type-on-mutation.d.mts +12 -0
  183. package/esm/rules/no-scalar-result-type-on-mutation.js +67 -58
  184. package/esm/rules/no-typename-prefix.d.mts +12 -0
  185. package/esm/rules/no-typename-prefix.js +65 -53
  186. package/esm/rules/no-unreachable-types.d.mts +12 -0
  187. package/esm/rules/no-unreachable-types.js +141 -131
  188. package/esm/rules/no-unused-fields.d.mts +12 -0
  189. package/esm/rules/no-unused-fields.js +94 -90
  190. package/{typings/rules/relay-arguments.d.cts → esm/rules/relay-arguments.d.mts} +12 -4
  191. package/esm/rules/relay-arguments.js +113 -108
  192. package/esm/rules/relay-connection-types.d.mts +13 -0
  193. package/esm/rules/relay-connection-types.js +98 -91
  194. package/{typings/rules/relay-edge-types.d.cts → esm/rules/relay-edge-types.d.mts} +12 -4
  195. package/esm/rules/relay-edge-types.js +178 -177
  196. package/esm/rules/relay-page-info.d.mts +12 -0
  197. package/esm/rules/relay-page-info.js +84 -86
  198. package/{typings/rules/require-deprecation-date.d.cts → esm/rules/require-deprecation-date.d.mts} +12 -4
  199. package/esm/rules/require-deprecation-date.js +120 -110
  200. package/esm/rules/require-deprecation-reason.d.mts +12 -0
  201. package/esm/rules/require-deprecation-reason.js +57 -44
  202. package/{typings/rules/require-description.d.cts → esm/rules/require-description.d.mts} +13 -5
  203. package/esm/rules/require-description.js +151 -130
  204. package/esm/rules/require-field-of-type-query-in-mutation-result.d.mts +12 -0
  205. package/esm/rules/require-field-of-type-query-in-mutation-result.js +58 -49
  206. package/{typings/rules/require-id-when-available.d.cts → esm/rules/require-id-when-available.d.mts} +12 -4
  207. package/esm/rules/require-id-when-available.js +186 -171
  208. package/esm/rules/require-import-fragment.d.mts +12 -0
  209. package/esm/rules/require-import-fragment.js +105 -85
  210. package/esm/rules/require-nullable-fields-with-oneof.d.mts +12 -0
  211. package/esm/rules/require-nullable-fields-with-oneof.js +57 -48
  212. package/esm/rules/require-nullable-result-in-root.d.mts +12 -0
  213. package/esm/rules/require-nullable-result-in-root.js +74 -66
  214. package/esm/rules/require-type-pattern-with-oneof.d.mts +12 -0
  215. package/esm/rules/require-type-pattern-with-oneof.js +47 -40
  216. package/{typings/rules/selection-set-depth.d.cts → esm/rules/selection-set-depth.d.mts} +12 -4
  217. package/esm/rules/selection-set-depth.js +114 -104
  218. package/{typings/rules/strict-id-in-types.d.cts → esm/rules/strict-id-in-types.d.mts} +12 -4
  219. package/esm/rules/strict-id-in-types.js +125 -119
  220. package/esm/rules/unique-fragment-name.d.mts +13 -0
  221. package/esm/rules/unique-fragment-name.js +65 -60
  222. package/esm/rules/unique-operation-name.d.mts +12 -0
  223. package/esm/rules/unique-operation-name.js +42 -33
  224. package/esm/schema.d.mts +12 -0
  225. package/esm/schema.js +29 -26
  226. package/esm/siblings.d.mts +8 -0
  227. package/esm/siblings.js +105 -104
  228. package/esm/testkit.d.mts +8 -0
  229. package/esm/testkit.js +132 -141
  230. package/esm/types-2e1afd7c.d.ts +129 -0
  231. package/esm/types.d.mts +8 -0
  232. package/esm/utils.d.mts +44 -0
  233. package/esm/utils.js +138 -116
  234. package/package.json +40 -30
  235. package/typings/estree-converter/converter.d.cts +0 -3
  236. package/typings/estree-converter/converter.d.ts +0 -3
  237. package/typings/estree-converter/index.d.cts +0 -3
  238. package/typings/estree-converter/index.d.ts +0 -3
  239. package/typings/estree-converter/utils.d.cts +0 -13
  240. package/typings/estree-converter/utils.d.ts +0 -13
  241. package/typings/graphql-config.d.cts +0 -4
  242. package/typings/graphql-config.d.ts +0 -4
  243. package/typings/index.d.cts +0 -10
  244. package/typings/index.d.ts +0 -10
  245. package/typings/parser.d.cts +0 -2
  246. package/typings/parser.d.ts +0 -2
  247. package/typings/processor.d.cts +0 -6
  248. package/typings/processor.d.ts +0 -6
  249. package/typings/rules/graphql-js-validation.d.cts +0 -2
  250. package/typings/rules/graphql-js-validation.d.ts +0 -2
  251. package/typings/rules/index.d.cts +0 -111
  252. package/typings/rules/index.d.ts +0 -111
  253. package/typings/rules/no-anonymous-operations.d.cts +0 -2
  254. package/typings/rules/no-anonymous-operations.d.ts +0 -2
  255. package/typings/rules/no-case-insensitive-enum-values-duplicates.d.cts +0 -2
  256. package/typings/rules/no-case-insensitive-enum-values-duplicates.d.ts +0 -2
  257. package/typings/rules/no-deprecated.d.cts +0 -2
  258. package/typings/rules/no-deprecated.d.ts +0 -2
  259. package/typings/rules/no-duplicate-fields.d.cts +0 -2
  260. package/typings/rules/no-duplicate-fields.d.ts +0 -2
  261. package/typings/rules/no-hashtag-description.d.cts +0 -3
  262. package/typings/rules/no-hashtag-description.d.ts +0 -3
  263. package/typings/rules/no-one-place-fragments.d.cts +0 -2
  264. package/typings/rules/no-one-place-fragments.d.ts +0 -2
  265. package/typings/rules/no-scalar-result-type-on-mutation.d.cts +0 -2
  266. package/typings/rules/no-scalar-result-type-on-mutation.d.ts +0 -2
  267. package/typings/rules/no-typename-prefix.d.cts +0 -2
  268. package/typings/rules/no-typename-prefix.d.ts +0 -2
  269. package/typings/rules/no-unreachable-types.d.cts +0 -2
  270. package/typings/rules/no-unreachable-types.d.ts +0 -2
  271. package/typings/rules/no-unused-fields.d.cts +0 -2
  272. package/typings/rules/no-unused-fields.d.ts +0 -2
  273. package/typings/rules/relay-connection-types.d.cts +0 -4
  274. package/typings/rules/relay-connection-types.d.ts +0 -4
  275. package/typings/rules/relay-page-info.d.cts +0 -2
  276. package/typings/rules/relay-page-info.d.ts +0 -2
  277. package/typings/rules/require-deprecation-reason.d.cts +0 -2
  278. package/typings/rules/require-deprecation-reason.d.ts +0 -2
  279. package/typings/rules/require-field-of-type-query-in-mutation-result.d.cts +0 -2
  280. package/typings/rules/require-field-of-type-query-in-mutation-result.d.ts +0 -2
  281. package/typings/rules/require-import-fragment.d.cts +0 -2
  282. package/typings/rules/require-import-fragment.d.ts +0 -2
  283. package/typings/rules/require-nullable-fields-with-oneof.d.cts +0 -2
  284. package/typings/rules/require-nullable-fields-with-oneof.d.ts +0 -2
  285. package/typings/rules/require-nullable-result-in-root.d.cts +0 -2
  286. package/typings/rules/require-nullable-result-in-root.d.ts +0 -2
  287. package/typings/rules/require-type-pattern-with-oneof.d.cts +0 -2
  288. package/typings/rules/require-type-pattern-with-oneof.d.ts +0 -2
  289. package/typings/rules/unique-fragment-name.d.cts +0 -5
  290. package/typings/rules/unique-fragment-name.d.ts +0 -5
  291. package/typings/rules/unique-operation-name.d.cts +0 -2
  292. package/typings/rules/unique-operation-name.d.ts +0 -2
  293. package/typings/schema.d.cts +0 -3
  294. package/typings/schema.d.ts +0 -3
  295. package/typings/siblings.d.cts +0 -22
  296. package/typings/siblings.d.ts +0 -22
  297. package/typings/testkit.d.cts +0 -29
  298. package/typings/testkit.d.ts +0 -29
  299. package/typings/types.d.cts +0 -83
  300. package/typings/types.d.ts +0 -83
  301. package/typings/utils.d.cts +0 -40
  302. package/typings/utils.d.ts +0 -40
@@ -1,21 +1,43 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.rule = void 0;
4
- const graphql_1 = require("graphql");
5
- const RULE_ID = 'no-duplicate-fields';
6
- exports.rule = {
7
- meta: {
8
- type: 'suggestion',
9
- hasSuggestions: true,
10
- docs: {
11
- description: 'Checks for duplicate fields in selection set, variables in operation definition, or in arguments set of a field.',
12
- category: 'Operations',
13
- url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
14
- recommended: true,
15
- examples: [
16
- {
17
- title: 'Incorrect',
18
- code: /* GraphQL */ `
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 no_duplicate_fields_exports = {};
20
+ __export(no_duplicate_fields_exports, {
21
+ rule: () => rule
22
+ });
23
+ module.exports = __toCommonJS(no_duplicate_fields_exports);
24
+ var import_graphql = require("graphql");
25
+ const RULE_ID = "no-duplicate-fields";
26
+ const rule = {
27
+ meta: {
28
+ type: "suggestion",
29
+ hasSuggestions: true,
30
+ docs: {
31
+ description: "Checks for duplicate fields in selection set, variables in operation definition, or in arguments set of a field.",
32
+ category: "Operations",
33
+ url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
34
+ recommended: true,
35
+ examples: [
36
+ {
37
+ title: "Incorrect",
38
+ code: (
39
+ /* GraphQL */
40
+ `
19
41
  query {
20
42
  user {
21
43
  name
@@ -23,11 +45,14 @@ exports.rule = {
23
45
  name # duplicate field
24
46
  }
25
47
  }
26
- `,
27
- },
28
- {
29
- title: 'Incorrect',
30
- code: /* GraphQL */ `
48
+ `
49
+ )
50
+ },
51
+ {
52
+ title: "Incorrect",
53
+ code: (
54
+ /* GraphQL */
55
+ `
31
56
  query {
32
57
  users(
33
58
  first: 100
@@ -38,11 +63,14 @@ exports.rule = {
38
63
  id
39
64
  }
40
65
  }
41
- `,
42
- },
43
- {
44
- title: 'Incorrect',
45
- code: /* GraphQL */ `
66
+ `
67
+ )
68
+ },
69
+ {
70
+ title: "Incorrect",
71
+ code: (
72
+ /* GraphQL */
73
+ `
46
74
  query (
47
75
  $first: Int!
48
76
  $first: Int! # duplicate variable
@@ -51,62 +79,68 @@ exports.rule = {
51
79
  id
52
80
  }
53
81
  }
54
- `,
55
- },
56
- ],
57
- },
58
- messages: {
59
- [RULE_ID]: '{{ type }} `{{ fieldName }}` defined multiple times.',
60
- },
61
- schema: [],
82
+ `
83
+ )
84
+ }
85
+ ]
62
86
  },
63
- create(context) {
64
- function checkNode(usedFields, node) {
65
- const fieldName = node.value;
66
- if (usedFields.has(fieldName)) {
67
- const { parent } = node;
68
- context.report({
69
- node,
70
- messageId: RULE_ID,
71
- data: {
72
- type: parent.type,
73
- fieldName,
74
- },
75
- suggest: [
76
- {
77
- desc: `Remove \`${fieldName}\` ${parent.type.toLowerCase()}`,
78
- fix(fixer) {
79
- return fixer.remove((parent.type === graphql_1.Kind.VARIABLE ? parent.parent : parent));
80
- },
81
- },
82
- ],
83
- });
84
- }
85
- else {
86
- usedFields.add(fieldName);
87
+ messages: {
88
+ [RULE_ID]: "{{ type }} `{{ fieldName }}` defined multiple times."
89
+ },
90
+ schema: []
91
+ },
92
+ create(context) {
93
+ function checkNode(usedFields, node) {
94
+ const fieldName = node.value;
95
+ if (usedFields.has(fieldName)) {
96
+ const { parent } = node;
97
+ context.report({
98
+ node,
99
+ messageId: RULE_ID,
100
+ data: {
101
+ type: parent.type,
102
+ fieldName
103
+ },
104
+ suggest: [
105
+ {
106
+ desc: `Remove \`${fieldName}\` ${parent.type.toLowerCase()}`,
107
+ fix(fixer) {
108
+ return fixer.remove(
109
+ parent.type === import_graphql.Kind.VARIABLE ? parent.parent : parent
110
+ );
111
+ }
87
112
  }
113
+ ]
114
+ });
115
+ } else {
116
+ usedFields.add(fieldName);
117
+ }
118
+ }
119
+ return {
120
+ OperationDefinition(node) {
121
+ const set = /* @__PURE__ */ new Set();
122
+ for (const varDef of node.variableDefinitions || []) {
123
+ checkNode(set, varDef.variable.name);
88
124
  }
89
- return {
90
- OperationDefinition(node) {
91
- const set = new Set();
92
- for (const varDef of node.variableDefinitions || []) {
93
- checkNode(set, varDef.variable.name);
94
- }
95
- },
96
- Field(node) {
97
- const set = new Set();
98
- for (const arg of node.arguments || []) {
99
- checkNode(set, arg.name);
100
- }
101
- },
102
- SelectionSet(node) {
103
- const set = new Set();
104
- for (const selection of node.selections) {
105
- if (selection.kind === graphql_1.Kind.FIELD) {
106
- checkNode(set, selection.alias || selection.name);
107
- }
108
- }
109
- },
110
- };
111
- },
125
+ },
126
+ Field(node) {
127
+ const set = /* @__PURE__ */ new Set();
128
+ for (const arg of node.arguments || []) {
129
+ checkNode(set, arg.name);
130
+ }
131
+ },
132
+ SelectionSet(node) {
133
+ const set = /* @__PURE__ */ new Set();
134
+ for (const selection of node.selections) {
135
+ if (selection.kind === import_graphql.Kind.FIELD) {
136
+ checkNode(set, selection.alias || selection.name);
137
+ }
138
+ }
139
+ }
140
+ };
141
+ }
112
142
  };
143
+ // Annotate the CommonJS export names for ESM import in node:
144
+ 0 && (module.exports = {
145
+ rule
146
+ });
@@ -0,0 +1,13 @@
1
+ import { i as GraphQLESLintRule } from '../types-e3367e3c.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 RULE_ID = "HASHTAG_COMMENT";
11
+ declare const rule: GraphQLESLintRule;
12
+
13
+ export { RULE_ID, rule };
@@ -1,45 +1,74 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.rule = exports.RULE_ID = void 0;
4
- const graphql_1 = require("graphql");
5
- const utils_js_1 = require("../utils.js");
6
- exports.RULE_ID = 'HASHTAG_COMMENT';
7
- exports.rule = {
8
- meta: {
9
- type: 'suggestion',
10
- hasSuggestions: true,
11
- schema: [],
12
- messages: {
13
- [exports.RULE_ID]: 'Unexpected GraphQL descriptions as hashtag `#` for {{ nodeName }}.\nPrefer using `"""` for multiline, or `"` for a single line description.',
14
- },
15
- docs: {
16
- description: 'Requires to use `"""` or `"` for adding a GraphQL description instead of `#`.\nAllows to use hashtag for comments, as long as it\'s not attached to an AST definition.',
17
- category: 'Schema',
18
- url: 'https://the-guild.dev/graphql/eslint/rules/no-hashtag-description',
19
- examples: [
20
- {
21
- title: 'Incorrect',
22
- code: /* GraphQL */ `
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 no_hashtag_description_exports = {};
20
+ __export(no_hashtag_description_exports, {
21
+ RULE_ID: () => RULE_ID,
22
+ rule: () => rule
23
+ });
24
+ module.exports = __toCommonJS(no_hashtag_description_exports);
25
+ var import_graphql = require("graphql");
26
+ var import_utils = require("../utils.js");
27
+ const RULE_ID = "HASHTAG_COMMENT";
28
+ const rule = {
29
+ meta: {
30
+ type: "suggestion",
31
+ hasSuggestions: true,
32
+ schema: [],
33
+ messages: {
34
+ [RULE_ID]: 'Unexpected GraphQL descriptions as hashtag `#` for {{ nodeName }}.\nPrefer using `"""` for multiline, or `"` for a single line description.'
35
+ },
36
+ docs: {
37
+ description: 'Requires to use `"""` or `"` for adding a GraphQL description instead of `#`.\nAllows to use hashtag for comments, as long as it\'s not attached to an AST definition.',
38
+ category: "Schema",
39
+ url: "https://the-guild.dev/graphql/eslint/rules/no-hashtag-description",
40
+ examples: [
41
+ {
42
+ title: "Incorrect",
43
+ code: (
44
+ /* GraphQL */
45
+ `
23
46
  # Represents a user
24
47
  type User {
25
48
  id: ID!
26
49
  name: String
27
50
  }
28
- `,
29
- },
30
- {
31
- title: 'Correct',
32
- code: /* GraphQL */ `
51
+ `
52
+ )
53
+ },
54
+ {
55
+ title: "Correct",
56
+ code: (
57
+ /* GraphQL */
58
+ `
33
59
  " Represents a user "
34
60
  type User {
35
61
  id: ID!
36
62
  name: String
37
63
  }
38
- `,
39
- },
40
- {
41
- title: 'Correct',
42
- code: /* GraphQL */ `
64
+ `
65
+ )
66
+ },
67
+ {
68
+ title: "Correct",
69
+ code: (
70
+ /* GraphQL */
71
+ `
43
72
  # This file defines the basic User type.
44
73
  # This comment is valid because it's not attached specifically to an AST object.
45
74
 
@@ -48,56 +77,64 @@ exports.rule = {
48
77
  id: ID! # This one is also valid, since it comes after the AST object
49
78
  name: String
50
79
  }
51
- `,
80
+ `
81
+ )
82
+ }
83
+ ],
84
+ recommended: true
85
+ }
86
+ },
87
+ create(context) {
88
+ const selector = "Document[definitions.0.kind!=/^(OperationDefinition|FragmentDefinition)$/]";
89
+ return {
90
+ [selector](node) {
91
+ const rawNode = node.rawNode();
92
+ let token = rawNode.loc.startToken;
93
+ while (token) {
94
+ const { kind, prev, next, value, line, column } = token;
95
+ if (kind === import_graphql.TokenKind.COMMENT && prev && next) {
96
+ const isEslintComment = value.trimStart().startsWith("eslint");
97
+ const linesAfter = next.line - line;
98
+ if (!isEslintComment && line !== prev.line && next.kind === import_graphql.TokenKind.NAME && linesAfter < 2) {
99
+ const sourceCode = context.getSourceCode();
100
+ const { tokens } = sourceCode.ast;
101
+ const t = tokens.find(
102
+ (token2) => token2.loc.start.line === next.line && token2.loc.start.column === next.column - 1
103
+ );
104
+ const nextNode = sourceCode.getNodeByRangeIndex(t.range[1] + 1);
105
+ context.report({
106
+ messageId: RULE_ID,
107
+ data: {
108
+ nodeName: (0, import_utils.getNodeName)(
109
+ "name" in nextNode ? nextNode : nextNode.parent
110
+ )
52
111
  },
53
- ],
54
- recommended: true,
55
- },
56
- },
57
- create(context) {
58
- const selector = 'Document[definitions.0.kind!=/^(OperationDefinition|FragmentDefinition)$/]';
59
- return {
60
- [selector](node) {
61
- const rawNode = node.rawNode();
62
- let token = rawNode.loc.startToken;
63
- while (token) {
64
- const { kind, prev, next, value, line, column } = token;
65
- if (kind === graphql_1.TokenKind.COMMENT && prev && next) {
66
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion -- TODO: remove `!` when drop support of graphql@15
67
- const isEslintComment = value.trimStart().startsWith('eslint');
68
- const linesAfter = next.line - line;
69
- if (!isEslintComment &&
70
- line !== prev.line &&
71
- next.kind === graphql_1.TokenKind.NAME &&
72
- linesAfter < 2) {
73
- const sourceCode = context.getSourceCode();
74
- const { tokens } = sourceCode.ast;
75
- const t = tokens.find(token => token.loc.start.line === next.line && token.loc.start.column === next.column - 1);
76
- const nextNode = sourceCode.getNodeByRangeIndex(t.range[1] + 1);
77
- context.report({
78
- messageId: exports.RULE_ID,
79
- data: {
80
- nodeName: (0, utils_js_1.getNodeName)('name' in nextNode ? nextNode : nextNode.parent),
81
- },
82
- loc: {
83
- line,
84
- column: column - 1,
85
- },
86
- suggest: ['"""', '"'].map(descriptionSyntax => ({
87
- desc: `Replace with \`${descriptionSyntax}\` description syntax`,
88
- fix: fixer => fixer.replaceTextRange([token.start, token.end],
89
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion -- TODO: remove `!` when drop support of graphql@15
90
- [descriptionSyntax, value.trim(), descriptionSyntax].join('')),
91
- })),
92
- });
93
- }
94
- }
95
- if (!next) {
96
- break;
97
- }
98
- token = next;
99
- }
100
- },
101
- };
102
- },
112
+ loc: {
113
+ line,
114
+ column: column - 1
115
+ },
116
+ suggest: ['"""', '"'].map((descriptionSyntax) => ({
117
+ desc: `Replace with \`${descriptionSyntax}\` description syntax`,
118
+ fix: (fixer) => fixer.replaceTextRange(
119
+ [token.start, token.end],
120
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion -- TODO: remove `!` when drop support of graphql@15
121
+ [descriptionSyntax, value.trim(), descriptionSyntax].join("")
122
+ )
123
+ }))
124
+ });
125
+ }
126
+ }
127
+ if (!next) {
128
+ break;
129
+ }
130
+ token = next;
131
+ }
132
+ }
133
+ };
134
+ }
103
135
  };
136
+ // Annotate the CommonJS export names for ESM import in node:
137
+ 0 && (module.exports = {
138
+ RULE_ID,
139
+ rule
140
+ });
@@ -0,0 +1,12 @@
1
+ import { i as GraphQLESLintRule } from '../types-e3367e3c.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 rule: GraphQLESLintRule;
11
+
12
+ export { rule };
@@ -1,21 +1,43 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.rule = void 0;
4
- const path_1 = require("path");
5
- const graphql_1 = require("graphql");
6
- const utils_js_1 = require("../utils.js");
7
- const RULE_ID = 'no-one-place-fragments';
8
- exports.rule = {
9
- meta: {
10
- type: 'suggestion',
11
- docs: {
12
- category: 'Operations',
13
- description: 'Disallow fragments that are used only in one place.',
14
- url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
15
- examples: [
16
- {
17
- title: 'Incorrect',
18
- code: /* GraphQL */ `
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 no_one_place_fragments_exports = {};
20
+ __export(no_one_place_fragments_exports, {
21
+ rule: () => rule
22
+ });
23
+ module.exports = __toCommonJS(no_one_place_fragments_exports);
24
+ var import_path = require("path");
25
+ var import_graphql = require("graphql");
26
+ var import_utils = require("../utils.js");
27
+ const RULE_ID = "no-one-place-fragments";
28
+ const rule = {
29
+ meta: {
30
+ type: "suggestion",
31
+ docs: {
32
+ category: "Operations",
33
+ description: "Disallow fragments that are used only in one place.",
34
+ url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
35
+ examples: [
36
+ {
37
+ title: "Incorrect",
38
+ code: (
39
+ /* GraphQL */
40
+ `
19
41
  fragment UserFields on User {
20
42
  id
21
43
  }
@@ -25,11 +47,14 @@ exports.rule = {
25
47
  ...UserFields
26
48
  }
27
49
  }
28
- `,
29
- },
30
- {
31
- title: 'Correct',
32
- code: /* GraphQL */ `
50
+ `
51
+ )
52
+ },
53
+ {
54
+ title: "Correct",
55
+ code: (
56
+ /* GraphQL */
57
+ `
33
58
  fragment UserFields on User {
34
59
  id
35
60
  }
@@ -42,42 +67,47 @@ exports.rule = {
42
67
  }
43
68
  }
44
69
  }
45
- `,
46
- },
47
- ],
48
- requiresSiblings: true,
49
- },
50
- messages: {
51
- [RULE_ID]: 'Fragment `{{fragmentName}}` used only once. Inline him in "{{filePath}}".',
52
- },
53
- schema: [],
54
- },
55
- create(context) {
56
- const operations = (0, utils_js_1.requireSiblingsOperations)(RULE_ID, context);
57
- const allDocuments = [...operations.getOperations(), ...operations.getFragments()];
58
- const usedFragmentsMap = Object.create(null);
59
- for (const { document, filePath } of allDocuments) {
60
- const relativeFilePath = (0, path_1.relative)(utils_js_1.CWD, filePath);
61
- (0, graphql_1.visit)(document, {
62
- FragmentSpread({ name }) {
63
- const spreadName = name.value;
64
- usedFragmentsMap[spreadName] || (usedFragmentsMap[spreadName] = []);
65
- usedFragmentsMap[spreadName].push(relativeFilePath);
66
- },
67
- });
70
+ `
71
+ )
68
72
  }
69
- return {
70
- 'FragmentDefinition > Name'(node) {
71
- const fragmentName = node.value;
72
- const fragmentUsage = usedFragmentsMap[fragmentName];
73
- if (fragmentUsage.length === 1) {
74
- context.report({
75
- node,
76
- messageId: RULE_ID,
77
- data: { fragmentName, filePath: fragmentUsage[0] },
78
- });
79
- }
80
- },
81
- };
73
+ ],
74
+ requiresSiblings: true
75
+ },
76
+ messages: {
77
+ [RULE_ID]: 'Fragment `{{fragmentName}}` used only once. Inline him in "{{filePath}}".'
82
78
  },
79
+ schema: []
80
+ },
81
+ create(context) {
82
+ const operations = (0, import_utils.requireSiblingsOperations)(RULE_ID, context);
83
+ const allDocuments = [...operations.getOperations(), ...operations.getFragments()];
84
+ const usedFragmentsMap = /* @__PURE__ */ Object.create(null);
85
+ for (const { document, filePath } of allDocuments) {
86
+ const relativeFilePath = (0, import_path.relative)(import_utils.CWD, filePath);
87
+ (0, import_graphql.visit)(document, {
88
+ FragmentSpread({ name }) {
89
+ const spreadName = name.value;
90
+ usedFragmentsMap[spreadName] ||= [];
91
+ usedFragmentsMap[spreadName].push(relativeFilePath);
92
+ }
93
+ });
94
+ }
95
+ return {
96
+ "FragmentDefinition > Name"(node) {
97
+ const fragmentName = node.value;
98
+ const fragmentUsage = usedFragmentsMap[fragmentName];
99
+ if (fragmentUsage.length === 1) {
100
+ context.report({
101
+ node,
102
+ messageId: RULE_ID,
103
+ data: { fragmentName, filePath: fragmentUsage[0] }
104
+ });
105
+ }
106
+ }
107
+ };
108
+ }
83
109
  };
110
+ // Annotate the CommonJS export names for ESM import in node:
111
+ 0 && (module.exports = {
112
+ rule
113
+ });
@@ -1,5 +1,12 @@
1
1
  import { FromSchema } from 'json-schema-to-ts';
2
- import { GraphQLESLintRule } from '../types.js';
2
+ import { i as GraphQLESLintRule } from '../types-e3367e3c.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
+
3
10
  declare const schema: {
4
11
  readonly type: "array";
5
12
  readonly minItems: 1;
@@ -20,6 +27,7 @@ declare const schema: {
20
27
  };
21
28
  };
22
29
  };
23
- export type RuleOptions = FromSchema<typeof schema>;
24
- export declare const rule: GraphQLESLintRule<RuleOptions>;
25
- export {};
30
+ type RuleOptions = FromSchema<typeof schema>;
31
+ declare const rule: GraphQLESLintRule<RuleOptions>;
32
+
33
+ export { RuleOptions, rule };