@graphql-eslint/eslint-plugin 4.0.0-alpha-20220821140530-e968cfc → 4.0.0-alpha-20230810155929-e89edf7

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 (346) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +14 -252
  3. package/cjs/cache.d.ts +12 -0
  4. package/cjs/cache.js +53 -0
  5. package/cjs/configs/index.d.ts +174 -0
  6. package/cjs/configs/index.js +40 -0
  7. package/cjs/configs/operations-all.d.ts +23 -0
  8. package/cjs/configs/operations-all.js +28 -0
  9. package/cjs/configs/operations-recommended.d.ts +54 -0
  10. package/{configs/operations-recommended.json → cjs/configs/operations-recommended.js} +19 -15
  11. package/cjs/configs/schema-all.d.ts +24 -0
  12. package/cjs/configs/schema-all.js +24 -0
  13. package/cjs/configs/schema-recommended.d.ts +67 -0
  14. package/cjs/configs/schema-recommended.js +68 -0
  15. package/cjs/configs/schema-relay.d.ts +12 -0
  16. package/{configs/relay.json → cjs/configs/schema-relay.js} +6 -4
  17. package/cjs/documents.d.ts +6 -0
  18. package/cjs/documents.js +66 -0
  19. package/cjs/estree-converter/converter.d.ts +8 -0
  20. package/cjs/estree-converter/converter.js +70 -0
  21. package/cjs/estree-converter/index.d.ts +8 -0
  22. package/cjs/estree-converter/index.js +23 -0
  23. package/cjs/estree-converter/types.d.ts +42 -0
  24. package/cjs/estree-converter/types.js +14 -0
  25. package/cjs/estree-converter/utils.d.ts +17 -0
  26. package/cjs/estree-converter/utils.js +105 -0
  27. package/cjs/flat-configs.d.ts +307 -0
  28. package/cjs/flat-configs.js +55 -0
  29. package/cjs/graphql-config.d.ts +14 -0
  30. package/cjs/graphql-config.js +65 -0
  31. package/cjs/index.d.ts +28 -0
  32. package/cjs/index.js +41 -0
  33. package/cjs/parser.d.ts +13 -0
  34. package/cjs/parser.js +96 -0
  35. package/cjs/processor.d.ts +13 -0
  36. package/cjs/processor.js +95 -0
  37. package/cjs/rules/alphabetize.d.ts +74 -0
  38. package/cjs/rules/alphabetize.js +323 -0
  39. package/cjs/rules/description-style.d.ts +29 -0
  40. package/cjs/rules/description-style.js +102 -0
  41. package/cjs/rules/graphql-js-validation.d.ts +13 -0
  42. package/cjs/rules/graphql-js-validation.js +595 -0
  43. package/cjs/rules/index.d.ts +127 -0
  44. package/cjs/rules/index.js +62 -0
  45. package/cjs/rules/input-name.d.ts +44 -0
  46. package/cjs/rules/input-name.js +154 -0
  47. package/cjs/rules/lone-executable-definition.d.ts +35 -0
  48. package/cjs/rules/lone-executable-definition.js +105 -0
  49. package/cjs/rules/match-document-filename.d.ts +81 -0
  50. package/cjs/rules/match-document-filename.js +251 -0
  51. package/cjs/rules/naming-convention.d.ts +108 -0
  52. package/cjs/rules/naming-convention.js +416 -0
  53. package/cjs/rules/no-anonymous-operations.d.ts +13 -0
  54. package/cjs/rules/no-anonymous-operations.js +91 -0
  55. package/cjs/rules/no-deprecated.d.ts +13 -0
  56. package/cjs/rules/no-deprecated.js +143 -0
  57. package/cjs/rules/no-duplicate-fields.d.ts +13 -0
  58. package/cjs/rules/no-duplicate-fields.js +136 -0
  59. package/cjs/rules/no-hashtag-description.d.ts +14 -0
  60. package/cjs/rules/no-hashtag-description.js +127 -0
  61. package/cjs/rules/no-one-place-fragments.d.ts +13 -0
  62. package/cjs/rules/no-one-place-fragments.js +101 -0
  63. package/cjs/rules/no-root-type.d.ts +34 -0
  64. package/cjs/rules/no-root-type.js +103 -0
  65. package/cjs/rules/no-scalar-result-type-on-mutation.d.ts +13 -0
  66. package/cjs/rules/no-scalar-result-type-on-mutation.js +88 -0
  67. package/cjs/rules/no-typename-prefix.d.ts +13 -0
  68. package/cjs/rules/no-typename-prefix.js +91 -0
  69. package/cjs/rules/no-unreachable-types.d.ts +13 -0
  70. package/cjs/rules/no-unreachable-types.js +177 -0
  71. package/cjs/rules/no-unused-fields.d.ts +13 -0
  72. package/cjs/rules/no-unused-fields.js +132 -0
  73. package/cjs/rules/relay-arguments.d.ts +30 -0
  74. package/cjs/rules/relay-arguments.js +126 -0
  75. package/cjs/rules/relay-connection-types.d.ts +14 -0
  76. package/cjs/rules/relay-connection-types.js +111 -0
  77. package/cjs/rules/relay-edge-types.d.ts +40 -0
  78. package/cjs/rules/relay-edge-types.js +161 -0
  79. package/cjs/rules/relay-page-info.d.ts +13 -0
  80. package/cjs/rules/relay-page-info.js +98 -0
  81. package/cjs/rules/require-deprecation-date.d.ts +27 -0
  82. package/cjs/rules/require-deprecation-date.js +148 -0
  83. package/cjs/rules/require-deprecation-reason.d.ts +13 -0
  84. package/cjs/rules/require-deprecation-reason.js +85 -0
  85. package/cjs/rules/require-description.d.ts +24 -0
  86. package/cjs/rules/require-description.js +179 -0
  87. package/cjs/rules/require-field-of-type-query-in-mutation-result.d.ts +13 -0
  88. package/cjs/rules/require-field-of-type-query-in-mutation-result.js +87 -0
  89. package/cjs/rules/require-import-fragment.d.ts +13 -0
  90. package/cjs/rules/require-import-fragment.js +148 -0
  91. package/cjs/rules/require-nullable-fields-with-oneof.d.ts +13 -0
  92. package/cjs/rules/require-nullable-fields-with-oneof.js +81 -0
  93. package/cjs/rules/require-nullable-result-in-root.d.ts +13 -0
  94. package/cjs/rules/require-nullable-result-in-root.js +99 -0
  95. package/cjs/rules/require-selections.d.ts +45 -0
  96. package/cjs/rules/require-selections.js +198 -0
  97. package/cjs/rules/require-type-pattern-with-oneof.d.ts +13 -0
  98. package/cjs/rules/require-type-pattern-with-oneof.js +83 -0
  99. package/cjs/rules/selection-set-depth.d.ts +37 -0
  100. package/cjs/rules/selection-set-depth.js +159 -0
  101. package/cjs/rules/strict-id-in-types.d.ts +66 -0
  102. package/cjs/rules/strict-id-in-types.js +168 -0
  103. package/cjs/rules/unique-enum-value-names.d.ts +13 -0
  104. package/cjs/rules/unique-enum-value-names.js +91 -0
  105. package/cjs/rules/unique-fragment-name.d.ts +14 -0
  106. package/cjs/rules/unique-fragment-name.js +106 -0
  107. package/cjs/rules/unique-operation-name.d.ts +13 -0
  108. package/cjs/rules/unique-operation-name.js +93 -0
  109. package/cjs/schema.d.ts +13 -0
  110. package/cjs/schema.js +52 -0
  111. package/{sibling-operations.d.ts → cjs/siblings.d.ts} +9 -6
  112. package/cjs/siblings.js +96 -0
  113. package/cjs/types.d.ts +75 -0
  114. package/cjs/types.js +14 -0
  115. package/cjs/utils.d.ts +45 -0
  116. package/cjs/utils.js +188 -0
  117. package/esm/cache.d.mts +12 -0
  118. package/esm/cache.js +25 -0
  119. package/esm/chunk-U3TKCM4X.js +8 -0
  120. package/esm/configs/index.d.mts +174 -0
  121. package/esm/configs/index.js +16 -0
  122. package/esm/configs/operations-all.d.mts +23 -0
  123. package/esm/configs/operations-all.js +35 -0
  124. package/esm/configs/operations-recommended.d.mts +54 -0
  125. package/esm/configs/operations-recommended.js +61 -0
  126. package/esm/configs/schema-all.d.mts +24 -0
  127. package/esm/configs/schema-all.js +31 -0
  128. package/esm/configs/schema-recommended.d.mts +67 -0
  129. package/esm/configs/schema-recommended.js +75 -0
  130. package/esm/configs/schema-relay.d.mts +12 -0
  131. package/esm/configs/schema-relay.js +18 -0
  132. package/esm/documents.d.mts +6 -0
  133. package/esm/documents.js +41 -0
  134. package/esm/estree-converter/converter.d.mts +8 -0
  135. package/esm/estree-converter/converter.js +56 -0
  136. package/esm/estree-converter/index.d.mts +8 -0
  137. package/esm/estree-converter/index.js +3 -0
  138. package/esm/estree-converter/types.d.mts +42 -0
  139. package/esm/estree-converter/types.js +0 -0
  140. package/esm/estree-converter/utils.d.mts +17 -0
  141. package/esm/estree-converter/utils.js +87 -0
  142. package/esm/flat-configs.d.mts +307 -0
  143. package/esm/flat-configs.js +36 -0
  144. package/esm/graphql-config.d.mts +14 -0
  145. package/esm/graphql-config.js +39 -0
  146. package/esm/index.d.mts +28 -0
  147. package/esm/index.js +18 -0
  148. package/esm/package.json +1 -0
  149. package/esm/parser.d.mts +13 -0
  150. package/esm/parser.js +76 -0
  151. package/esm/processor.d.mts +13 -0
  152. package/esm/processor.js +81 -0
  153. package/esm/rules/alphabetize.d.mts +74 -0
  154. package/esm/rules/alphabetize.js +299 -0
  155. package/esm/rules/description-style.d.mts +29 -0
  156. package/esm/rules/description-style.js +82 -0
  157. package/esm/rules/graphql-js-validation.d.mts +13 -0
  158. package/esm/rules/graphql-js-validation.js +618 -0
  159. package/esm/rules/index.d.mts +127 -0
  160. package/esm/rules/index.js +76 -0
  161. package/esm/rules/input-name.d.mts +44 -0
  162. package/esm/rules/input-name.js +136 -0
  163. package/esm/rules/lone-executable-definition.d.mts +35 -0
  164. package/esm/rules/lone-executable-definition.js +86 -0
  165. package/esm/rules/match-document-filename.d.mts +81 -0
  166. package/esm/rules/match-document-filename.js +237 -0
  167. package/esm/rules/naming-convention.d.mts +108 -0
  168. package/esm/rules/naming-convention.js +403 -0
  169. package/esm/rules/no-anonymous-operations.d.mts +13 -0
  170. package/esm/rules/no-anonymous-operations.js +72 -0
  171. package/esm/rules/no-deprecated.d.mts +13 -0
  172. package/esm/rules/no-deprecated.js +124 -0
  173. package/esm/rules/no-duplicate-fields.d.mts +13 -0
  174. package/esm/rules/no-duplicate-fields.js +116 -0
  175. package/esm/rules/no-hashtag-description.d.mts +14 -0
  176. package/esm/rules/no-hashtag-description.js +107 -0
  177. package/esm/rules/no-one-place-fragments.d.mts +13 -0
  178. package/esm/rules/no-one-place-fragments.js +83 -0
  179. package/esm/rules/no-root-type.d.mts +34 -0
  180. package/esm/rules/no-root-type.js +83 -0
  181. package/esm/rules/no-scalar-result-type-on-mutation.d.mts +13 -0
  182. package/esm/rules/no-scalar-result-type-on-mutation.js +69 -0
  183. package/esm/rules/no-typename-prefix.d.mts +13 -0
  184. package/esm/rules/no-typename-prefix.js +71 -0
  185. package/esm/rules/no-unreachable-types.d.mts +13 -0
  186. package/esm/rules/no-unreachable-types.js +156 -0
  187. package/esm/rules/no-unused-fields.d.mts +13 -0
  188. package/esm/rules/no-unused-fields.js +113 -0
  189. package/esm/rules/relay-arguments.d.mts +30 -0
  190. package/esm/rules/relay-arguments.js +107 -0
  191. package/esm/rules/relay-connection-types.d.mts +14 -0
  192. package/esm/rules/relay-connection-types.js +90 -0
  193. package/esm/rules/relay-edge-types.d.mts +40 -0
  194. package/esm/rules/relay-edge-types.js +148 -0
  195. package/esm/rules/relay-page-info.d.mts +13 -0
  196. package/esm/rules/relay-page-info.js +80 -0
  197. package/esm/rules/require-deprecation-date.d.mts +27 -0
  198. package/esm/rules/require-deprecation-date.js +129 -0
  199. package/esm/rules/require-deprecation-reason.d.mts +13 -0
  200. package/esm/rules/require-deprecation-reason.js +66 -0
  201. package/esm/rules/require-description.d.mts +24 -0
  202. package/esm/rules/require-description.js +165 -0
  203. package/esm/rules/require-field-of-type-query-in-mutation-result.d.mts +13 -0
  204. package/esm/rules/require-field-of-type-query-in-mutation-result.js +68 -0
  205. package/esm/rules/require-import-fragment.d.mts +13 -0
  206. package/esm/rules/require-import-fragment.js +121 -0
  207. package/esm/rules/require-nullable-fields-with-oneof.d.mts +13 -0
  208. package/esm/rules/require-nullable-fields-with-oneof.js +62 -0
  209. package/esm/rules/require-nullable-result-in-root.d.mts +13 -0
  210. package/esm/rules/require-nullable-result-in-root.js +80 -0
  211. package/esm/rules/require-selections.d.mts +45 -0
  212. package/esm/rules/require-selections.js +194 -0
  213. package/esm/rules/require-type-pattern-with-oneof.d.mts +13 -0
  214. package/esm/rules/require-type-pattern-with-oneof.js +63 -0
  215. package/esm/rules/selection-set-depth.d.mts +37 -0
  216. package/esm/rules/selection-set-depth.js +133 -0
  217. package/esm/rules/strict-id-in-types.d.mts +66 -0
  218. package/esm/rules/strict-id-in-types.js +155 -0
  219. package/esm/rules/unique-enum-value-names.d.mts +13 -0
  220. package/esm/rules/unique-enum-value-names.js +72 -0
  221. package/esm/rules/unique-fragment-name.d.mts +14 -0
  222. package/esm/rules/unique-fragment-name.js +87 -0
  223. package/esm/rules/unique-operation-name.d.mts +13 -0
  224. package/esm/rules/unique-operation-name.js +73 -0
  225. package/esm/schema.d.mts +13 -0
  226. package/esm/schema.js +27 -0
  227. package/esm/siblings.d.mts +24 -0
  228. package/esm/siblings.js +80 -0
  229. package/esm/types.d.mts +75 -0
  230. package/esm/types.js +0 -0
  231. package/esm/utils.d.mts +45 -0
  232. package/esm/utils.js +144 -0
  233. package/index.browser.mjs +5323 -0
  234. package/package.json +43 -35
  235. package/configs/base.json +0 -4
  236. package/configs/operations-all.json +0 -24
  237. package/configs/schema-all.json +0 -26
  238. package/configs/schema-recommended.json +0 -49
  239. package/docs/README.md +0 -75
  240. package/docs/custom-rules.md +0 -148
  241. package/docs/deprecated-rules.md +0 -21
  242. package/docs/parser-options.md +0 -85
  243. package/docs/parser.md +0 -49
  244. package/docs/rules/alphabetize.md +0 -178
  245. package/docs/rules/description-style.md +0 -54
  246. package/docs/rules/executable-definitions.md +0 -17
  247. package/docs/rules/fields-on-correct-type.md +0 -17
  248. package/docs/rules/fragments-on-composite-type.md +0 -17
  249. package/docs/rules/input-name.md +0 -76
  250. package/docs/rules/known-argument-names.md +0 -17
  251. package/docs/rules/known-directives.md +0 -44
  252. package/docs/rules/known-fragment-names.md +0 -69
  253. package/docs/rules/known-type-names.md +0 -17
  254. package/docs/rules/lone-anonymous-operation.md +0 -17
  255. package/docs/rules/lone-schema-definition.md +0 -17
  256. package/docs/rules/match-document-filename.md +0 -156
  257. package/docs/rules/naming-convention.md +0 -300
  258. package/docs/rules/no-anonymous-operations.md +0 -39
  259. package/docs/rules/no-case-insensitive-enum-values-duplicates.md +0 -43
  260. package/docs/rules/no-deprecated.md +0 -85
  261. package/docs/rules/no-duplicate-fields.md +0 -65
  262. package/docs/rules/no-fragment-cycles.md +0 -17
  263. package/docs/rules/no-hashtag-description.md +0 -59
  264. package/docs/rules/no-root-type.md +0 -53
  265. package/docs/rules/no-scalar-result-type-on-mutation.md +0 -37
  266. package/docs/rules/no-typename-prefix.md +0 -39
  267. package/docs/rules/no-undefined-variables.md +0 -17
  268. package/docs/rules/no-unreachable-types.md +0 -49
  269. package/docs/rules/no-unused-fields.md +0 -62
  270. package/docs/rules/no-unused-fragments.md +0 -17
  271. package/docs/rules/no-unused-variables.md +0 -17
  272. package/docs/rules/one-field-subscriptions.md +0 -17
  273. package/docs/rules/overlapping-fields-can-be-merged.md +0 -17
  274. package/docs/rules/possible-fragment-spread.md +0 -17
  275. package/docs/rules/possible-type-extension.md +0 -15
  276. package/docs/rules/provided-required-arguments.md +0 -17
  277. package/docs/rules/relay-arguments.md +0 -57
  278. package/docs/rules/relay-connection-types.md +0 -42
  279. package/docs/rules/relay-edge-types.md +0 -56
  280. package/docs/rules/relay-page-info.md +0 -32
  281. package/docs/rules/require-deprecation-date.md +0 -56
  282. package/docs/rules/require-deprecation-reason.md +0 -47
  283. package/docs/rules/require-description.md +0 -115
  284. package/docs/rules/require-field-of-type-query-in-mutation-result.md +0 -47
  285. package/docs/rules/require-id-when-available.md +0 -88
  286. package/docs/rules/scalar-leafs.md +0 -17
  287. package/docs/rules/selection-set-depth.md +0 -76
  288. package/docs/rules/strict-id-in-types.md +0 -130
  289. package/docs/rules/unique-argument-names.md +0 -17
  290. package/docs/rules/unique-directive-names-per-location.md +0 -17
  291. package/docs/rules/unique-directive-names.md +0 -17
  292. package/docs/rules/unique-enum-value-names.md +0 -15
  293. package/docs/rules/unique-field-definition-names.md +0 -17
  294. package/docs/rules/unique-fragment-name.md +0 -51
  295. package/docs/rules/unique-input-field-names.md +0 -17
  296. package/docs/rules/unique-operation-name.md +0 -55
  297. package/docs/rules/unique-operation-types.md +0 -17
  298. package/docs/rules/unique-type-names.md +0 -17
  299. package/docs/rules/unique-variable-names.md +0 -17
  300. package/docs/rules/value-literals-of-correct-type.md +0 -17
  301. package/docs/rules/variables-are-input-types.md +0 -17
  302. package/docs/rules/variables-in-allowed-position.md +0 -17
  303. package/estree-converter/converter.d.ts +0 -3
  304. package/estree-converter/index.d.ts +0 -3
  305. package/estree-converter/types.d.ts +0 -40
  306. package/estree-converter/utils.d.ts +0 -13
  307. package/graphql-config.d.ts +0 -3
  308. package/index.d.ts +0 -16
  309. package/index.js +0 -4653
  310. package/index.mjs +0 -4641
  311. package/parser.d.ts +0 -2
  312. package/processor.d.ts +0 -7
  313. package/rules/alphabetize.d.ts +0 -16
  314. package/rules/description-style.d.ts +0 -6
  315. package/rules/graphql-js-validation.d.ts +0 -2
  316. package/rules/index.d.ts +0 -41
  317. package/rules/input-name.d.ts +0 -9
  318. package/rules/match-document-filename.d.ts +0 -18
  319. package/rules/naming-convention.d.ts +0 -37
  320. package/rules/no-anonymous-operations.d.ts +0 -3
  321. package/rules/no-case-insensitive-enum-values-duplicates.d.ts +0 -3
  322. package/rules/no-deprecated.d.ts +0 -3
  323. package/rules/no-duplicate-fields.d.ts +0 -3
  324. package/rules/no-hashtag-description.d.ts +0 -3
  325. package/rules/no-root-type.d.ts +0 -7
  326. package/rules/no-scalar-result-type-on-mutation.d.ts +0 -3
  327. package/rules/no-typename-prefix.d.ts +0 -3
  328. package/rules/no-unreachable-types.d.ts +0 -3
  329. package/rules/no-unused-fields.d.ts +0 -3
  330. package/rules/relay-arguments.d.ts +0 -6
  331. package/rules/relay-connection-types.d.ts +0 -5
  332. package/rules/relay-edge-types.d.ts +0 -8
  333. package/rules/relay-page-info.d.ts +0 -3
  334. package/rules/require-deprecation-date.d.ts +0 -5
  335. package/rules/require-deprecation-reason.d.ts +0 -3
  336. package/rules/require-description.d.ts +0 -11
  337. package/rules/require-field-of-type-query-in-mutation-result.d.ts +0 -3
  338. package/rules/require-id-when-available.d.ts +0 -6
  339. package/rules/selection-set-depth.d.ts +0 -7
  340. package/rules/strict-id-in-types.d.ts +0 -11
  341. package/rules/unique-fragment-name.d.ts +0 -6
  342. package/rules/unique-operation-name.d.ts +0 -3
  343. package/schema.d.ts +0 -3
  344. package/testkit.d.ts +0 -27
  345. package/types.d.ts +0 -79
  346. package/utils.d.ts +0 -39
@@ -0,0 +1,66 @@
1
+ import { FromSchema } from 'json-schema-to-ts';
2
+ import { GraphQLESLintRule } from '../types.js';
3
+ import 'eslint';
4
+ import 'estree';
5
+ import 'graphql';
6
+ import '../siblings.js';
7
+ import '@graphql-tools/utils';
8
+ import '../estree-converter/types.js';
9
+ import 'graphql-config';
10
+
11
+ declare const schema: {
12
+ readonly type: "array";
13
+ readonly maxItems: 1;
14
+ readonly items: {
15
+ readonly type: "object";
16
+ readonly additionalProperties: false;
17
+ readonly properties: {
18
+ readonly acceptedIdNames: {
19
+ readonly default: readonly ["id"];
20
+ readonly type: "array";
21
+ readonly uniqueItems: true;
22
+ readonly minItems: 1;
23
+ readonly items: {
24
+ readonly type: "string";
25
+ };
26
+ };
27
+ readonly acceptedIdTypes: {
28
+ readonly default: readonly ["ID"];
29
+ readonly type: "array";
30
+ readonly uniqueItems: true;
31
+ readonly minItems: 1;
32
+ readonly items: {
33
+ readonly type: "string";
34
+ };
35
+ };
36
+ readonly exceptions: {
37
+ readonly type: "object";
38
+ readonly additionalProperties: false;
39
+ readonly properties: {
40
+ readonly types: {
41
+ readonly description: "This is used to exclude types with names that match one of the specified values.";
42
+ readonly type: "array";
43
+ readonly uniqueItems: true;
44
+ readonly minItems: 1;
45
+ readonly items: {
46
+ readonly type: "string";
47
+ };
48
+ };
49
+ readonly suffixes: {
50
+ readonly description: "This is used to exclude types with names with suffixes that match one of the specified values.";
51
+ readonly type: "array";
52
+ readonly uniqueItems: true;
53
+ readonly minItems: 1;
54
+ readonly items: {
55
+ readonly type: "string";
56
+ };
57
+ };
58
+ };
59
+ };
60
+ };
61
+ };
62
+ };
63
+ type RuleOptions = FromSchema<typeof schema>;
64
+ declare const rule: GraphQLESLintRule<RuleOptions>;
65
+
66
+ export { RuleOptions, rule };
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: !0 });
9
+ }, __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from == "object" || typeof from == "function")
11
+ for (let key of __getOwnPropNames(from))
12
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
+ return to;
14
+ };
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
16
+ var strict_id_in_types_exports = {};
17
+ __export(strict_id_in_types_exports, {
18
+ rule: () => rule
19
+ });
20
+ module.exports = __toCommonJS(strict_id_in_types_exports);
21
+ var import_graphql = require("graphql"), import_utils = require("../utils.js");
22
+ const RULE_ID = "strict-id-in-types", schema = {
23
+ type: "array",
24
+ maxItems: 1,
25
+ items: {
26
+ type: "object",
27
+ additionalProperties: !1,
28
+ properties: {
29
+ acceptedIdNames: {
30
+ ...import_utils.ARRAY_DEFAULT_OPTIONS,
31
+ default: ["id"]
32
+ },
33
+ acceptedIdTypes: {
34
+ ...import_utils.ARRAY_DEFAULT_OPTIONS,
35
+ default: ["ID"]
36
+ },
37
+ exceptions: {
38
+ type: "object",
39
+ additionalProperties: !1,
40
+ properties: {
41
+ types: {
42
+ ...import_utils.ARRAY_DEFAULT_OPTIONS,
43
+ description: "This is used to exclude types with names that match one of the specified values."
44
+ },
45
+ suffixes: {
46
+ ...import_utils.ARRAY_DEFAULT_OPTIONS,
47
+ description: "This is used to exclude types with names with suffixes that match one of the specified values."
48
+ }
49
+ }
50
+ }
51
+ }
52
+ }
53
+ }, rule = {
54
+ meta: {
55
+ type: "suggestion",
56
+ docs: {
57
+ 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.",
58
+ category: "Schema",
59
+ recommended: !0,
60
+ url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
61
+ requiresSchema: !0,
62
+ examples: [
63
+ {
64
+ title: "Incorrect",
65
+ usage: [
66
+ {
67
+ acceptedIdNames: ["id", "_id"],
68
+ acceptedIdTypes: ["ID"],
69
+ exceptions: { suffixes: ["Payload"] }
70
+ }
71
+ ],
72
+ code: (
73
+ /* GraphQL */
74
+ `
75
+ # Incorrect field name
76
+ type InvalidFieldName {
77
+ key: ID!
78
+ }
79
+
80
+ # Incorrect field type
81
+ type InvalidFieldType {
82
+ id: String!
83
+ }
84
+
85
+ # Incorrect exception suffix
86
+ type InvalidSuffixResult {
87
+ data: String!
88
+ }
89
+
90
+ # Too many unique identifiers. Must only contain one.
91
+ type InvalidFieldName {
92
+ id: ID!
93
+ _id: ID!
94
+ }
95
+ `
96
+ )
97
+ },
98
+ {
99
+ title: "Correct",
100
+ usage: [
101
+ {
102
+ acceptedIdNames: ["id", "_id"],
103
+ acceptedIdTypes: ["ID"],
104
+ exceptions: { types: ["Error"], suffixes: ["Payload"] }
105
+ }
106
+ ],
107
+ code: (
108
+ /* GraphQL */
109
+ `
110
+ type User {
111
+ id: ID!
112
+ }
113
+
114
+ type Post {
115
+ _id: ID!
116
+ }
117
+
118
+ type CreateUserPayload {
119
+ data: String!
120
+ }
121
+
122
+ type Error {
123
+ message: String!
124
+ }
125
+ `
126
+ )
127
+ }
128
+ ]
129
+ },
130
+ schema
131
+ },
132
+ create(context) {
133
+ const options = {
134
+ acceptedIdNames: ["id"],
135
+ acceptedIdTypes: ["ID"],
136
+ exceptions: {},
137
+ ...context.options[0]
138
+ }, schema2 = (0, import_utils.requireGraphQLSchemaFromContext)(RULE_ID, context);
139
+ return {
140
+ [`ObjectTypeDefinition[name.value!=/^(${[
141
+ schema2.getQueryType(),
142
+ schema2.getMutationType(),
143
+ schema2.getSubscriptionType()
144
+ ].filter(import_utils.truthy).map((type) => type.name).join("|")})$/]`](node) {
145
+ const typeName = node.name.value;
146
+ if (options.exceptions.types?.includes(typeName) || options.exceptions.suffixes?.some((suffix) => typeName.endsWith(suffix)))
147
+ return;
148
+ if (node.fields?.filter((field) => {
149
+ const fieldNode = field.rawNode(), isValidIdName = options.acceptedIdNames.includes(fieldNode.name.value);
150
+ let isValidIdType = !1;
151
+ return fieldNode.type.kind === import_graphql.Kind.NON_NULL_TYPE && fieldNode.type.type.kind === import_graphql.Kind.NAMED_TYPE && (isValidIdType = options.acceptedIdTypes.includes(fieldNode.type.type.name.value)), isValidIdName && isValidIdType;
152
+ })?.length !== 1) {
153
+ const pluralNamesSuffix = options.acceptedIdNames.length > 1 ? "s" : "", pluralTypesSuffix = options.acceptedIdTypes.length > 1 ? "s" : "";
154
+ context.report({
155
+ node: node.name,
156
+ message: `${(0, import_utils.displayNodeName)(node)} must have exactly one non-nullable unique identifier.
157
+ Accepted name${pluralNamesSuffix}: ${(0, import_utils.englishJoinWords)(options.acceptedIdNames)}.
158
+ Accepted type${pluralTypesSuffix}: ${(0, import_utils.englishJoinWords)(options.acceptedIdTypes)}.`
159
+ });
160
+ }
161
+ }
162
+ };
163
+ }
164
+ };
165
+ // Annotate the CommonJS export names for ESM import in node:
166
+ 0 && (module.exports = {
167
+ rule
168
+ });
@@ -0,0 +1,13 @@
1
+ import { GraphQLESLintRule } from '../types.js';
2
+ import 'eslint';
3
+ import 'estree';
4
+ import 'graphql';
5
+ import 'json-schema-to-ts';
6
+ import '../siblings.js';
7
+ import '@graphql-tools/utils';
8
+ import '../estree-converter/types.js';
9
+ import 'graphql-config';
10
+
11
+ declare const rule: GraphQLESLintRule;
12
+
13
+ export { rule };
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: !0 });
9
+ }, __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from == "object" || typeof from == "function")
11
+ for (let key of __getOwnPropNames(from))
12
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
+ return to;
14
+ };
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
16
+ var unique_enum_value_names_exports = {};
17
+ __export(unique_enum_value_names_exports, {
18
+ rule: () => rule
19
+ });
20
+ module.exports = __toCommonJS(unique_enum_value_names_exports);
21
+ var import_graphql = require("graphql"), import_utils = require("../utils.js");
22
+ const rule = {
23
+ meta: {
24
+ type: "suggestion",
25
+ hasSuggestions: !0,
26
+ docs: {
27
+ url: "https://the-guild.dev/graphql/eslint/rules/unique-enum-value-names",
28
+ category: "Schema",
29
+ recommended: !0,
30
+ description: `A GraphQL enum type is only valid if all its values are uniquely named.
31
+ > This rule disallows case-insensitive enum values duplicates too.`,
32
+ examples: [
33
+ {
34
+ title: "Incorrect",
35
+ code: (
36
+ /* GraphQL */
37
+ `
38
+ enum MyEnum {
39
+ Value
40
+ VALUE
41
+ ValuE
42
+ }
43
+ `
44
+ )
45
+ },
46
+ {
47
+ title: "Correct",
48
+ code: (
49
+ /* GraphQL */
50
+ `
51
+ enum MyEnum {
52
+ Value1
53
+ Value2
54
+ Value3
55
+ }
56
+ `
57
+ )
58
+ }
59
+ ]
60
+ },
61
+ schema: []
62
+ },
63
+ create(context) {
64
+ return {
65
+ [[import_graphql.Kind.ENUM_TYPE_DEFINITION, import_graphql.Kind.ENUM_TYPE_EXTENSION].join(",")](node) {
66
+ const duplicates = node.values?.filter(
67
+ (item, index, array) => array.findIndex((v) => v.name.value.toLowerCase() === item.name.value.toLowerCase()) !== index
68
+ );
69
+ for (const duplicate of duplicates || []) {
70
+ const enumName = duplicate.name.value;
71
+ context.report({
72
+ node: duplicate.name,
73
+ message: `Unexpected case-insensitive enum values duplicates for ${(0, import_utils.getNodeName)(
74
+ duplicate
75
+ )}`,
76
+ suggest: [
77
+ {
78
+ desc: `Remove \`${enumName}\` enum value`,
79
+ fix: (fixer) => fixer.remove(duplicate)
80
+ }
81
+ ]
82
+ });
83
+ }
84
+ }
85
+ };
86
+ }
87
+ };
88
+ // Annotate the CommonJS export names for ESM import in node:
89
+ 0 && (module.exports = {
90
+ rule
91
+ });
@@ -0,0 +1,14 @@
1
+ import { ExecutableDefinitionNode } from 'graphql';
2
+ import { GraphQLESTreeNode } from '../estree-converter/types.js';
3
+ import { GraphQLESLintRuleContext, GraphQLESLintRule } from '../types.js';
4
+ import 'eslint';
5
+ import 'estree';
6
+ import 'json-schema-to-ts';
7
+ import '../siblings.js';
8
+ import '@graphql-tools/utils';
9
+ import 'graphql-config';
10
+
11
+ declare const checkNode: (context: GraphQLESLintRuleContext, node: GraphQLESTreeNode<ExecutableDefinitionNode>, ruleId: string) => void;
12
+ declare const rule: GraphQLESLintRule;
13
+
14
+ export { checkNode, rule };
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: !0 });
9
+ }, __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from == "object" || typeof from == "function")
11
+ for (let key of __getOwnPropNames(from))
12
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
+ return to;
14
+ };
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
16
+ var unique_fragment_name_exports = {};
17
+ __export(unique_fragment_name_exports, {
18
+ checkNode: () => checkNode,
19
+ rule: () => rule
20
+ });
21
+ module.exports = __toCommonJS(unique_fragment_name_exports);
22
+ var import_node_path = require("node:path"), import_graphql = require("graphql"), import_utils = require("../utils.js");
23
+ const RULE_ID = "unique-fragment-name", checkNode = (context, node, ruleId) => {
24
+ const documentName = node.name.value, siblings = (0, import_utils.requireSiblingsOperations)(ruleId, context), siblingDocuments = node.kind === import_graphql.Kind.FRAGMENT_DEFINITION ? siblings.getFragment(documentName) : siblings.getOperation(documentName), filepath = context.filename, conflictingDocuments = siblingDocuments.filter((f) => {
25
+ const isSameName = f.document.name?.value === documentName, isSamePath = (0, import_utils.normalizePath)(f.filePath) === (0, import_utils.normalizePath)(filepath);
26
+ return isSameName && !isSamePath;
27
+ });
28
+ conflictingDocuments.length > 0 && context.report({
29
+ messageId: ruleId,
30
+ data: {
31
+ documentName,
32
+ summary: conflictingDocuments.map((f) => ` ${(0, import_node_path.relative)(import_utils.CWD, f.filePath.replace(import_utils.VIRTUAL_DOCUMENT_REGEX, ""))}`).join(`
33
+ `)
34
+ },
35
+ // @ts-expect-error name will exist
36
+ node: node.name
37
+ });
38
+ }, rule = {
39
+ meta: {
40
+ type: "suggestion",
41
+ docs: {
42
+ category: "Operations",
43
+ description: "Enforce unique fragment names across your project.",
44
+ url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
45
+ requiresSiblings: !0,
46
+ recommended: !0,
47
+ examples: [
48
+ {
49
+ title: "Incorrect",
50
+ code: (
51
+ /* GraphQL */
52
+ `
53
+ # user.fragment.graphql
54
+ fragment UserFields on User {
55
+ id
56
+ name
57
+ fullName
58
+ }
59
+
60
+ # user-fields.graphql
61
+ fragment UserFields on User {
62
+ id
63
+ }
64
+ `
65
+ )
66
+ },
67
+ {
68
+ title: "Correct",
69
+ code: (
70
+ /* GraphQL */
71
+ `
72
+ # user.fragment.graphql
73
+ fragment AllUserFields on User {
74
+ id
75
+ name
76
+ fullName
77
+ }
78
+
79
+ # user-fields.graphql
80
+ fragment UserFields on User {
81
+ id
82
+ }
83
+ `
84
+ )
85
+ }
86
+ ]
87
+ },
88
+ messages: {
89
+ [RULE_ID]: `Fragment named "{{ documentName }}" already defined in:
90
+ {{ summary }}`
91
+ },
92
+ schema: []
93
+ },
94
+ create(context) {
95
+ return {
96
+ FragmentDefinition(node) {
97
+ checkNode(context, node, RULE_ID);
98
+ }
99
+ };
100
+ }
101
+ };
102
+ // Annotate the CommonJS export names for ESM import in node:
103
+ 0 && (module.exports = {
104
+ checkNode,
105
+ rule
106
+ });
@@ -0,0 +1,13 @@
1
+ import { GraphQLESLintRule } from '../types.js';
2
+ import 'eslint';
3
+ import 'estree';
4
+ import 'graphql';
5
+ import 'json-schema-to-ts';
6
+ import '../siblings.js';
7
+ import '@graphql-tools/utils';
8
+ import '../estree-converter/types.js';
9
+ import 'graphql-config';
10
+
11
+ declare const rule: GraphQLESLintRule;
12
+
13
+ export { rule };
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: !0 });
9
+ }, __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from == "object" || typeof from == "function")
11
+ for (let key of __getOwnPropNames(from))
12
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
+ return to;
14
+ };
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
16
+ var unique_operation_name_exports = {};
17
+ __export(unique_operation_name_exports, {
18
+ rule: () => rule
19
+ });
20
+ module.exports = __toCommonJS(unique_operation_name_exports);
21
+ var import_unique_fragment_name = require("./unique-fragment-name.js");
22
+ const RULE_ID = "unique-operation-name", rule = {
23
+ meta: {
24
+ type: "suggestion",
25
+ docs: {
26
+ category: "Operations",
27
+ description: "Enforce unique operation names across your project.",
28
+ url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
29
+ requiresSiblings: !0,
30
+ recommended: !0,
31
+ examples: [
32
+ {
33
+ title: "Incorrect",
34
+ code: (
35
+ /* GraphQL */
36
+ `
37
+ # foo.query.graphql
38
+ query user {
39
+ user {
40
+ id
41
+ }
42
+ }
43
+
44
+ # bar.query.graphql
45
+ query user {
46
+ me {
47
+ id
48
+ }
49
+ }
50
+ `
51
+ )
52
+ },
53
+ {
54
+ title: "Correct",
55
+ code: (
56
+ /* GraphQL */
57
+ `
58
+ # foo.query.graphql
59
+ query user {
60
+ user {
61
+ id
62
+ }
63
+ }
64
+
65
+ # bar.query.graphql
66
+ query me {
67
+ me {
68
+ id
69
+ }
70
+ }
71
+ `
72
+ )
73
+ }
74
+ ]
75
+ },
76
+ messages: {
77
+ [RULE_ID]: `Operation named "{{ documentName }}" already defined in:
78
+ {{ summary }}`
79
+ },
80
+ schema: []
81
+ },
82
+ create(context) {
83
+ return {
84
+ "OperationDefinition[name!=undefined]"(node) {
85
+ (0, import_unique_fragment_name.checkNode)(context, node, RULE_ID);
86
+ }
87
+ };
88
+ }
89
+ };
90
+ // Annotate the CommonJS export names for ESM import in node:
91
+ 0 && (module.exports = {
92
+ rule
93
+ });
@@ -0,0 +1,13 @@
1
+ import { GraphQLProjectConfig } from 'graphql-config';
2
+ import { Schema } from './types.js';
3
+ import 'eslint';
4
+ import 'estree';
5
+ import 'graphql';
6
+ import 'json-schema-to-ts';
7
+ import './siblings.js';
8
+ import '@graphql-tools/utils';
9
+ import './estree-converter/types.js';
10
+
11
+ declare function getSchema(project: GraphQLProjectConfig): Schema;
12
+
13
+ export { getSchema };
package/cjs/schema.js ADDED
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf, __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: !0 });
10
+ }, __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from == "object" || typeof from == "function")
12
+ for (let key of __getOwnPropNames(from))
13
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ return to;
15
+ };
16
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
17
+ // If the importer is in node compatibility mode or this is not an ESM
18
+ // file that has been converted to a CommonJS file using a Babel-
19
+ // compatible transform (i.e. "__esModule" has not been set), then set
20
+ // "default" to the CommonJS "module.exports" for node compatibility.
21
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: !0 }) : target,
22
+ mod
23
+ )), __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
24
+ var schema_exports = {};
25
+ __export(schema_exports, {
26
+ getSchema: () => getSchema
27
+ });
28
+ module.exports = __toCommonJS(schema_exports);
29
+ var import_debug = __toESM(require("debug")), import_fast_glob = __toESM(require("fast-glob")), import_graphql = require("graphql"), import_cache = require("./cache.js");
30
+ const schemaCache = new import_cache.ModuleCache(), debug = (0, import_debug.default)("graphql-eslint:schema");
31
+ function getSchema(project) {
32
+ const schemaKey = project.schema;
33
+ if (!schemaKey)
34
+ return null;
35
+ const cache = schemaCache.get(schemaKey);
36
+ if (cache)
37
+ return cache;
38
+ debug("Loading schema from %o", project.schema);
39
+ const schema = project.loadSchemaSync(project.schema, "GraphQLSchema", {
40
+ pluckConfig: project.extensions.pluckConfig
41
+ });
42
+ if (debug.enabled) {
43
+ debug("Schema loaded: %o", schema instanceof import_graphql.GraphQLSchema);
44
+ const schemaPaths = import_fast_glob.default.sync(project.schema, { absolute: !0 });
45
+ debug("Schema pointers %O", schemaPaths);
46
+ }
47
+ return schemaCache.set(schemaKey, schema), schema;
48
+ }
49
+ // Annotate the CommonJS export names for ESM import in node:
50
+ 0 && (module.exports = {
51
+ getSchema
52
+ });
@@ -1,21 +1,24 @@
1
+ import { Source } from '@graphql-tools/utils';
1
2
  import { FragmentDefinitionNode, OperationDefinitionNode, SelectionSetNode, OperationTypeNode } from 'graphql';
2
- import { GraphQLProjectConfig } from 'graphql-config';
3
- export declare type FragmentSource = {
3
+
4
+ type FragmentSource = {
4
5
  filePath: string;
5
6
  document: FragmentDefinitionNode;
6
7
  };
7
- export declare type OperationSource = {
8
+ type OperationSource = {
8
9
  filePath: string;
9
10
  document: OperationDefinitionNode;
10
11
  };
11
- export declare type SiblingOperations = {
12
+ type SiblingOperations = {
12
13
  available: boolean;
13
14
  getFragment(fragmentName: string): FragmentSource[];
14
15
  getFragments(): FragmentSource[];
15
16
  getFragmentByType(typeName: string): FragmentSource[];
16
- getFragmentsInUse(baseOperation: OperationDefinitionNode | FragmentDefinitionNode | SelectionSetNode, recursive?: boolean): FragmentDefinitionNode[];
17
+ getFragmentsInUse(baseOperation: FragmentDefinitionNode | OperationDefinitionNode | SelectionSetNode, recursive?: boolean): FragmentDefinitionNode[];
17
18
  getOperation(operationName: string): OperationSource[];
18
19
  getOperations(): OperationSource[];
19
20
  getOperationByType(operationType: OperationTypeNode): OperationSource[];
20
21
  };
21
- export declare function getSiblingOperations(projectForFile: GraphQLProjectConfig): SiblingOperations;
22
+ declare function getSiblings(documents: Source[]): SiblingOperations;
23
+
24
+ export { FragmentSource, OperationSource, SiblingOperations, getSiblings };