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

Sign up to get free protection for your applications and to get access to all the features.
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 };