@graphql-eslint/eslint-plugin 3.19.3 → 3.20.0-alpha-20230703155329-a20556f

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,41 +1,70 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.rule = void 0;
4
- const tslib_1 = require("tslib");
5
- const graphql_1 = require("graphql");
6
- const graphql_depth_limit_1 = tslib_1.__importDefault(require("graphql-depth-limit"));
7
- const utils_js_1 = require("../utils.js");
8
- const RULE_ID = 'selection-set-depth';
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 selection_set_depth_exports = {};
30
+ __export(selection_set_depth_exports, {
31
+ rule: () => rule
32
+ });
33
+ module.exports = __toCommonJS(selection_set_depth_exports);
34
+ var import_graphql = require("graphql");
35
+ var import_graphql_depth_limit = __toESM(require("graphql-depth-limit"));
36
+ var import_utils = require("../utils.js");
37
+ const RULE_ID = "selection-set-depth";
9
38
  const schema = {
10
- type: 'array',
11
- minItems: 1,
12
- maxItems: 1,
13
- items: {
14
- type: 'object',
15
- additionalProperties: false,
16
- required: ['maxDepth'],
17
- properties: {
18
- maxDepth: {
19
- type: 'number',
20
- },
21
- ignore: utils_js_1.ARRAY_DEFAULT_OPTIONS,
22
- },
23
- },
39
+ type: "array",
40
+ minItems: 1,
41
+ maxItems: 1,
42
+ items: {
43
+ type: "object",
44
+ additionalProperties: false,
45
+ required: ["maxDepth"],
46
+ properties: {
47
+ maxDepth: {
48
+ type: "number"
49
+ },
50
+ ignore: import_utils.ARRAY_DEFAULT_OPTIONS
51
+ }
52
+ }
24
53
  };
25
- exports.rule = {
26
- meta: {
27
- type: 'suggestion',
28
- hasSuggestions: true,
29
- docs: {
30
- category: 'Operations',
31
- description: 'Limit the complexity of the GraphQL operations solely by their depth. Based on [graphql-depth-limit](https://npmjs.com/package/graphql-depth-limit).',
32
- url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
33
- requiresSiblings: true,
34
- examples: [
35
- {
36
- title: 'Incorrect',
37
- usage: [{ maxDepth: 1 }],
38
- code: `
54
+ const rule = {
55
+ meta: {
56
+ type: "suggestion",
57
+ hasSuggestions: true,
58
+ docs: {
59
+ category: "Operations",
60
+ description: "Limit the complexity of the GraphQL operations solely by their depth. Based on [graphql-depth-limit](https://npmjs.com/package/graphql-depth-limit).",
61
+ url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
62
+ requiresSiblings: true,
63
+ examples: [
64
+ {
65
+ title: "Incorrect",
66
+ usage: [{ maxDepth: 1 }],
67
+ code: `
39
68
  query deep2 {
40
69
  viewer { # Level 0
41
70
  albums { # Level 1
@@ -43,12 +72,12 @@ exports.rule = {
43
72
  }
44
73
  }
45
74
  }
46
- `,
47
- },
48
- {
49
- title: 'Correct',
50
- usage: [{ maxDepth: 4 }],
51
- code: `
75
+ `
76
+ },
77
+ {
78
+ title: "Correct",
79
+ usage: [{ maxDepth: 4 }],
80
+ code: `
52
81
  query deep2 {
53
82
  viewer { # Level 0
54
83
  albums { # Level 1
@@ -56,12 +85,12 @@ exports.rule = {
56
85
  }
57
86
  }
58
87
  }
59
- `,
60
- },
61
- {
62
- title: 'Correct (ignored field)',
63
- usage: [{ maxDepth: 1, ignore: ['albums'] }],
64
- code: `
88
+ `
89
+ },
90
+ {
91
+ title: "Correct (ignored field)",
92
+ usage: [{ maxDepth: 1, ignore: ["albums"] }],
93
+ code: `
65
94
  query deep2 {
66
95
  viewer { # Level 0
67
96
  albums { # Level 1
@@ -69,67 +98,78 @@ exports.rule = {
69
98
  }
70
99
  }
71
100
  }
72
- `,
73
- },
74
- ],
75
- recommended: true,
76
- configOptions: [{ maxDepth: 7 }],
77
- },
78
- schema,
101
+ `
102
+ }
103
+ ],
104
+ recommended: true,
105
+ configOptions: [{ maxDepth: 7 }]
79
106
  },
80
- create(context) {
81
- let siblings = null;
107
+ schema
108
+ },
109
+ create(context) {
110
+ let siblings = null;
111
+ try {
112
+ siblings = (0, import_utils.requireSiblingsOperations)(RULE_ID, context);
113
+ } catch {
114
+ import_utils.logger.warn(
115
+ `Rule "${RULE_ID}" works best with siblings operations loaded. For more info: https://bit.ly/graphql-eslint-operations`
116
+ );
117
+ }
118
+ const { maxDepth, ignore = [] } = context.options[0];
119
+ const checkFn = (0, import_graphql_depth_limit.default)(maxDepth, { ignore });
120
+ return {
121
+ "OperationDefinition, FragmentDefinition"(node) {
82
122
  try {
83
- siblings = (0, utils_js_1.requireSiblingsOperations)(RULE_ID, context);
84
- }
85
- catch (_a) {
86
- utils_js_1.logger.warn(`Rule "${RULE_ID}" works best with siblings operations loaded. For more info: https://bit.ly/graphql-eslint-operations`);
87
- }
88
- const { maxDepth, ignore = [] } = context.options[0];
89
- const checkFn = (0, graphql_depth_limit_1.default)(maxDepth, { ignore });
90
- return {
91
- 'OperationDefinition, FragmentDefinition'(node) {
92
- try {
93
- const rawNode = node.rawNode();
94
- const fragmentsInUse = siblings ? siblings.getFragmentsInUse(rawNode) : [];
95
- const document = {
96
- kind: graphql_1.Kind.DOCUMENT,
97
- definitions: [rawNode, ...fragmentsInUse],
98
- };
99
- checkFn({
100
- getDocument: () => document,
101
- reportError(error) {
102
- const { line, column } = error.locations[0];
103
- const ancestors = context.getAncestors();
104
- const token = ancestors[0].tokens.find(token => token.loc.start.line === line && token.loc.start.column === column - 1);
105
- context.report({
106
- loc: {
107
- line,
108
- column: column - 1,
109
- },
110
- message: error.message,
111
- // Don't provide suggestions for fragment that can be in a separate file
112
- ...(token && {
113
- suggest: [
114
- {
115
- desc: 'Remove selections',
116
- fix(fixer) {
117
- const sourceCode = context.getSourceCode();
118
- const foundNode = sourceCode.getNodeByRangeIndex(token.range[0]);
119
- const parentNode = foundNode.parent.parent;
120
- return fixer.remove(foundNode.kind === 'Name' ? parentNode.parent : parentNode);
121
- },
122
- },
123
- ],
124
- }),
125
- });
126
- },
127
- });
128
- }
129
- catch (e) {
130
- utils_js_1.logger.warn(`Rule "${RULE_ID}" check failed due to a missing siblings operations. For more info: https://bit.ly/graphql-eslint-operations`, e);
123
+ const rawNode = node.rawNode();
124
+ const fragmentsInUse = siblings ? siblings.getFragmentsInUse(rawNode) : [];
125
+ const document = {
126
+ kind: import_graphql.Kind.DOCUMENT,
127
+ definitions: [rawNode, ...fragmentsInUse]
128
+ };
129
+ checkFn({
130
+ getDocument: () => document,
131
+ reportError(error) {
132
+ const { line, column } = error.locations[0];
133
+ const ancestors = context.getAncestors();
134
+ const token = ancestors[0].tokens.find(
135
+ (token2) => token2.loc.start.line === line && token2.loc.start.column === column - 1
136
+ );
137
+ context.report({
138
+ loc: {
139
+ line,
140
+ column: column - 1
141
+ },
142
+ message: error.message,
143
+ // Don't provide suggestions for fragment that can be in a separate file
144
+ ...token && {
145
+ suggest: [
146
+ {
147
+ desc: "Remove selections",
148
+ fix(fixer) {
149
+ const sourceCode = context.getSourceCode();
150
+ const foundNode = sourceCode.getNodeByRangeIndex(token.range[0]);
151
+ const parentNode = foundNode.parent.parent;
152
+ return fixer.remove(
153
+ foundNode.kind === "Name" ? parentNode.parent : parentNode
154
+ );
155
+ }
156
+ }
157
+ ]
131
158
  }
132
- },
133
- };
134
- },
159
+ });
160
+ }
161
+ });
162
+ } catch (e) {
163
+ import_utils.logger.warn(
164
+ `Rule "${RULE_ID}" check failed due to a missing siblings operations. For more info: https://bit.ly/graphql-eslint-operations`,
165
+ e
166
+ );
167
+ }
168
+ }
169
+ };
170
+ }
135
171
  };
172
+ // Annotate the CommonJS export names for ESM import in node:
173
+ 0 && (module.exports = {
174
+ rule
175
+ });
@@ -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 maxItems: 1;
@@ -52,6 +59,7 @@ declare const schema: {
52
59
  };
53
60
  };
54
61
  };
55
- export type RuleOptions = FromSchema<typeof schema>;
56
- export declare const rule: GraphQLESLintRule<RuleOptions>;
57
- export {};
62
+ type RuleOptions = FromSchema<typeof schema>;
63
+ declare const rule: GraphQLESLintRule<RuleOptions>;
64
+
65
+ export { RuleOptions, rule };
@@ -1,61 +1,83 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.rule = void 0;
4
- const graphql_1 = require("graphql");
5
- const utils_js_1 = require("../utils.js");
6
- const RULE_ID = 'strict-id-in-types';
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 strict_id_in_types_exports = {};
20
+ __export(strict_id_in_types_exports, {
21
+ rule: () => rule
22
+ });
23
+ module.exports = __toCommonJS(strict_id_in_types_exports);
24
+ var import_graphql = require("graphql");
25
+ var import_utils = require("../utils.js");
26
+ const RULE_ID = "strict-id-in-types";
7
27
  const schema = {
8
- type: 'array',
9
- maxItems: 1,
10
- items: {
11
- type: 'object',
28
+ type: "array",
29
+ maxItems: 1,
30
+ items: {
31
+ type: "object",
32
+ additionalProperties: false,
33
+ properties: {
34
+ acceptedIdNames: {
35
+ ...import_utils.ARRAY_DEFAULT_OPTIONS,
36
+ default: ["id"]
37
+ },
38
+ acceptedIdTypes: {
39
+ ...import_utils.ARRAY_DEFAULT_OPTIONS,
40
+ default: ["ID"]
41
+ },
42
+ exceptions: {
43
+ type: "object",
12
44
  additionalProperties: false,
13
45
  properties: {
14
- acceptedIdNames: {
15
- ...utils_js_1.ARRAY_DEFAULT_OPTIONS,
16
- default: ['id'],
17
- },
18
- acceptedIdTypes: {
19
- ...utils_js_1.ARRAY_DEFAULT_OPTIONS,
20
- default: ['ID'],
21
- },
22
- exceptions: {
23
- type: 'object',
24
- additionalProperties: false,
25
- properties: {
26
- types: {
27
- ...utils_js_1.ARRAY_DEFAULT_OPTIONS,
28
- description: 'This is used to exclude types with names that match one of the specified values.',
29
- },
30
- suffixes: {
31
- ...utils_js_1.ARRAY_DEFAULT_OPTIONS,
32
- description: 'This is used to exclude types with names with suffixes that match one of the specified values.',
33
- },
34
- },
35
- },
36
- },
37
- },
46
+ types: {
47
+ ...import_utils.ARRAY_DEFAULT_OPTIONS,
48
+ description: "This is used to exclude types with names that match one of the specified values."
49
+ },
50
+ suffixes: {
51
+ ...import_utils.ARRAY_DEFAULT_OPTIONS,
52
+ description: "This is used to exclude types with names with suffixes that match one of the specified values."
53
+ }
54
+ }
55
+ }
56
+ }
57
+ }
38
58
  };
39
- exports.rule = {
40
- meta: {
41
- type: 'suggestion',
42
- docs: {
43
- description: 'Requires output types to have one unique identifier unless they do not have a logical one. Exceptions can be used to ignore output types that do not have unique identifiers.',
44
- category: 'Schema',
45
- recommended: true,
46
- url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
47
- requiresSchema: true,
48
- examples: [
49
- {
50
- title: 'Incorrect',
51
- usage: [
52
- {
53
- acceptedIdNames: ['id', '_id'],
54
- acceptedIdTypes: ['ID'],
55
- exceptions: { suffixes: ['Payload'] },
56
- },
57
- ],
58
- code: /* GraphQL */ `
59
+ const rule = {
60
+ meta: {
61
+ type: "suggestion",
62
+ docs: {
63
+ description: "Requires output types to have one unique identifier unless they do not have a logical one. Exceptions can be used to ignore output types that do not have unique identifiers.",
64
+ category: "Schema",
65
+ recommended: true,
66
+ url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
67
+ requiresSchema: true,
68
+ examples: [
69
+ {
70
+ title: "Incorrect",
71
+ usage: [
72
+ {
73
+ acceptedIdNames: ["id", "_id"],
74
+ acceptedIdTypes: ["ID"],
75
+ exceptions: { suffixes: ["Payload"] }
76
+ }
77
+ ],
78
+ code: (
79
+ /* GraphQL */
80
+ `
59
81
  # Incorrect field name
60
82
  type InvalidFieldName {
61
83
  key: ID!
@@ -76,18 +98,21 @@ exports.rule = {
76
98
  id: ID!
77
99
  _id: ID!
78
100
  }
79
- `,
80
- },
81
- {
82
- title: 'Correct',
83
- usage: [
84
- {
85
- acceptedIdNames: ['id', '_id'],
86
- acceptedIdTypes: ['ID'],
87
- exceptions: { types: ['Error'], suffixes: ['Payload'] },
88
- },
89
- ],
90
- code: /* GraphQL */ `
101
+ `
102
+ )
103
+ },
104
+ {
105
+ title: "Correct",
106
+ usage: [
107
+ {
108
+ acceptedIdNames: ["id", "_id"],
109
+ acceptedIdTypes: ["ID"],
110
+ exceptions: { types: ["Error"], suffixes: ["Payload"] }
111
+ }
112
+ ],
113
+ code: (
114
+ /* GraphQL */
115
+ `
91
116
  type User {
92
117
  id: ID!
93
118
  }
@@ -103,62 +128,58 @@ exports.rule = {
103
128
  type Error {
104
129
  message: String!
105
130
  }
106
- `,
107
- },
108
- ],
109
- },
110
- schema,
111
- },
112
- create(context) {
113
- const options = {
114
- acceptedIdNames: ['id'],
115
- acceptedIdTypes: ['ID'],
116
- exceptions: {},
117
- ...context.options[0],
118
- };
119
- const schema = (0, utils_js_1.requireGraphQLSchemaFromContext)(RULE_ID, context);
120
- const rootTypeNames = [
121
- schema.getQueryType(),
122
- schema.getMutationType(),
123
- schema.getSubscriptionType(),
124
- ]
125
- .filter(utils_js_1.truthy)
126
- .map(type => type.name);
127
- const selector = `ObjectTypeDefinition[name.value!=/^(${rootTypeNames.join('|')})$/]`;
128
- return {
129
- [selector](node) {
130
- var _a, _b, _c;
131
- const typeName = node.name.value;
132
- const shouldIgnoreNode = ((_a = options.exceptions.types) === null || _a === void 0 ? void 0 : _a.includes(typeName)) ||
133
- ((_b = options.exceptions.suffixes) === null || _b === void 0 ? void 0 : _b.some(suffix => typeName.endsWith(suffix)));
134
- if (shouldIgnoreNode) {
135
- return;
136
- }
137
- const validIds = (_c = node.fields) === null || _c === void 0 ? void 0 : _c.filter(field => {
138
- const fieldNode = field.rawNode();
139
- const isValidIdName = options.acceptedIdNames.includes(fieldNode.name.value);
140
- // To be a valid type, it must be non-null and one of the accepted types.
141
- let isValidIdType = false;
142
- if (fieldNode.type.kind === graphql_1.Kind.NON_NULL_TYPE &&
143
- fieldNode.type.type.kind === graphql_1.Kind.NAMED_TYPE) {
144
- isValidIdType = options.acceptedIdTypes.includes(fieldNode.type.type.name.value);
145
- }
146
- return isValidIdName && isValidIdType;
147
- });
148
- // Usually, there should be only one unique identifier field per type.
149
- // Some clients allow multiple fields to be used. If more people need this,
150
- // we can extend this rule later.
151
- if ((validIds === null || validIds === void 0 ? void 0 : validIds.length) !== 1) {
152
- const pluralNamesSuffix = options.acceptedIdNames.length > 1 ? 's' : '';
153
- const pluralTypesSuffix = options.acceptedIdTypes.length > 1 ? 's' : '';
154
- context.report({
155
- node: node.name,
156
- message: `${(0, utils_js_1.displayNodeName)(node)} must have exactly one non-nullable unique identifier.
157
- Accepted name${pluralNamesSuffix}: ${(0, utils_js_1.englishJoinWords)(options.acceptedIdNames)}.
158
- Accepted type${pluralTypesSuffix}: ${(0, utils_js_1.englishJoinWords)(options.acceptedIdTypes)}.`,
159
- });
160
- }
161
- },
162
- };
131
+ `
132
+ )
133
+ }
134
+ ]
163
135
  },
136
+ schema
137
+ },
138
+ create(context) {
139
+ const options = {
140
+ acceptedIdNames: ["id"],
141
+ acceptedIdTypes: ["ID"],
142
+ exceptions: {},
143
+ ...context.options[0]
144
+ };
145
+ const schema2 = (0, import_utils.requireGraphQLSchemaFromContext)(RULE_ID, context);
146
+ const rootTypeNames = [
147
+ schema2.getQueryType(),
148
+ schema2.getMutationType(),
149
+ schema2.getSubscriptionType()
150
+ ].filter(import_utils.truthy).map((type) => type.name);
151
+ const selector = `ObjectTypeDefinition[name.value!=/^(${rootTypeNames.join("|")})$/]`;
152
+ return {
153
+ [selector](node) {
154
+ const typeName = node.name.value;
155
+ const shouldIgnoreNode = options.exceptions.types?.includes(typeName) || options.exceptions.suffixes?.some((suffix) => typeName.endsWith(suffix));
156
+ if (shouldIgnoreNode) {
157
+ return;
158
+ }
159
+ const validIds = node.fields?.filter((field) => {
160
+ const fieldNode = field.rawNode();
161
+ const isValidIdName = options.acceptedIdNames.includes(fieldNode.name.value);
162
+ let isValidIdType = false;
163
+ if (fieldNode.type.kind === import_graphql.Kind.NON_NULL_TYPE && fieldNode.type.type.kind === import_graphql.Kind.NAMED_TYPE) {
164
+ isValidIdType = options.acceptedIdTypes.includes(fieldNode.type.type.name.value);
165
+ }
166
+ return isValidIdName && isValidIdType;
167
+ });
168
+ if (validIds?.length !== 1) {
169
+ const pluralNamesSuffix = options.acceptedIdNames.length > 1 ? "s" : "";
170
+ const pluralTypesSuffix = options.acceptedIdTypes.length > 1 ? "s" : "";
171
+ context.report({
172
+ node: node.name,
173
+ message: `${(0, import_utils.displayNodeName)(node)} must have exactly one non-nullable unique identifier.
174
+ Accepted name${pluralNamesSuffix}: ${(0, import_utils.englishJoinWords)(options.acceptedIdNames)}.
175
+ Accepted type${pluralTypesSuffix}: ${(0, import_utils.englishJoinWords)(options.acceptedIdTypes)}.`
176
+ });
177
+ }
178
+ }
179
+ };
180
+ }
164
181
  };
182
+ // Annotate the CommonJS export names for ESM import in node:
183
+ 0 && (module.exports = {
184
+ rule
185
+ });
@@ -0,0 +1,13 @@
1
+ import { ExecutableDefinitionNode } from 'graphql';
2
+ import { GraphQLESTreeNode } from '../estree-converter/types.js';
3
+ import { g as GraphQLESLintRuleContext, i as GraphQLESLintRule } from '../types-e3367e3c.js';
4
+ import 'eslint';
5
+ import 'estree';
6
+ import '@graphql-tools/utils';
7
+ import 'graphql-config';
8
+ import 'json-schema-to-ts';
9
+
10
+ declare const checkNode: (context: GraphQLESLintRuleContext, node: GraphQLESTreeNode<ExecutableDefinitionNode>, ruleId: string) => void;
11
+ declare const rule: GraphQLESLintRule;
12
+
13
+ export { checkNode, rule };