@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
package/cjs/siblings.js CHANGED
@@ -1,113 +1,131 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSiblings = void 0;
4
- const utils_1 = require("@graphql-tools/utils");
5
- const graphql_1 = require("graphql");
6
- const documents_js_1 = require("./documents.js");
7
- const utils_js_1 = require("./utils.js");
8
- const siblingOperationsCache = new Map();
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 siblings_exports = {};
20
+ __export(siblings_exports, {
21
+ getSiblings: () => getSiblings
22
+ });
23
+ module.exports = __toCommonJS(siblings_exports);
24
+ var import_utils = require("@graphql-tools/utils");
25
+ var import_graphql = require("graphql");
26
+ var import_documents = require("./documents.js");
27
+ var import_utils2 = require("./utils.js");
28
+ const siblingOperationsCache = /* @__PURE__ */ new Map();
9
29
  function getSiblings(project, documents) {
10
- const siblings = project
11
- ? (0, documents_js_1.getDocuments)(project)
12
- : typeof documents === 'string'
13
- ? [(0, utils_1.parseGraphQLSDL)('operation.graphql', documents, { noLocation: true })]
14
- : [];
15
- if (siblings.length === 0) {
16
- let printed = false;
17
- const noopWarn = () => {
18
- if (!printed) {
19
- utils_js_1.logger.warn('getSiblingOperations was called without any operations. Make sure to set "parserOptions.operations" to make this feature available!');
20
- printed = true;
21
- }
22
- return [];
23
- };
24
- return {
25
- available: false,
26
- getFragment: noopWarn,
27
- getFragments: noopWarn,
28
- getFragmentByType: noopWarn,
29
- getFragmentsInUse: noopWarn,
30
- getOperation: noopWarn,
31
- getOperations: noopWarn,
32
- getOperationByType: noopWarn,
33
- };
30
+ const siblings = project ? (0, import_documents.getDocuments)(project) : typeof documents === "string" ? [(0, import_utils.parseGraphQLSDL)("operation.graphql", documents, { noLocation: true })] : [];
31
+ if (siblings.length === 0) {
32
+ let printed = false;
33
+ const noopWarn = () => {
34
+ if (!printed) {
35
+ import_utils2.logger.warn(
36
+ 'getSiblingOperations was called without any operations. Make sure to set "parserOptions.operations" to make this feature available!'
37
+ );
38
+ printed = true;
39
+ }
40
+ return [];
41
+ };
42
+ return {
43
+ available: false,
44
+ getFragment: noopWarn,
45
+ getFragments: noopWarn,
46
+ getFragmentByType: noopWarn,
47
+ getFragmentsInUse: noopWarn,
48
+ getOperation: noopWarn,
49
+ getOperations: noopWarn,
50
+ getOperationByType: noopWarn
51
+ };
52
+ }
53
+ const value = siblingOperationsCache.get(siblings);
54
+ if (value) {
55
+ return value;
56
+ }
57
+ let fragmentsCache = null;
58
+ const getFragments = () => {
59
+ if (fragmentsCache === null) {
60
+ const result = [];
61
+ for (const source of siblings) {
62
+ for (const definition of source.document?.definitions || []) {
63
+ if (definition.kind === import_graphql.Kind.FRAGMENT_DEFINITION) {
64
+ result.push({
65
+ filePath: source.location,
66
+ document: definition
67
+ });
68
+ }
69
+ }
70
+ }
71
+ fragmentsCache = result;
34
72
  }
35
- // Since the siblings array is cached, we can use it as cache key.
36
- // We should get the same array reference each time we get
37
- // to this point for the same graphql project
38
- const value = siblingOperationsCache.get(siblings);
39
- if (value) {
40
- return value;
73
+ return fragmentsCache;
74
+ };
75
+ let cachedOperations = null;
76
+ const getOperations = () => {
77
+ if (cachedOperations === null) {
78
+ const result = [];
79
+ for (const source of siblings) {
80
+ for (const definition of source.document?.definitions || []) {
81
+ if (definition.kind === import_graphql.Kind.OPERATION_DEFINITION) {
82
+ result.push({
83
+ filePath: source.location,
84
+ document: definition
85
+ });
86
+ }
87
+ }
88
+ }
89
+ cachedOperations = result;
41
90
  }
42
- let fragmentsCache = null;
43
- const getFragments = () => {
44
- var _a;
45
- if (fragmentsCache === null) {
46
- const result = [];
47
- for (const source of siblings) {
48
- for (const definition of ((_a = source.document) === null || _a === void 0 ? void 0 : _a.definitions) || []) {
49
- if (definition.kind === graphql_1.Kind.FRAGMENT_DEFINITION) {
50
- result.push({
51
- filePath: source.location,
52
- document: definition,
53
- });
54
- }
55
- }
56
- }
57
- fragmentsCache = result;
91
+ return cachedOperations;
92
+ };
93
+ const getFragment = (name) => getFragments().filter((f) => f.document.name.value === name);
94
+ const collectFragments = (selectable, recursive, collected = /* @__PURE__ */ new Map()) => {
95
+ (0, import_graphql.visit)(selectable, {
96
+ FragmentSpread(spread) {
97
+ const fragmentName = spread.name.value;
98
+ const [fragment] = getFragment(fragmentName);
99
+ if (!fragment) {
100
+ import_utils2.logger.warn(
101
+ `Unable to locate fragment named "${fragmentName}", please make sure it's loaded using "parserOptions.operations"`
102
+ );
103
+ return;
58
104
  }
59
- return fragmentsCache;
60
- };
61
- let cachedOperations = null;
62
- const getOperations = () => {
63
- var _a;
64
- if (cachedOperations === null) {
65
- const result = [];
66
- for (const source of siblings) {
67
- for (const definition of ((_a = source.document) === null || _a === void 0 ? void 0 : _a.definitions) || []) {
68
- if (definition.kind === graphql_1.Kind.OPERATION_DEFINITION) {
69
- result.push({
70
- filePath: source.location,
71
- document: definition,
72
- });
73
- }
74
- }
75
- }
76
- cachedOperations = result;
105
+ if (!collected.has(fragmentName)) {
106
+ collected.set(fragmentName, fragment.document);
107
+ if (recursive) {
108
+ collectFragments(fragment.document, recursive, collected);
109
+ }
77
110
  }
78
- return cachedOperations;
79
- };
80
- const getFragment = (name) => getFragments().filter(f => f.document.name.value === name);
81
- const collectFragments = (selectable, recursive, collected = new Map()) => {
82
- (0, graphql_1.visit)(selectable, {
83
- FragmentSpread(spread) {
84
- const fragmentName = spread.name.value;
85
- const [fragment] = getFragment(fragmentName);
86
- if (!fragment) {
87
- utils_js_1.logger.warn(`Unable to locate fragment named "${fragmentName}", please make sure it's loaded using "parserOptions.operations"`);
88
- return;
89
- }
90
- if (!collected.has(fragmentName)) {
91
- collected.set(fragmentName, fragment.document);
92
- if (recursive) {
93
- collectFragments(fragment.document, recursive, collected);
94
- }
95
- }
96
- },
97
- });
98
- return collected;
99
- };
100
- const siblingOperations = {
101
- available: true,
102
- getFragment,
103
- getFragments,
104
- getFragmentByType: typeName => getFragments().filter(f => f.document.typeCondition.name.value === typeName),
105
- getFragmentsInUse: (selectable, recursive = true) => Array.from(collectFragments(selectable, recursive).values()),
106
- getOperation: name => getOperations().filter(o => { var _a; return ((_a = o.document.name) === null || _a === void 0 ? void 0 : _a.value) === name; }),
107
- getOperations,
108
- getOperationByType: type => getOperations().filter(o => o.document.operation === type),
109
- };
110
- siblingOperationsCache.set(siblings, siblingOperations);
111
- return siblingOperations;
111
+ }
112
+ });
113
+ return collected;
114
+ };
115
+ const siblingOperations = {
116
+ available: true,
117
+ getFragment,
118
+ getFragments,
119
+ getFragmentByType: (typeName) => getFragments().filter((f) => f.document.typeCondition.name.value === typeName),
120
+ getFragmentsInUse: (selectable, recursive = true) => Array.from(collectFragments(selectable, recursive).values()),
121
+ getOperation: (name) => getOperations().filter((o) => o.document.name?.value === name),
122
+ getOperations,
123
+ getOperationByType: (type) => getOperations().filter((o) => o.document.operation === type)
124
+ };
125
+ siblingOperationsCache.set(siblings, siblingOperations);
126
+ return siblingOperations;
112
127
  }
113
- exports.getSiblings = getSiblings;
128
+ // Annotate the CommonJS export names for ESM import in node:
129
+ 0 && (module.exports = {
130
+ getSiblings
131
+ });
@@ -0,0 +1,8 @@
1
+ import 'eslint';
2
+ import 'graphql';
3
+ import './estree-converter/types.js';
4
+ export { G as GraphQLESLintRuleListener, b as GraphQLInvalidTestCase, c as GraphQLRuleTester, a as GraphQLValidTestCase } from './types-e3367e3c.js';
5
+ import 'estree';
6
+ import '@graphql-tools/utils';
7
+ import 'graphql-config';
8
+ import 'json-schema-to-ts';
package/cjs/testkit.js CHANGED
@@ -1,162 +1,183 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GraphQLRuleTester = void 0;
4
- const fs_1 = require("fs");
5
- const path_1 = require("path");
6
- const code_frame_1 = require("@babel/code-frame");
7
- const eslint_1 = require("eslint");
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 testkit_exports = {};
30
+ __export(testkit_exports, {
31
+ GraphQLRuleTester: () => GraphQLRuleTester
32
+ });
33
+ module.exports = __toCommonJS(testkit_exports);
34
+ var import_fs = require("fs");
35
+ var import_path = require("path");
36
+ var import_code_frame = require("@babel/code-frame");
37
+ var import_eslint = require("eslint");
8
38
  function indentCode(code, indent = 4) {
9
- return code.replace(/^/gm, ' '.repeat(indent));
39
+ return code.replace(/^/gm, " ".repeat(indent));
10
40
  }
11
- // A simple version of `SourceCodeFixer.applyFixes`
12
- // https://github.com/eslint/eslint/issues/14936#issuecomment-906746754
13
41
  function applyFix(code, { range, text }) {
14
- return [code.slice(0, range[0]), text, code.slice(range[1])].join('');
42
+ return [code.slice(0, range[0]), text, code.slice(range[1])].join("");
15
43
  }
16
- class GraphQLRuleTester extends eslint_1.RuleTester {
17
- constructor(parserOptions = {}) {
18
- const config = {
19
- parser: require.resolve('@graphql-eslint/eslint-plugin'),
20
- parserOptions: {
21
- ...parserOptions,
22
- skipGraphQLConfig: true,
23
- },
24
- };
25
- super(config);
26
- this.config = config;
27
- }
28
- fromMockFile(path) {
29
- return (0, fs_1.readFileSync)((0, path_1.resolve)(__dirname, `../tests/mocks/${path}`), 'utf-8');
30
- }
31
- runGraphQLTests(ruleId, rule, tests) {
32
- super.run(ruleId, rule, tests);
33
- const linter = new eslint_1.Linter();
34
- linter.defineRule(ruleId, rule);
35
- const hasOnlyTest = [...tests.valid, ...tests.invalid].some(t => typeof t !== 'string' && t.only);
36
- // for (const [index, testCase] of tests.valid.entries()) {
37
- // const { name, code, filename, only }: RuleTester.ValidTestCase =
38
- // typeof testCase === 'string' ? { code: testCase } : testCase;
39
- //
40
- // if (hasOnlyTest && !only) {
41
- // continue;
42
- // }
43
- //
44
- // const verifyConfig = getVerifyConfig<Options>(ruleId, this.config, testCase);
45
- // defineParser(linter, verifyConfig.parser);
46
- //
47
- // const messages = linter.verify(code, verifyConfig, { filename });
48
- // const codeFrame = printCode(code, { line: 0, column: 0 });
49
- //
50
- // it(name || `Valid #${index + 1}\n${codeFrame}`, () => {
51
- // expect(messages).toEqual([]);
52
- // });
53
- // }
54
- for (const [idx, testCase] of tests.invalid.entries()) {
55
- const { only, filename, options, name } = testCase;
56
- if (hasOnlyTest && !only) {
57
- continue;
58
- }
59
- const code = removeTrailingBlankLines(testCase.code);
60
- const verifyConfig = getVerifyConfig(ruleId, this.config, testCase);
61
- defineParser(linter, verifyConfig.parser);
62
- const messages = linter.verify(code, verifyConfig, filename);
63
- if (messages.length === 0) {
64
- throw new Error('Invalid case should have at least one error.');
65
- }
66
- const codeFrame = indentCode(printCode(code, { line: 0, column: 0 }));
67
- const messageForSnapshot = ['#### ⌨️ Code', codeFrame];
68
- if (options) {
69
- const opts = JSON.stringify(options, null, 2).slice(1, -1);
70
- messageForSnapshot.push('#### ⚙️ Options', indentCode(removeTrailingBlankLines(opts), 2));
71
- }
72
- for (const [index, message] of messages.entries()) {
73
- if (message.fatal) {
74
- throw new Error(message.message);
75
- }
76
- const codeWithMessage = printCode(code, message, 1);
77
- messageForSnapshot.push(printWithIndex('#### ❌ Error', index, messages.length), indentCode(codeWithMessage));
78
- // Don't print suggestions in snapshots for too big codes
79
- if (message.suggestions && (code.match(/\n/g) || '').length < 1000) {
80
- for (const [i, suggestion] of message.suggestions.entries()) {
81
- const title = printWithIndex('#### 💡 Suggestion', i, message.suggestions.length, suggestion.desc);
82
- const output = applyFix(code, suggestion.fix);
83
- const codeFrame = printCode(output, { line: 0, column: 0 });
84
- messageForSnapshot.push(title, indentCode(codeFrame, 2));
85
- }
86
- }
87
- }
88
- if (rule.meta.fixable) {
89
- const { fixed, output } = linter.verifyAndFix(code, verifyConfig, filename);
90
- if (fixed) {
91
- messageForSnapshot.push('#### 🔧 Autofix output', indentCode(printCode(output)));
92
- }
93
- }
94
- it(name || `Invalid #${idx + 1}`, () => {
95
- expect(messageForSnapshot.join('\n\n')).toMatchSnapshot();
96
- });
44
+ class GraphQLRuleTester extends import_eslint.RuleTester {
45
+ constructor(parserOptions = {}) {
46
+ const config = {
47
+ parser: require.resolve("@graphql-eslint/eslint-plugin"),
48
+ parserOptions: {
49
+ ...parserOptions,
50
+ skipGraphQLConfig: true
51
+ }
52
+ };
53
+ super(config);
54
+ this.config = config;
55
+ }
56
+ fromMockFile(path) {
57
+ return (0, import_fs.readFileSync)((0, import_path.resolve)(__dirname, `../tests/mocks/${path}`), "utf-8");
58
+ }
59
+ runGraphQLTests(ruleId, rule, tests) {
60
+ super.run(ruleId, rule, tests);
61
+ const linter = new import_eslint.Linter();
62
+ linter.defineRule(ruleId, rule);
63
+ const hasOnlyTest = [...tests.valid, ...tests.invalid].some(
64
+ (t) => typeof t !== "string" && t.only
65
+ );
66
+ for (const [idx, testCase] of tests.invalid.entries()) {
67
+ const { only, filename, options, name } = testCase;
68
+ if (hasOnlyTest && !only) {
69
+ continue;
70
+ }
71
+ const code = removeTrailingBlankLines(testCase.code);
72
+ const verifyConfig = getVerifyConfig(ruleId, this.config, testCase);
73
+ defineParser(linter, verifyConfig.parser);
74
+ const messages = linter.verify(code, verifyConfig, filename);
75
+ if (messages.length === 0) {
76
+ throw new Error("Invalid case should have at least one error.");
77
+ }
78
+ const codeFrame = indentCode(printCode(code, { line: 0, column: 0 }));
79
+ const messageForSnapshot = ["#### \u2328\uFE0F Code", codeFrame];
80
+ if (options) {
81
+ const opts = JSON.stringify(options, null, 2).slice(1, -1);
82
+ messageForSnapshot.push("#### \u2699\uFE0F Options", indentCode(removeTrailingBlankLines(opts), 2));
83
+ }
84
+ for (const [index, message] of messages.entries()) {
85
+ if (message.fatal) {
86
+ throw new Error(message.message);
87
+ }
88
+ const codeWithMessage = printCode(code, message, 1);
89
+ messageForSnapshot.push(
90
+ printWithIndex("#### \u274C Error", index, messages.length),
91
+ indentCode(codeWithMessage)
92
+ );
93
+ if (message.suggestions && (code.match(/\n/g) || "").length < 1e3) {
94
+ for (const [i, suggestion] of message.suggestions.entries()) {
95
+ const title = printWithIndex(
96
+ "#### \u{1F4A1} Suggestion",
97
+ i,
98
+ message.suggestions.length,
99
+ suggestion.desc
100
+ );
101
+ const output = applyFix(code, suggestion.fix);
102
+ const codeFrame2 = printCode(output, { line: 0, column: 0 });
103
+ messageForSnapshot.push(title, indentCode(codeFrame2, 2));
104
+ }
97
105
  }
106
+ }
107
+ if (rule.meta.fixable) {
108
+ const { fixed, output } = linter.verifyAndFix(code, verifyConfig, filename);
109
+ if (fixed) {
110
+ messageForSnapshot.push("#### \u{1F527} Autofix output", indentCode(printCode(output)));
111
+ }
112
+ }
113
+ it(name || `Invalid #${idx + 1}`, () => {
114
+ expect(messageForSnapshot.join("\n\n")).toMatchSnapshot();
115
+ });
98
116
  }
117
+ }
99
118
  }
100
- exports.GraphQLRuleTester = GraphQLRuleTester;
101
119
  function removeTrailingBlankLines(text) {
102
- return text.replace(/^\s*\n/, '').trimEnd();
120
+ return text.replace(/^\s*\n/, "").trimEnd();
103
121
  }
104
122
  function printWithIndex(title, index, total, description) {
105
- if (total > 1) {
106
- title += ` ${index + 1}/${total}`;
107
- }
108
- if (description) {
109
- title += `: ${description}`;
110
- }
111
- return title;
123
+ if (total > 1) {
124
+ title += ` ${index + 1}/${total}`;
125
+ }
126
+ if (description) {
127
+ title += `: ${description}`;
128
+ }
129
+ return title;
112
130
  }
113
131
  function getVerifyConfig(ruleId, testerConfig, testCase) {
114
- const { parser = testerConfig.parser, parserOptions, options } = testCase;
115
- return {
116
- ...testerConfig,
117
- parser,
118
- parserOptions: {
119
- ...testerConfig.parserOptions,
120
- ...parserOptions,
121
- },
122
- rules: {
123
- [ruleId]: Array.isArray(options) ? ['error', ...options] : 'error',
124
- },
125
- };
132
+ const { parser = testerConfig.parser, parserOptions, options } = testCase;
133
+ return {
134
+ ...testerConfig,
135
+ parser,
136
+ parserOptions: {
137
+ ...testerConfig.parserOptions,
138
+ ...parserOptions
139
+ },
140
+ rules: {
141
+ [ruleId]: Array.isArray(options) ? ["error", ...options] : "error"
142
+ }
143
+ };
126
144
  }
127
- const parsers = new WeakMap();
145
+ const parsers = /* @__PURE__ */ new WeakMap();
128
146
  function defineParser(linter, parser) {
129
- if (!parser) {
130
- return;
131
- }
132
- if (!parsers.has(linter)) {
133
- parsers.set(linter, new Set());
134
- }
135
- const defined = parsers.get(linter);
136
- if (!defined.has(parser)) {
137
- defined.add(parser);
138
- // eslint-disable-next-line @typescript-eslint/no-var-requires
139
- linter.defineParser(parser, require(parser));
140
- }
147
+ if (!parser) {
148
+ return;
149
+ }
150
+ if (!parsers.has(linter)) {
151
+ parsers.set(linter, /* @__PURE__ */ new Set());
152
+ }
153
+ const defined = parsers.get(linter);
154
+ if (!defined.has(parser)) {
155
+ defined.add(parser);
156
+ linter.defineParser(parser, require(parser));
157
+ }
141
158
  }
142
159
  function printCode(code, result = {}, linesOffset = Number.POSITIVE_INFINITY) {
143
- const { line, column, endLine, endColumn, message } = result;
144
- const location = {};
145
- if (typeof line === 'number' && typeof column === 'number') {
146
- location.start = {
147
- line,
148
- column,
149
- };
150
- }
151
- if (typeof endLine === 'number' && typeof endColumn === 'number') {
152
- location.end = {
153
- line: endLine,
154
- column: endColumn,
155
- };
156
- }
157
- return (0, code_frame_1.codeFrameColumns)(code, location, {
158
- linesAbove: linesOffset,
159
- linesBelow: linesOffset,
160
- message,
161
- });
160
+ const { line, column, endLine, endColumn, message } = result;
161
+ const location = {};
162
+ if (typeof line === "number" && typeof column === "number") {
163
+ location.start = {
164
+ line,
165
+ column
166
+ };
167
+ }
168
+ if (typeof endLine === "number" && typeof endColumn === "number") {
169
+ location.end = {
170
+ line: endLine,
171
+ column: endColumn
172
+ };
173
+ }
174
+ return (0, import_code_frame.codeFrameColumns)(code, location, {
175
+ linesAbove: linesOffset,
176
+ linesBelow: linesOffset,
177
+ message
178
+ });
162
179
  }
180
+ // Annotate the CommonJS export names for ESM import in node:
181
+ 0 && (module.exports = {
182
+ GraphQLRuleTester
183
+ });