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

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,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 };