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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) hide show
  1. package/{typings → cjs}/cache.d.ts +3 -1
  2. package/cjs/cache.js +57 -26
  3. package/{typings → cjs}/configs/index.d.ts +3 -1
  4. package/cjs/configs/index.js +47 -14
  5. package/{typings → cjs}/configs/operations-all.d.ts +2 -1
  6. package/cjs/configs/operations-all.js +47 -30
  7. package/{typings → cjs}/configs/operations-recommended.d.ts +2 -1
  8. package/cjs/configs/operations-recommended.js +72 -55
  9. package/{typings → cjs}/configs/relay.d.ts +2 -1
  10. package/cjs/configs/relay.js +31 -11
  11. package/{typings → cjs}/configs/schema-all.d.ts +2 -1
  12. package/cjs/configs/schema-all.js +41 -24
  13. package/{typings → cjs}/configs/schema-recommended.d.ts +2 -1
  14. package/cjs/configs/schema-recommended.js +68 -51
  15. package/{typings → cjs}/documents.d.ts +4 -1
  16. package/cjs/documents.js +74 -43
  17. package/cjs/estree-converter/converter.d.ts +8 -0
  18. package/cjs/estree-converter/converter.js +80 -59
  19. package/cjs/estree-converter/index.d.ts +8 -0
  20. package/cjs/estree-converter/index.js +25 -5
  21. package/{typings → cjs}/estree-converter/types.d.ts +7 -5
  22. package/cjs/estree-converter/types.js +16 -0
  23. package/cjs/estree-converter/utils.d.ts +18 -0
  24. package/cjs/estree-converter/utils.js +119 -95
  25. package/{typings → cjs}/flat-configs.d.ts +12 -1
  26. package/cjs/flat-configs.js +56 -32
  27. package/cjs/graphql-config.d.ts +13 -0
  28. package/cjs/graphql-config.js +78 -47
  29. package/cjs/index.d.ts +22 -0
  30. package/cjs/index.js +50 -18
  31. package/cjs/parser.d.ts +12 -0
  32. package/cjs/parser.js +96 -76
  33. package/cjs/processor.d.ts +9 -0
  34. package/cjs/processor.js +119 -88
  35. package/{typings → cjs}/rules/alphabetize.d.ts +12 -4
  36. package/cjs/rules/alphabetize.js +337 -295
  37. package/{typings → cjs}/rules/description-style.d.ts +12 -4
  38. package/cjs/rules/description-style.js +96 -66
  39. package/cjs/rules/graphql-js-validation.d.ts +12 -0
  40. package/cjs/rules/graphql-js-validation.js +595 -433
  41. package/cjs/rules/index.d.ts +125 -0
  42. package/cjs/rules/index.js +97 -76
  43. package/{typings → cjs}/rules/input-name.d.ts +12 -4
  44. package/cjs/rules/input-name.js +153 -123
  45. package/{typings → cjs}/rules/lone-executable-definition.d.ts +12 -4
  46. package/cjs/rules/lone-executable-definition.js +101 -72
  47. package/{typings → cjs}/rules/match-document-filename.d.ts +14 -6
  48. package/cjs/rules/match-document-filename.js +229 -182
  49. package/{typings → cjs}/rules/naming-convention.d.ts +12 -4
  50. package/cjs/rules/naming-convention.js +380 -316
  51. package/cjs/rules/no-anonymous-operations.d.ts +12 -0
  52. package/cjs/rules/no-anonymous-operations.js +88 -57
  53. package/cjs/rules/no-case-insensitive-enum-values-duplicates.d.ts +12 -0
  54. package/cjs/rules/no-case-insensitive-enum-values-duplicates.js +82 -50
  55. package/cjs/rules/no-deprecated.d.ts +12 -0
  56. package/cjs/rules/no-deprecated.js +106 -75
  57. package/cjs/rules/no-duplicate-fields.d.ts +12 -0
  58. package/cjs/rules/no-duplicate-fields.js +116 -82
  59. package/cjs/rules/no-hashtag-description.d.ts +13 -0
  60. package/cjs/rules/no-hashtag-description.js +119 -82
  61. package/cjs/rules/no-one-place-fragments.d.ts +12 -0
  62. package/cjs/rules/no-one-place-fragments.js +88 -58
  63. package/{typings → cjs}/rules/no-root-type.d.ts +12 -4
  64. package/cjs/rules/no-root-type.js +101 -74
  65. package/cjs/rules/no-scalar-result-type-on-mutation.d.ts +12 -0
  66. package/cjs/rules/no-scalar-result-type-on-mutation.js +90 -60
  67. package/cjs/rules/no-typename-prefix.d.ts +12 -0
  68. package/cjs/rules/no-typename-prefix.js +88 -55
  69. package/cjs/rules/no-unreachable-types.d.ts +12 -0
  70. package/cjs/rules/no-unreachable-types.js +169 -134
  71. package/cjs/rules/no-unused-fields.d.ts +12 -0
  72. package/cjs/rules/no-unused-fields.js +117 -92
  73. package/{typings → cjs}/rules/relay-arguments.d.ts +12 -4
  74. package/cjs/rules/relay-arguments.js +136 -110
  75. package/cjs/rules/relay-connection-types.d.ts +13 -0
  76. package/cjs/rules/relay-connection-types.js +123 -94
  77. package/{typings → cjs}/rules/relay-edge-types.d.ts +12 -4
  78. package/cjs/rules/relay-edge-types.js +196 -179
  79. package/cjs/rules/relay-page-info.d.ts +12 -0
  80. package/cjs/rules/relay-page-info.js +108 -89
  81. package/{typings → cjs}/rules/require-deprecation-date.d.ts +12 -4
  82. package/cjs/rules/require-deprecation-date.js +143 -112
  83. package/cjs/rules/require-deprecation-reason.d.ts +12 -0
  84. package/cjs/rules/require-deprecation-reason.js +80 -46
  85. package/{typings → cjs}/rules/require-description.d.ts +13 -5
  86. package/cjs/rules/require-description.js +170 -132
  87. package/cjs/rules/require-field-of-type-query-in-mutation-result.d.ts +12 -0
  88. package/cjs/rules/require-field-of-type-query-in-mutation-result.js +81 -51
  89. package/{typings → cjs}/rules/require-id-when-available.d.ts +12 -4
  90. package/cjs/rules/require-id-when-available.js +196 -173
  91. package/cjs/rules/require-import-fragment.d.ts +12 -0
  92. package/cjs/rules/require-import-fragment.js +138 -88
  93. package/cjs/rules/require-nullable-fields-with-oneof.d.ts +12 -0
  94. package/cjs/rules/require-nullable-fields-with-oneof.js +80 -50
  95. package/cjs/rules/require-nullable-result-in-root.d.ts +12 -0
  96. package/cjs/rules/require-nullable-result-in-root.js +97 -68
  97. package/cjs/rules/require-type-pattern-with-oneof.d.ts +12 -0
  98. package/cjs/rules/require-type-pattern-with-oneof.js +70 -42
  99. package/{typings → cjs}/rules/selection-set-depth.d.ts +12 -4
  100. package/cjs/rules/selection-set-depth.js +147 -107
  101. package/{typings → cjs}/rules/strict-id-in-types.d.ts +12 -4
  102. package/cjs/rules/strict-id-in-types.js +143 -122
  103. package/cjs/rules/unique-fragment-name.d.ts +13 -0
  104. package/cjs/rules/unique-fragment-name.js +88 -62
  105. package/cjs/rules/unique-operation-name.d.ts +12 -0
  106. package/cjs/rules/unique-operation-name.js +65 -35
  107. package/cjs/schema.d.ts +12 -0
  108. package/cjs/schema.js +62 -30
  109. package/cjs/siblings.d.ts +8 -0
  110. package/cjs/siblings.js +124 -106
  111. package/cjs/testkit.d.ts +8 -0
  112. package/cjs/testkit.js +165 -144
  113. package/cjs/types-e3367e3c.d.ts +129 -0
  114. package/cjs/types.d.ts +8 -0
  115. package/cjs/types.js +16 -0
  116. package/cjs/utils.d.ts +44 -0
  117. package/cjs/utils.js +181 -124
  118. package/{typings/cache.d.cts → esm/cache.d.mts} +3 -1
  119. package/esm/cache.js +25 -23
  120. package/{typings/configs/index.d.cts → esm/configs/index.d.mts} +3 -1
  121. package/esm/configs/index.js +14 -11
  122. package/{typings/configs/operations-all.d.cts → esm/configs/operations-all.d.mts} +2 -1
  123. package/esm/configs/operations-all.js +28 -28
  124. package/{typings/configs/operations-recommended.d.cts → esm/configs/operations-recommended.d.mts} +2 -1
  125. package/esm/configs/operations-recommended.js +53 -53
  126. package/{typings/configs/relay.d.cts → esm/configs/relay.d.mts} +2 -1
  127. package/esm/configs/relay.js +12 -9
  128. package/{typings/configs/schema-all.d.cts → esm/configs/schema-all.d.mts} +2 -1
  129. package/esm/configs/schema-all.js +22 -22
  130. package/{typings/configs/schema-recommended.d.cts → esm/configs/schema-recommended.d.mts} +2 -1
  131. package/esm/configs/schema-recommended.js +49 -49
  132. package/{typings/documents.d.cts → esm/documents.d.mts} +4 -1
  133. package/esm/documents.js +41 -39
  134. package/esm/estree-converter/converter.d.mts +8 -0
  135. package/esm/estree-converter/converter.js +63 -57
  136. package/esm/estree-converter/index.d.mts +8 -0
  137. package/esm/estree-converter/index.js +3 -3
  138. package/{typings/estree-converter/types.d.cts → esm/estree-converter/types.d.mts} +7 -5
  139. package/esm/estree-converter/utils.d.mts +18 -0
  140. package/esm/estree-converter/utils.js +102 -93
  141. package/{typings/flat-configs.d.cts → esm/flat-configs.d.mts} +13 -2
  142. package/esm/flat-configs.js +33 -30
  143. package/esm/graphql-config.d.mts +13 -0
  144. package/esm/graphql-config.js +49 -44
  145. package/esm/index.d.mts +22 -0
  146. package/esm/index.js +18 -9
  147. package/esm/package.json +1 -1
  148. package/esm/parser.d.mts +12 -0
  149. package/esm/parser.js +64 -73
  150. package/esm/processor.d.mts +9 -0
  151. package/esm/processor.js +98 -86
  152. package/{typings/rules/alphabetize.d.cts → esm/rules/alphabetize.d.mts} +12 -4
  153. package/esm/rules/alphabetize.js +304 -290
  154. package/{typings/rules/description-style.d.cts → esm/rules/description-style.d.mts} +12 -4
  155. package/esm/rules/description-style.js +73 -64
  156. package/esm/rules/graphql-js-validation.d.mts +12 -0
  157. package/esm/rules/graphql-js-validation.js +580 -429
  158. package/esm/rules/index.d.mts +125 -0
  159. package/esm/rules/index.js +74 -74
  160. package/{typings/rules/input-name.d.cts → esm/rules/input-name.d.mts} +12 -4
  161. package/esm/rules/input-name.js +132 -121
  162. package/{typings/rules/lone-executable-definition.d.cts → esm/rules/lone-executable-definition.d.mts} +12 -4
  163. package/esm/rules/lone-executable-definition.js +78 -70
  164. package/{typings/rules/match-document-filename.d.cts → esm/rules/match-document-filename.d.mts} +14 -6
  165. package/esm/rules/match-document-filename.js +210 -180
  166. package/{typings/rules/naming-convention.d.cts → esm/rules/naming-convention.d.mts} +12 -4
  167. package/esm/rules/naming-convention.js +363 -314
  168. package/esm/rules/no-anonymous-operations.d.mts +12 -0
  169. package/esm/rules/no-anonymous-operations.js +65 -55
  170. package/esm/rules/no-case-insensitive-enum-values-duplicates.d.mts +12 -0
  171. package/esm/rules/no-case-insensitive-enum-values-duplicates.js +59 -48
  172. package/esm/rules/no-deprecated.d.mts +12 -0
  173. package/esm/rules/no-deprecated.js +83 -73
  174. package/esm/rules/no-duplicate-fields.d.mts +12 -0
  175. package/esm/rules/no-duplicate-fields.js +93 -80
  176. package/esm/rules/no-hashtag-description.d.mts +13 -0
  177. package/esm/rules/no-hashtag-description.js +95 -80
  178. package/esm/rules/no-one-place-fragments.d.mts +12 -0
  179. package/esm/rules/no-one-place-fragments.js +65 -56
  180. package/{typings/rules/no-root-type.d.cts → esm/rules/no-root-type.d.mts} +12 -4
  181. package/esm/rules/no-root-type.js +78 -72
  182. package/esm/rules/no-scalar-result-type-on-mutation.d.mts +12 -0
  183. package/esm/rules/no-scalar-result-type-on-mutation.js +67 -58
  184. package/esm/rules/no-typename-prefix.d.mts +12 -0
  185. package/esm/rules/no-typename-prefix.js +65 -53
  186. package/esm/rules/no-unreachable-types.d.mts +12 -0
  187. package/esm/rules/no-unreachable-types.js +141 -131
  188. package/esm/rules/no-unused-fields.d.mts +12 -0
  189. package/esm/rules/no-unused-fields.js +94 -90
  190. package/{typings/rules/relay-arguments.d.cts → esm/rules/relay-arguments.d.mts} +12 -4
  191. package/esm/rules/relay-arguments.js +113 -108
  192. package/esm/rules/relay-connection-types.d.mts +13 -0
  193. package/esm/rules/relay-connection-types.js +98 -91
  194. package/{typings/rules/relay-edge-types.d.cts → esm/rules/relay-edge-types.d.mts} +12 -4
  195. package/esm/rules/relay-edge-types.js +178 -177
  196. package/esm/rules/relay-page-info.d.mts +12 -0
  197. package/esm/rules/relay-page-info.js +84 -86
  198. package/{typings/rules/require-deprecation-date.d.cts → esm/rules/require-deprecation-date.d.mts} +12 -4
  199. package/esm/rules/require-deprecation-date.js +120 -110
  200. package/esm/rules/require-deprecation-reason.d.mts +12 -0
  201. package/esm/rules/require-deprecation-reason.js +57 -44
  202. package/{typings/rules/require-description.d.cts → esm/rules/require-description.d.mts} +13 -5
  203. package/esm/rules/require-description.js +151 -130
  204. package/esm/rules/require-field-of-type-query-in-mutation-result.d.mts +12 -0
  205. package/esm/rules/require-field-of-type-query-in-mutation-result.js +58 -49
  206. package/{typings/rules/require-id-when-available.d.cts → esm/rules/require-id-when-available.d.mts} +12 -4
  207. package/esm/rules/require-id-when-available.js +186 -171
  208. package/esm/rules/require-import-fragment.d.mts +12 -0
  209. package/esm/rules/require-import-fragment.js +105 -85
  210. package/esm/rules/require-nullable-fields-with-oneof.d.mts +12 -0
  211. package/esm/rules/require-nullable-fields-with-oneof.js +57 -48
  212. package/esm/rules/require-nullable-result-in-root.d.mts +12 -0
  213. package/esm/rules/require-nullable-result-in-root.js +74 -66
  214. package/esm/rules/require-type-pattern-with-oneof.d.mts +12 -0
  215. package/esm/rules/require-type-pattern-with-oneof.js +47 -40
  216. package/{typings/rules/selection-set-depth.d.cts → esm/rules/selection-set-depth.d.mts} +12 -4
  217. package/esm/rules/selection-set-depth.js +114 -104
  218. package/{typings/rules/strict-id-in-types.d.cts → esm/rules/strict-id-in-types.d.mts} +12 -4
  219. package/esm/rules/strict-id-in-types.js +125 -119
  220. package/esm/rules/unique-fragment-name.d.mts +13 -0
  221. package/esm/rules/unique-fragment-name.js +65 -60
  222. package/esm/rules/unique-operation-name.d.mts +12 -0
  223. package/esm/rules/unique-operation-name.js +42 -33
  224. package/esm/schema.d.mts +12 -0
  225. package/esm/schema.js +29 -26
  226. package/esm/siblings.d.mts +8 -0
  227. package/esm/siblings.js +105 -104
  228. package/esm/testkit.d.mts +8 -0
  229. package/esm/testkit.js +132 -141
  230. package/esm/types-2e1afd7c.d.ts +129 -0
  231. package/esm/types.d.mts +8 -0
  232. package/esm/utils.d.mts +44 -0
  233. package/esm/utils.js +138 -116
  234. package/package.json +40 -30
  235. package/typings/estree-converter/converter.d.cts +0 -3
  236. package/typings/estree-converter/converter.d.ts +0 -3
  237. package/typings/estree-converter/index.d.cts +0 -3
  238. package/typings/estree-converter/index.d.ts +0 -3
  239. package/typings/estree-converter/utils.d.cts +0 -13
  240. package/typings/estree-converter/utils.d.ts +0 -13
  241. package/typings/graphql-config.d.cts +0 -4
  242. package/typings/graphql-config.d.ts +0 -4
  243. package/typings/index.d.cts +0 -10
  244. package/typings/index.d.ts +0 -10
  245. package/typings/parser.d.cts +0 -2
  246. package/typings/parser.d.ts +0 -2
  247. package/typings/processor.d.cts +0 -6
  248. package/typings/processor.d.ts +0 -6
  249. package/typings/rules/graphql-js-validation.d.cts +0 -2
  250. package/typings/rules/graphql-js-validation.d.ts +0 -2
  251. package/typings/rules/index.d.cts +0 -111
  252. package/typings/rules/index.d.ts +0 -111
  253. package/typings/rules/no-anonymous-operations.d.cts +0 -2
  254. package/typings/rules/no-anonymous-operations.d.ts +0 -2
  255. package/typings/rules/no-case-insensitive-enum-values-duplicates.d.cts +0 -2
  256. package/typings/rules/no-case-insensitive-enum-values-duplicates.d.ts +0 -2
  257. package/typings/rules/no-deprecated.d.cts +0 -2
  258. package/typings/rules/no-deprecated.d.ts +0 -2
  259. package/typings/rules/no-duplicate-fields.d.cts +0 -2
  260. package/typings/rules/no-duplicate-fields.d.ts +0 -2
  261. package/typings/rules/no-hashtag-description.d.cts +0 -3
  262. package/typings/rules/no-hashtag-description.d.ts +0 -3
  263. package/typings/rules/no-one-place-fragments.d.cts +0 -2
  264. package/typings/rules/no-one-place-fragments.d.ts +0 -2
  265. package/typings/rules/no-scalar-result-type-on-mutation.d.cts +0 -2
  266. package/typings/rules/no-scalar-result-type-on-mutation.d.ts +0 -2
  267. package/typings/rules/no-typename-prefix.d.cts +0 -2
  268. package/typings/rules/no-typename-prefix.d.ts +0 -2
  269. package/typings/rules/no-unreachable-types.d.cts +0 -2
  270. package/typings/rules/no-unreachable-types.d.ts +0 -2
  271. package/typings/rules/no-unused-fields.d.cts +0 -2
  272. package/typings/rules/no-unused-fields.d.ts +0 -2
  273. package/typings/rules/relay-connection-types.d.cts +0 -4
  274. package/typings/rules/relay-connection-types.d.ts +0 -4
  275. package/typings/rules/relay-page-info.d.cts +0 -2
  276. package/typings/rules/relay-page-info.d.ts +0 -2
  277. package/typings/rules/require-deprecation-reason.d.cts +0 -2
  278. package/typings/rules/require-deprecation-reason.d.ts +0 -2
  279. package/typings/rules/require-field-of-type-query-in-mutation-result.d.cts +0 -2
  280. package/typings/rules/require-field-of-type-query-in-mutation-result.d.ts +0 -2
  281. package/typings/rules/require-import-fragment.d.cts +0 -2
  282. package/typings/rules/require-import-fragment.d.ts +0 -2
  283. package/typings/rules/require-nullable-fields-with-oneof.d.cts +0 -2
  284. package/typings/rules/require-nullable-fields-with-oneof.d.ts +0 -2
  285. package/typings/rules/require-nullable-result-in-root.d.cts +0 -2
  286. package/typings/rules/require-nullable-result-in-root.d.ts +0 -2
  287. package/typings/rules/require-type-pattern-with-oneof.d.cts +0 -2
  288. package/typings/rules/require-type-pattern-with-oneof.d.ts +0 -2
  289. package/typings/rules/unique-fragment-name.d.cts +0 -5
  290. package/typings/rules/unique-fragment-name.d.ts +0 -5
  291. package/typings/rules/unique-operation-name.d.cts +0 -2
  292. package/typings/rules/unique-operation-name.d.ts +0 -2
  293. package/typings/schema.d.cts +0 -3
  294. package/typings/schema.d.ts +0 -3
  295. package/typings/siblings.d.cts +0 -22
  296. package/typings/siblings.d.ts +0 -22
  297. package/typings/testkit.d.cts +0 -29
  298. package/typings/testkit.d.ts +0 -29
  299. package/typings/types.d.cts +0 -83
  300. package/typings/types.d.ts +0 -83
  301. package/typings/utils.d.cts +0 -40
  302. package/typings/utils.d.ts +0 -40
@@ -1,192 +1,209 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.rule = void 0;
4
- const utils_1 = require("@graphql-tools/utils");
5
- const graphql_1 = require("graphql");
6
- const utils_js_1 = require("../utils.js");
7
- const RULE_ID = 'relay-edge-types';
8
- const MESSAGE_MUST_BE_OBJECT_TYPE = 'MESSAGE_MUST_BE_OBJECT_TYPE';
9
- const MESSAGE_MISSING_EDGE_SUFFIX = 'MESSAGE_MISSING_EDGE_SUFFIX';
10
- const MESSAGE_LIST_TYPE_ONLY_EDGE_TYPE = 'MESSAGE_LIST_TYPE_ONLY_EDGE_TYPE';
11
- const MESSAGE_SHOULD_IMPLEMENTS_NODE = 'MESSAGE_SHOULD_IMPLEMENTS_NODE';
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 relay_edge_types_exports = {};
20
+ __export(relay_edge_types_exports, {
21
+ rule: () => rule
22
+ });
23
+ module.exports = __toCommonJS(relay_edge_types_exports);
24
+ var import_utils = require("@graphql-tools/utils");
25
+ var import_graphql = require("graphql");
26
+ var import_utils2 = require("../utils.js");
27
+ const RULE_ID = "relay-edge-types";
28
+ const MESSAGE_MUST_BE_OBJECT_TYPE = "MESSAGE_MUST_BE_OBJECT_TYPE";
29
+ const MESSAGE_MISSING_EDGE_SUFFIX = "MESSAGE_MISSING_EDGE_SUFFIX";
30
+ const MESSAGE_LIST_TYPE_ONLY_EDGE_TYPE = "MESSAGE_LIST_TYPE_ONLY_EDGE_TYPE";
31
+ const MESSAGE_SHOULD_IMPLEMENTS_NODE = "MESSAGE_SHOULD_IMPLEMENTS_NODE";
12
32
  let edgeTypesCache;
13
- function getEdgeTypes(schema) {
14
- // We don't want cache edgeTypes on test environment
15
- // Otherwise edgeTypes will be same for all tests
16
- if (process.env.NODE_ENV !== 'test' && edgeTypesCache) {
17
- return edgeTypesCache;
18
- }
19
- const edgeTypes = new Set();
20
- const visitor = {
21
- ObjectTypeDefinition(node) {
22
- var _a;
23
- const typeName = node.name.value;
24
- const hasConnectionSuffix = typeName.endsWith('Connection');
25
- if (!hasConnectionSuffix) {
26
- return;
27
- }
28
- const edges = (_a = node.fields) === null || _a === void 0 ? void 0 : _a.find(field => field.name.value === 'edges');
29
- if (edges) {
30
- const edgesTypeName = (0, utils_js_1.getTypeName)(edges);
31
- const edgesType = schema.getType(edgesTypeName);
32
- if ((0, graphql_1.isObjectType)(edgesType)) {
33
- edgeTypes.add(edgesTypeName);
34
- }
35
- }
36
- },
37
- };
38
- const astNode = (0, utils_1.getDocumentNodeFromSchema)(schema); // Transforms the schema into ASTNode
39
- (0, graphql_1.visit)(astNode, visitor);
40
- edgeTypesCache = edgeTypes;
33
+ function getEdgeTypes(schema2) {
34
+ if (process.env.NODE_ENV !== "test" && edgeTypesCache) {
41
35
  return edgeTypesCache;
36
+ }
37
+ const edgeTypes = /* @__PURE__ */ new Set();
38
+ const visitor = {
39
+ ObjectTypeDefinition(node) {
40
+ const typeName = node.name.value;
41
+ const hasConnectionSuffix = typeName.endsWith("Connection");
42
+ if (!hasConnectionSuffix) {
43
+ return;
44
+ }
45
+ const edges = node.fields?.find((field) => field.name.value === "edges");
46
+ if (edges) {
47
+ const edgesTypeName = (0, import_utils2.getTypeName)(edges);
48
+ const edgesType = schema2.getType(edgesTypeName);
49
+ if ((0, import_graphql.isObjectType)(edgesType)) {
50
+ edgeTypes.add(edgesTypeName);
51
+ }
52
+ }
53
+ }
54
+ };
55
+ const astNode = (0, import_utils.getDocumentNodeFromSchema)(schema2);
56
+ (0, import_graphql.visit)(astNode, visitor);
57
+ edgeTypesCache = edgeTypes;
58
+ return edgeTypesCache;
42
59
  }
43
60
  const schema = {
44
- type: 'array',
45
- maxItems: 1,
46
- items: {
47
- type: 'object',
48
- additionalProperties: false,
49
- minProperties: 1,
50
- properties: {
51
- withEdgeSuffix: {
52
- type: 'boolean',
53
- default: true,
54
- description: 'Edge type name must end in "Edge".',
55
- },
56
- shouldImplementNode: {
57
- type: 'boolean',
58
- default: true,
59
- description: "Edge type's field `node` must implement `Node` interface.",
60
- },
61
- listTypeCanWrapOnlyEdgeType: {
62
- type: 'boolean',
63
- default: true,
64
- description: 'A list type should only wrap an edge type.',
65
- },
66
- },
67
- },
61
+ type: "array",
62
+ maxItems: 1,
63
+ items: {
64
+ type: "object",
65
+ additionalProperties: false,
66
+ minProperties: 1,
67
+ properties: {
68
+ withEdgeSuffix: {
69
+ type: "boolean",
70
+ default: true,
71
+ description: 'Edge type name must end in "Edge".'
72
+ },
73
+ shouldImplementNode: {
74
+ type: "boolean",
75
+ default: true,
76
+ description: "Edge type's field `node` must implement `Node` interface."
77
+ },
78
+ listTypeCanWrapOnlyEdgeType: {
79
+ type: "boolean",
80
+ default: true,
81
+ description: "A list type should only wrap an edge type."
82
+ }
83
+ }
84
+ }
68
85
  };
69
- exports.rule = {
70
- meta: {
71
- type: 'problem',
72
- docs: {
73
- category: 'Schema',
74
- description: [
75
- 'Set of rules to follow Relay specification for Edge types.',
76
- '',
77
- "- A type that is returned in list form by a connection type's `edges` field is considered by this spec to be an Edge type",
78
- '- Edge type must be an Object type',
79
- '- Edge type must contain a field `node` that return either Scalar, Enum, Object, Interface, Union, or a non-null wrapper around one of those types. Notably, this field cannot return a list',
80
- '- Edge type must contain a field `cursor` that return either String, Scalar, or a non-null wrapper around one of those types',
81
- '- Edge type name must end in "Edge" _(optional)_',
82
- "- Edge type's field `node` must implement `Node` interface _(optional)_",
83
- '- A list type should only wrap an edge type _(optional)_',
84
- ].join('\n'),
85
- url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
86
- isDisabledForAllConfig: true,
87
- requiresSchema: true,
88
- examples: [
89
- {
90
- title: 'Correct',
91
- code: /* GraphQL */ `
86
+ const rule = {
87
+ meta: {
88
+ type: "problem",
89
+ docs: {
90
+ category: "Schema",
91
+ description: [
92
+ "Set of rules to follow Relay specification for Edge types.",
93
+ "",
94
+ "- A type that is returned in list form by a connection type's `edges` field is considered by this spec to be an Edge type",
95
+ "- Edge type must be an Object type",
96
+ "- Edge type must contain a field `node` that return either Scalar, Enum, Object, Interface, Union, or a non-null wrapper around one of those types. Notably, this field cannot return a list",
97
+ "- Edge type must contain a field `cursor` that return either String, Scalar, or a non-null wrapper around one of those types",
98
+ '- Edge type name must end in "Edge" _(optional)_',
99
+ "- Edge type's field `node` must implement `Node` interface _(optional)_",
100
+ "- A list type should only wrap an edge type _(optional)_"
101
+ ].join("\n"),
102
+ url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
103
+ isDisabledForAllConfig: true,
104
+ requiresSchema: true,
105
+ examples: [
106
+ {
107
+ title: "Correct",
108
+ code: (
109
+ /* GraphQL */
110
+ `
92
111
  type UserConnection {
93
112
  edges: [UserEdge]
94
113
  pageInfo: PageInfo!
95
114
  }
96
- `,
97
- },
98
- ],
99
- },
100
- messages: {
101
- [MESSAGE_MUST_BE_OBJECT_TYPE]: 'Edge type must be an Object type.',
102
- [MESSAGE_MISSING_EDGE_SUFFIX]: 'Edge type must have "Edge" suffix.',
103
- [MESSAGE_LIST_TYPE_ONLY_EDGE_TYPE]: 'A list type should only wrap an edge type.',
104
- [MESSAGE_SHOULD_IMPLEMENTS_NODE]: "Edge type's field `node` must implement `Node` interface.",
105
- },
106
- schema,
107
- },
108
- create(context) {
109
- const schema = (0, utils_js_1.requireGraphQLSchemaFromContext)(RULE_ID, context);
110
- const edgeTypes = getEdgeTypes(schema);
111
- const options = {
112
- withEdgeSuffix: true,
113
- shouldImplementNode: true,
114
- listTypeCanWrapOnlyEdgeType: true,
115
- ...context.options[0],
116
- };
117
- const isNamedOrNonNullNamed = (node) => node.kind === graphql_1.Kind.NAMED_TYPE ||
118
- (node.kind === graphql_1.Kind.NON_NULL_TYPE && node.gqlType.kind === graphql_1.Kind.NAMED_TYPE);
119
- const checkNodeField = (node) => {
120
- var _a, _b;
121
- const nodeField = (_a = node.fields) === null || _a === void 0 ? void 0 : _a.find(field => field.name.value === 'node');
122
- const message = 'return either a Scalar, Enum, Object, Interface, Union, or a non-null wrapper around one of those types.';
123
- if (!nodeField) {
124
- context.report({
125
- node: node.name,
126
- message: `Edge type must contain a field \`node\` that ${message}`,
127
- });
128
- }
129
- else if (!isNamedOrNonNullNamed(nodeField.gqlType)) {
130
- context.report({ node: nodeField.name, message: `Field \`node\` must ${message}` });
131
- }
132
- else if (options.shouldImplementNode) {
133
- const nodeReturnTypeName = (0, utils_js_1.getTypeName)(nodeField.gqlType.rawNode());
134
- const type = schema.getType(nodeReturnTypeName);
135
- if (!(0, graphql_1.isObjectType)(type)) {
136
- return;
137
- }
138
- const implementsNode = (_b = type.astNode.interfaces) === null || _b === void 0 ? void 0 : _b.some(n => n.name.value === 'Node');
139
- if (!implementsNode) {
140
- context.report({ node: node.name, messageId: MESSAGE_SHOULD_IMPLEMENTS_NODE });
141
- }
142
- }
143
- };
144
- const checkCursorField = (node) => {
145
- var _a;
146
- const cursorField = (_a = node.fields) === null || _a === void 0 ? void 0 : _a.find(field => field.name.value === 'cursor');
147
- const message = 'return either a String, Scalar, or a non-null wrapper wrapper around one of those types.';
148
- if (!cursorField) {
149
- context.report({
150
- node: node.name,
151
- message: `Edge type must contain a field \`cursor\` that ${message}`,
152
- });
153
- return;
154
- }
155
- const typeName = (0, utils_js_1.getTypeName)(cursorField.rawNode());
156
- if (!isNamedOrNonNullNamed(cursorField.gqlType) ||
157
- (typeName !== 'String' && !(0, graphql_1.isScalarType)(schema.getType(typeName)))) {
158
- context.report({ node: cursorField.name, message: `Field \`cursor\` must ${message}` });
159
- }
160
- };
161
- const listeners = {
162
- ':matches(ObjectTypeDefinition, ObjectTypeExtension)[name.value=/Connection$/] > FieldDefinition[name.value=edges] > .gqlType Name'(node) {
163
- const type = schema.getType(node.value);
164
- if (!(0, graphql_1.isObjectType)(type)) {
165
- context.report({ node, messageId: MESSAGE_MUST_BE_OBJECT_TYPE });
166
- }
167
- },
168
- ':matches(ObjectTypeDefinition, ObjectTypeExtension)'(node) {
169
- const typeName = node.name.value;
170
- if (edgeTypes.has(typeName)) {
171
- checkNodeField(node);
172
- checkCursorField(node);
173
- if (options.withEdgeSuffix && !typeName.endsWith('Edge')) {
174
- context.report({ node: node.name, messageId: MESSAGE_MISSING_EDGE_SUFFIX });
175
- }
176
- }
177
- },
178
- };
179
- if (options.listTypeCanWrapOnlyEdgeType) {
180
- listeners['FieldDefinition > .gqlType'] = (node) => {
181
- if (node.kind === graphql_1.Kind.LIST_TYPE ||
182
- (node.kind === graphql_1.Kind.NON_NULL_TYPE && node.gqlType.kind === graphql_1.Kind.LIST_TYPE)) {
183
- const typeName = (0, utils_js_1.getTypeName)(node.rawNode());
184
- if (!edgeTypes.has(typeName)) {
185
- context.report({ node, messageId: MESSAGE_LIST_TYPE_ONLY_EDGE_TYPE });
186
- }
187
- }
188
- };
115
+ `
116
+ )
189
117
  }
190
- return listeners;
118
+ ]
191
119
  },
120
+ messages: {
121
+ [MESSAGE_MUST_BE_OBJECT_TYPE]: "Edge type must be an Object type.",
122
+ [MESSAGE_MISSING_EDGE_SUFFIX]: 'Edge type must have "Edge" suffix.',
123
+ [MESSAGE_LIST_TYPE_ONLY_EDGE_TYPE]: "A list type should only wrap an edge type.",
124
+ [MESSAGE_SHOULD_IMPLEMENTS_NODE]: "Edge type's field `node` must implement `Node` interface."
125
+ },
126
+ schema
127
+ },
128
+ create(context) {
129
+ const schema2 = (0, import_utils2.requireGraphQLSchemaFromContext)(RULE_ID, context);
130
+ const edgeTypes = getEdgeTypes(schema2);
131
+ const options = {
132
+ withEdgeSuffix: true,
133
+ shouldImplementNode: true,
134
+ listTypeCanWrapOnlyEdgeType: true,
135
+ ...context.options[0]
136
+ };
137
+ const isNamedOrNonNullNamed = (node) => node.kind === import_graphql.Kind.NAMED_TYPE || node.kind === import_graphql.Kind.NON_NULL_TYPE && node.gqlType.kind === import_graphql.Kind.NAMED_TYPE;
138
+ const checkNodeField = (node) => {
139
+ const nodeField = node.fields?.find((field) => field.name.value === "node");
140
+ const message = "return either a Scalar, Enum, Object, Interface, Union, or a non-null wrapper around one of those types.";
141
+ if (!nodeField) {
142
+ context.report({
143
+ node: node.name,
144
+ message: `Edge type must contain a field \`node\` that ${message}`
145
+ });
146
+ } else if (!isNamedOrNonNullNamed(nodeField.gqlType)) {
147
+ context.report({ node: nodeField.name, message: `Field \`node\` must ${message}` });
148
+ } else if (options.shouldImplementNode) {
149
+ const nodeReturnTypeName = (0, import_utils2.getTypeName)(nodeField.gqlType.rawNode());
150
+ const type = schema2.getType(nodeReturnTypeName);
151
+ if (!(0, import_graphql.isObjectType)(type)) {
152
+ return;
153
+ }
154
+ const implementsNode = type.astNode.interfaces?.some((n) => n.name.value === "Node");
155
+ if (!implementsNode) {
156
+ context.report({ node: node.name, messageId: MESSAGE_SHOULD_IMPLEMENTS_NODE });
157
+ }
158
+ }
159
+ };
160
+ const checkCursorField = (node) => {
161
+ const cursorField = node.fields?.find((field) => field.name.value === "cursor");
162
+ const message = "return either a String, Scalar, or a non-null wrapper wrapper around one of those types.";
163
+ if (!cursorField) {
164
+ context.report({
165
+ node: node.name,
166
+ message: `Edge type must contain a field \`cursor\` that ${message}`
167
+ });
168
+ return;
169
+ }
170
+ const typeName = (0, import_utils2.getTypeName)(cursorField.rawNode());
171
+ if (!isNamedOrNonNullNamed(cursorField.gqlType) || typeName !== "String" && !(0, import_graphql.isScalarType)(schema2.getType(typeName))) {
172
+ context.report({ node: cursorField.name, message: `Field \`cursor\` must ${message}` });
173
+ }
174
+ };
175
+ const listeners = {
176
+ ":matches(ObjectTypeDefinition, ObjectTypeExtension)[name.value=/Connection$/] > FieldDefinition[name.value=edges] > .gqlType Name"(node) {
177
+ const type = schema2.getType(node.value);
178
+ if (!(0, import_graphql.isObjectType)(type)) {
179
+ context.report({ node, messageId: MESSAGE_MUST_BE_OBJECT_TYPE });
180
+ }
181
+ },
182
+ ":matches(ObjectTypeDefinition, ObjectTypeExtension)"(node) {
183
+ const typeName = node.name.value;
184
+ if (edgeTypes.has(typeName)) {
185
+ checkNodeField(node);
186
+ checkCursorField(node);
187
+ if (options.withEdgeSuffix && !typeName.endsWith("Edge")) {
188
+ context.report({ node: node.name, messageId: MESSAGE_MISSING_EDGE_SUFFIX });
189
+ }
190
+ }
191
+ }
192
+ };
193
+ if (options.listTypeCanWrapOnlyEdgeType) {
194
+ listeners["FieldDefinition > .gqlType"] = (node) => {
195
+ if (node.kind === import_graphql.Kind.LIST_TYPE || node.kind === import_graphql.Kind.NON_NULL_TYPE && node.gqlType.kind === import_graphql.Kind.LIST_TYPE) {
196
+ const typeName = (0, import_utils2.getTypeName)(node.rawNode());
197
+ if (!edgeTypes.has(typeName)) {
198
+ context.report({ node, messageId: MESSAGE_LIST_TYPE_ONLY_EDGE_TYPE });
199
+ }
200
+ }
201
+ };
202
+ }
203
+ return listeners;
204
+ }
192
205
  };
206
+ // Annotate the CommonJS export names for ESM import in node:
207
+ 0 && (module.exports = {
208
+ rule
209
+ });
@@ -0,0 +1,12 @@
1
+ import { i as GraphQLESLintRule } from '../types-e3367e3c.js';
2
+ import '@graphql-tools/utils';
3
+ import 'eslint';
4
+ import 'estree';
5
+ import 'graphql';
6
+ import 'graphql-config';
7
+ import 'json-schema-to-ts';
8
+ import '../estree-converter/types.js';
9
+
10
+ declare const rule: GraphQLESLintRule;
11
+
12
+ export { rule };
@@ -1,101 +1,120 @@
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 relay_connection_types_js_1 = require("./relay-connection-types.js");
7
- const RULE_ID = 'relay-page-info';
8
- const MESSAGE_MUST_EXIST = 'MESSAGE_MUST_EXIST';
9
- const MESSAGE_MUST_BE_OBJECT_TYPE = 'MESSAGE_MUST_BE_OBJECT_TYPE';
10
- const notPageInfoTypesSelector = `:matches(${relay_connection_types_js_1.NON_OBJECT_TYPES})[name.value=PageInfo] > .name`;
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 relay_page_info_exports = {};
20
+ __export(relay_page_info_exports, {
21
+ rule: () => rule
22
+ });
23
+ module.exports = __toCommonJS(relay_page_info_exports);
24
+ var import_graphql = require("graphql");
25
+ var import_utils = require("../utils.js");
26
+ var import_relay_connection_types = require("./relay-connection-types.js");
27
+ const RULE_ID = "relay-page-info";
28
+ const MESSAGE_MUST_EXIST = "MESSAGE_MUST_EXIST";
29
+ const MESSAGE_MUST_BE_OBJECT_TYPE = "MESSAGE_MUST_BE_OBJECT_TYPE";
30
+ const notPageInfoTypesSelector = `:matches(${import_relay_connection_types.NON_OBJECT_TYPES})[name.value=PageInfo] > .name`;
11
31
  let hasPageInfoChecked = false;
12
- exports.rule = {
13
- meta: {
14
- type: 'problem',
15
- docs: {
16
- category: 'Schema',
17
- description: [
18
- 'Set of rules to follow Relay specification for `PageInfo` object.',
19
- '',
20
- '- `PageInfo` must be an Object type',
21
- '- `PageInfo` must contain fields `hasPreviousPage` and `hasNextPage`, that return non-null Boolean',
22
- '- `PageInfo` must contain fields `startCursor` and `endCursor`, that return either String or Scalar, which can be null if there are no results',
23
- ].join('\n'),
24
- url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
25
- examples: [
26
- {
27
- title: 'Correct',
28
- code: /* GraphQL */ `
32
+ const rule = {
33
+ meta: {
34
+ type: "problem",
35
+ docs: {
36
+ category: "Schema",
37
+ description: [
38
+ "Set of rules to follow Relay specification for `PageInfo` object.",
39
+ "",
40
+ "- `PageInfo` must be an Object type",
41
+ "- `PageInfo` must contain fields `hasPreviousPage` and `hasNextPage`, that return non-null Boolean",
42
+ "- `PageInfo` must contain fields `startCursor` and `endCursor`, that return either String or Scalar, which can be null if there are no results"
43
+ ].join("\n"),
44
+ url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
45
+ examples: [
46
+ {
47
+ title: "Correct",
48
+ code: (
49
+ /* GraphQL */
50
+ `
29
51
  type PageInfo {
30
52
  hasPreviousPage: Boolean!
31
53
  hasNextPage: Boolean!
32
54
  startCursor: String
33
55
  endCursor: String
34
56
  }
35
- `,
36
- },
37
- ],
38
- isDisabledForAllConfig: true,
39
- requiresSchema: true,
40
- },
41
- messages: {
42
- [MESSAGE_MUST_EXIST]: 'The server must provide a `PageInfo` object.',
43
- [MESSAGE_MUST_BE_OBJECT_TYPE]: '`PageInfo` must be an Object type.',
44
- },
45
- schema: [],
57
+ `
58
+ )
59
+ }
60
+ ],
61
+ isDisabledForAllConfig: true,
62
+ requiresSchema: true
46
63
  },
47
- create(context) {
48
- const schema = (0, utils_js_1.requireGraphQLSchemaFromContext)(RULE_ID, context);
49
- if (process.env.NODE_ENV === 'test' || !hasPageInfoChecked) {
50
- const pageInfoType = schema.getType('PageInfo');
51
- if (!pageInfoType) {
52
- context.report({
53
- loc: utils_js_1.REPORT_ON_FIRST_CHARACTER,
54
- messageId: MESSAGE_MUST_EXIST,
55
- });
64
+ messages: {
65
+ [MESSAGE_MUST_EXIST]: "The server must provide a `PageInfo` object.",
66
+ [MESSAGE_MUST_BE_OBJECT_TYPE]: "`PageInfo` must be an Object type."
67
+ },
68
+ schema: []
69
+ },
70
+ create(context) {
71
+ const schema = (0, import_utils.requireGraphQLSchemaFromContext)(RULE_ID, context);
72
+ if (process.env.NODE_ENV === "test" || !hasPageInfoChecked) {
73
+ const pageInfoType = schema.getType("PageInfo");
74
+ if (!pageInfoType) {
75
+ context.report({
76
+ loc: import_utils.REPORT_ON_FIRST_CHARACTER,
77
+ messageId: MESSAGE_MUST_EXIST
78
+ });
79
+ }
80
+ hasPageInfoChecked = true;
81
+ }
82
+ return {
83
+ [notPageInfoTypesSelector](node) {
84
+ context.report({ node, messageId: MESSAGE_MUST_BE_OBJECT_TYPE });
85
+ },
86
+ "ObjectTypeDefinition[name.value=PageInfo]"(node) {
87
+ const fieldMap = Object.fromEntries(
88
+ node.fields?.map((field) => [field.name.value, field]) || []
89
+ );
90
+ const checkField = (fieldName, typeName) => {
91
+ const field = fieldMap[fieldName];
92
+ let isAllowedType = false;
93
+ if (field) {
94
+ const type = field.gqlType;
95
+ if (typeName === "Boolean") {
96
+ isAllowedType = type.kind === import_graphql.Kind.NON_NULL_TYPE && type.gqlType.kind === import_graphql.Kind.NAMED_TYPE && type.gqlType.name.value === "Boolean";
97
+ } else if (type.kind === import_graphql.Kind.NAMED_TYPE) {
98
+ isAllowedType = type.name.value === "String" || (0, import_graphql.isScalarType)(schema.getType(type.name.value));
56
99
  }
57
- hasPageInfoChecked = true;
58
- }
59
- return {
60
- [notPageInfoTypesSelector](node) {
61
- context.report({ node, messageId: MESSAGE_MUST_BE_OBJECT_TYPE });
62
- },
63
- 'ObjectTypeDefinition[name.value=PageInfo]'(node) {
64
- var _a;
65
- const fieldMap = Object.fromEntries(((_a = node.fields) === null || _a === void 0 ? void 0 : _a.map(field => [field.name.value, field])) || []);
66
- const checkField = (fieldName, typeName) => {
67
- const field = fieldMap[fieldName];
68
- let isAllowedType = false;
69
- if (field) {
70
- const type = field.gqlType;
71
- if (typeName === 'Boolean') {
72
- isAllowedType =
73
- type.kind === graphql_1.Kind.NON_NULL_TYPE &&
74
- type.gqlType.kind === graphql_1.Kind.NAMED_TYPE &&
75
- type.gqlType.name.value === 'Boolean';
76
- }
77
- else if (type.kind === graphql_1.Kind.NAMED_TYPE) {
78
- isAllowedType =
79
- type.name.value === 'String' || (0, graphql_1.isScalarType)(schema.getType(type.name.value));
80
- }
81
- }
82
- if (!isAllowedType) {
83
- const returnType = typeName === 'Boolean'
84
- ? 'non-null Boolean'
85
- : 'either String or Scalar, which can be null if there are no results';
86
- context.report({
87
- node: field ? field.name : node.name,
88
- message: field
89
- ? `Field \`${fieldName}\` must return ${returnType}.`
90
- : `\`PageInfo\` must contain a field \`${fieldName}\`, that return ${returnType}.`,
91
- });
92
- }
93
- };
94
- checkField('hasPreviousPage', 'Boolean');
95
- checkField('hasNextPage', 'Boolean');
96
- checkField('startCursor', 'String');
97
- checkField('endCursor', 'String');
98
- },
100
+ }
101
+ if (!isAllowedType) {
102
+ const returnType = typeName === "Boolean" ? "non-null Boolean" : "either String or Scalar, which can be null if there are no results";
103
+ context.report({
104
+ node: field ? field.name : node.name,
105
+ message: field ? `Field \`${fieldName}\` must return ${returnType}.` : `\`PageInfo\` must contain a field \`${fieldName}\`, that return ${returnType}.`
106
+ });
107
+ }
99
108
  };
100
- },
109
+ checkField("hasPreviousPage", "Boolean");
110
+ checkField("hasNextPage", "Boolean");
111
+ checkField("startCursor", "String");
112
+ checkField("endCursor", "String");
113
+ }
114
+ };
115
+ }
101
116
  };
117
+ // Annotate the CommonJS export names for ESM import in node:
118
+ 0 && (module.exports = {
119
+ rule
120
+ });
@@ -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;
@@ -13,6 +20,7 @@ declare const schema: {
13
20
  };
14
21
  };
15
22
  };
16
- export type RuleOptions = FromSchema<typeof schema>;
17
- export declare const rule: GraphQLESLintRule<RuleOptions>;
18
- export {};
23
+ type RuleOptions = FromSchema<typeof schema>;
24
+ declare const rule: GraphQLESLintRule<RuleOptions>;
25
+
26
+ export { RuleOptions, rule };