@graphql-eslint/eslint-plugin 4.0.0-alpha-20230801163310-8bc4340 → 4.0.0-alpha-20230810160036-304c2c0

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 (222) hide show
  1. package/README.md +2 -0
  2. package/cjs/cache.js +10 -19
  3. package/cjs/configs/index.d.ts +42 -16
  4. package/cjs/configs/index.js +10 -19
  5. package/cjs/configs/operations-all.d.ts +4 -3
  6. package/cjs/configs/operations-all.js +5 -4
  7. package/cjs/configs/operations-recommended.d.ts +3 -1
  8. package/cjs/configs/operations-recommended.js +3 -1
  9. package/cjs/configs/schema-all.d.ts +6 -1
  10. package/cjs/configs/schema-all.js +5 -2
  11. package/cjs/configs/schema-recommended.d.ts +19 -1
  12. package/cjs/configs/schema-recommended.js +22 -2
  13. package/cjs/documents.js +17 -32
  14. package/cjs/estree-converter/converter.js +14 -27
  15. package/cjs/estree-converter/index.js +4 -7
  16. package/cjs/estree-converter/types.js +3 -5
  17. package/cjs/estree-converter/utils.d.ts +2 -3
  18. package/cjs/estree-converter/utils.js +15 -45
  19. package/cjs/flat-configs.d.ts +59 -12
  20. package/cjs/flat-configs.js +9 -14
  21. package/cjs/graphql-config.d.ts +4 -3
  22. package/cjs/graphql-config.js +23 -44
  23. package/cjs/index.d.ts +10 -4
  24. package/cjs/index.js +8 -16
  25. package/cjs/parser.d.ts +4 -3
  26. package/cjs/parser.js +38 -45
  27. package/cjs/processor.d.ts +5 -1
  28. package/cjs/processor.js +25 -57
  29. package/cjs/rules/alphabetize.d.ts +6 -16
  30. package/cjs/rules/alphabetize.js +60 -132
  31. package/cjs/rules/description-style.d.ts +4 -3
  32. package/cjs/rules/description-style.js +11 -18
  33. package/cjs/rules/graphql-js-validation.d.ts +4 -3
  34. package/cjs/rules/graphql-js-validation.js +151 -225
  35. package/cjs/rules/index.d.ts +15 -13
  36. package/cjs/rules/index.js +8 -45
  37. package/cjs/rules/input-name.d.ts +4 -3
  38. package/cjs/rules/input-name.js +43 -59
  39. package/cjs/rules/lone-executable-definition.d.ts +6 -5
  40. package/cjs/rules/lone-executable-definition.js +14 -28
  41. package/cjs/rules/match-document-filename.d.ts +4 -3
  42. package/cjs/rules/match-document-filename.js +39 -70
  43. package/cjs/rules/naming-convention.d.ts +4 -3
  44. package/cjs/rules/naming-convention.js +56 -74
  45. package/cjs/rules/no-anonymous-operations.d.ts +4 -3
  46. package/cjs/rules/no-anonymous-operations.js +11 -18
  47. package/cjs/rules/no-deprecated.d.ts +4 -3
  48. package/cjs/rules/no-deprecated.js +15 -29
  49. package/cjs/rules/no-duplicate-fields.d.ts +4 -3
  50. package/cjs/rules/no-duplicate-fields.js +13 -23
  51. package/cjs/rules/no-hashtag-description.d.ts +4 -3
  52. package/cjs/rules/no-hashtag-description.js +16 -29
  53. package/cjs/rules/no-one-place-fragments.d.ts +4 -3
  54. package/cjs/rules/no-one-place-fragments.js +17 -29
  55. package/cjs/rules/no-root-type.d.ts +4 -3
  56. package/cjs/rules/no-root-type.js +15 -25
  57. package/cjs/rules/no-scalar-result-type-on-mutation.d.ts +4 -3
  58. package/cjs/rules/no-scalar-result-type-on-mutation.js +18 -30
  59. package/cjs/rules/no-typename-prefix.d.ts +4 -3
  60. package/cjs/rules/no-typename-prefix.js +26 -33
  61. package/cjs/rules/no-unreachable-types.d.ts +4 -3
  62. package/cjs/rules/no-unreachable-types.js +25 -47
  63. package/cjs/rules/no-unused-fields.d.ts +4 -3
  64. package/cjs/rules/no-unused-fields.js +24 -49
  65. package/cjs/rules/relay-arguments.d.ts +4 -3
  66. package/cjs/rules/relay-arguments.js +20 -43
  67. package/cjs/rules/relay-connection-types.d.ts +4 -3
  68. package/cjs/rules/relay-connection-types.js +14 -45
  69. package/cjs/rules/relay-edge-types.d.ts +4 -3
  70. package/cjs/rules/relay-edge-types.js +48 -99
  71. package/cjs/rules/relay-page-info.d.ts +4 -3
  72. package/cjs/rules/relay-page-info.js +21 -44
  73. package/cjs/rules/require-deprecation-date.d.ts +4 -3
  74. package/cjs/rules/require-deprecation-date.js +15 -31
  75. package/cjs/rules/require-deprecation-reason.d.ts +4 -3
  76. package/cjs/rules/require-deprecation-reason.js +12 -20
  77. package/cjs/rules/require-description.d.ts +4 -3
  78. package/cjs/rules/require-description.js +39 -65
  79. package/cjs/rules/require-field-of-type-query-in-mutation-result.d.ts +4 -3
  80. package/cjs/rules/require-field-of-type-query-in-mutation-result.js +16 -31
  81. package/cjs/rules/require-import-fragment.d.ts +4 -3
  82. package/cjs/rules/require-import-fragment.js +22 -40
  83. package/cjs/rules/require-nullable-fields-with-oneof.d.ts +4 -3
  84. package/cjs/rules/require-nullable-fields-with-oneof.js +11 -22
  85. package/cjs/rules/require-nullable-result-in-root.d.ts +4 -3
  86. package/cjs/rules/require-nullable-result-in-root.js +34 -44
  87. package/cjs/rules/{require-id-when-available.d.ts → require-selections.d.ts} +4 -3
  88. package/cjs/rules/require-selections.js +198 -0
  89. package/cjs/rules/require-type-pattern-with-oneof.d.ts +4 -3
  90. package/cjs/rules/require-type-pattern-with-oneof.js +15 -23
  91. package/cjs/rules/selection-set-depth.d.ts +4 -3
  92. package/cjs/rules/selection-set-depth.js +18 -34
  93. package/cjs/rules/strict-id-in-types.d.ts +4 -3
  94. package/cjs/rules/strict-id-in-types.js +25 -43
  95. package/cjs/rules/{no-case-insensitive-enum-values-duplicates.d.ts → unique-enum-value-names.d.ts} +4 -3
  96. package/cjs/rules/{no-case-insensitive-enum-values-duplicates.js → unique-enum-value-names.js} +16 -21
  97. package/cjs/rules/unique-fragment-name.d.ts +3 -2
  98. package/cjs/rules/unique-fragment-name.js +24 -36
  99. package/cjs/rules/unique-operation-name.d.ts +4 -3
  100. package/cjs/rules/unique-operation-name.js +10 -12
  101. package/cjs/schema.d.ts +4 -3
  102. package/cjs/schema.js +14 -27
  103. package/cjs/siblings.d.ts +24 -8
  104. package/cjs/siblings.js +42 -82
  105. package/cjs/types.d.ts +74 -7
  106. package/cjs/types.js +3 -5
  107. package/cjs/utils.d.ts +3 -2
  108. package/cjs/utils.js +27 -44
  109. package/esm/cache.js +4 -8
  110. package/esm/{chunk-BMTV3EA2.js → chunk-U3TKCM4X.js} +1 -1
  111. package/esm/configs/index.d.mts +42 -16
  112. package/esm/configs/index.js +4 -4
  113. package/esm/configs/operations-all.d.mts +4 -3
  114. package/esm/configs/operations-all.js +6 -5
  115. package/esm/configs/operations-recommended.d.mts +3 -1
  116. package/esm/configs/operations-recommended.js +4 -2
  117. package/esm/configs/schema-all.d.mts +6 -1
  118. package/esm/configs/schema-all.js +6 -3
  119. package/esm/configs/schema-recommended.d.mts +19 -1
  120. package/esm/configs/schema-recommended.js +23 -3
  121. package/esm/configs/{relay.js → schema-relay.js} +4 -4
  122. package/esm/documents.js +10 -17
  123. package/esm/estree-converter/converter.js +9 -18
  124. package/esm/estree-converter/utils.d.mts +2 -3
  125. package/esm/estree-converter/utils.js +11 -38
  126. package/esm/flat-configs.d.mts +59 -12
  127. package/esm/flat-configs.js +4 -5
  128. package/esm/graphql-config.d.mts +4 -3
  129. package/esm/graphql-config.js +18 -34
  130. package/esm/index.d.mts +10 -4
  131. package/esm/index.js +1 -1
  132. package/esm/parser.d.mts +4 -3
  133. package/esm/parser.js +33 -27
  134. package/esm/processor.d.mts +5 -1
  135. package/esm/processor.js +21 -46
  136. package/esm/rules/alphabetize.d.mts +6 -16
  137. package/esm/rules/alphabetize.js +53 -118
  138. package/esm/rules/description-style.d.mts +4 -3
  139. package/esm/rules/description-style.js +7 -11
  140. package/esm/rules/graphql-js-validation.d.mts +4 -3
  141. package/esm/rules/graphql-js-validation.js +178 -218
  142. package/esm/rules/index.d.mts +15 -13
  143. package/esm/rules/index.js +5 -5
  144. package/esm/rules/input-name.d.mts +4 -3
  145. package/esm/rules/input-name.js +39 -52
  146. package/esm/rules/lone-executable-definition.d.mts +6 -5
  147. package/esm/rules/lone-executable-definition.js +10 -20
  148. package/esm/rules/match-document-filename.d.mts +4 -3
  149. package/esm/rules/match-document-filename.js +35 -61
  150. package/esm/rules/naming-convention.d.mts +4 -3
  151. package/esm/rules/naming-convention.js +51 -65
  152. package/esm/rules/no-anonymous-operations.d.mts +4 -3
  153. package/esm/rules/no-anonymous-operations.js +6 -9
  154. package/esm/rules/no-deprecated.d.mts +4 -3
  155. package/esm/rules/no-deprecated.js +10 -20
  156. package/esm/rules/no-duplicate-fields.d.mts +4 -3
  157. package/esm/rules/no-duplicate-fields.js +9 -16
  158. package/esm/rules/no-hashtag-description.d.mts +4 -3
  159. package/esm/rules/no-hashtag-description.js +11 -20
  160. package/esm/rules/no-one-place-fragments.d.mts +4 -3
  161. package/esm/rules/no-one-place-fragments.js +12 -19
  162. package/esm/rules/no-root-type.d.mts +4 -3
  163. package/esm/rules/no-root-type.js +11 -18
  164. package/esm/rules/no-scalar-result-type-on-mutation.d.mts +4 -3
  165. package/esm/rules/no-scalar-result-type-on-mutation.js +13 -21
  166. package/esm/rules/no-typename-prefix.d.mts +4 -3
  167. package/esm/rules/no-typename-prefix.js +22 -26
  168. package/esm/rules/no-unreachable-types.d.mts +4 -3
  169. package/esm/rules/no-unreachable-types.js +18 -33
  170. package/esm/rules/no-unused-fields.d.mts +4 -3
  171. package/esm/rules/no-unused-fields.js +19 -40
  172. package/esm/rules/relay-arguments.d.mts +4 -3
  173. package/esm/rules/relay-arguments.js +15 -34
  174. package/esm/rules/relay-connection-types.d.mts +4 -3
  175. package/esm/rules/relay-connection-types.js +10 -38
  176. package/esm/rules/relay-edge-types.d.mts +4 -3
  177. package/esm/rules/relay-edge-types.js +43 -89
  178. package/esm/rules/relay-page-info.d.mts +4 -3
  179. package/esm/rules/relay-page-info.js +16 -34
  180. package/esm/rules/require-deprecation-date.d.mts +4 -3
  181. package/esm/rules/require-deprecation-date.js +10 -22
  182. package/esm/rules/require-deprecation-reason.d.mts +4 -3
  183. package/esm/rules/require-deprecation-reason.js +7 -11
  184. package/esm/rules/require-description.d.mts +4 -3
  185. package/esm/rules/require-description.js +34 -55
  186. package/esm/rules/require-field-of-type-query-in-mutation-result.d.mts +4 -3
  187. package/esm/rules/require-field-of-type-query-in-mutation-result.js +11 -22
  188. package/esm/rules/require-import-fragment.d.mts +4 -3
  189. package/esm/rules/require-import-fragment.js +14 -26
  190. package/esm/rules/require-nullable-fields-with-oneof.d.mts +4 -3
  191. package/esm/rules/require-nullable-fields-with-oneof.js +6 -13
  192. package/esm/rules/require-nullable-result-in-root.d.mts +4 -3
  193. package/esm/rules/require-nullable-result-in-root.js +29 -35
  194. package/esm/rules/{require-id-when-available.d.mts → require-selections.d.mts} +4 -3
  195. package/esm/rules/{require-id-when-available.js → require-selections.js} +43 -80
  196. package/esm/rules/require-type-pattern-with-oneof.d.mts +4 -3
  197. package/esm/rules/require-type-pattern-with-oneof.js +11 -16
  198. package/esm/rules/selection-set-depth.d.mts +4 -3
  199. package/esm/rules/selection-set-depth.js +11 -20
  200. package/esm/rules/strict-id-in-types.d.mts +4 -3
  201. package/esm/rules/strict-id-in-types.js +20 -34
  202. package/esm/rules/{no-case-insensitive-enum-values-duplicates.d.mts → unique-enum-value-names.d.mts} +4 -3
  203. package/esm/rules/{no-case-insensitive-enum-values-duplicates.js → unique-enum-value-names.js} +8 -9
  204. package/esm/rules/unique-fragment-name.d.mts +3 -2
  205. package/esm/rules/unique-fragment-name.js +20 -27
  206. package/esm/rules/unique-operation-name.d.mts +4 -3
  207. package/esm/rules/unique-operation-name.js +6 -5
  208. package/esm/schema.d.mts +4 -3
  209. package/esm/schema.js +7 -12
  210. package/esm/siblings.d.mts +24 -8
  211. package/esm/siblings.js +37 -73
  212. package/esm/types.d.mts +74 -7
  213. package/esm/utils.d.mts +3 -2
  214. package/esm/utils.js +20 -31
  215. package/index.browser.mjs +5323 -0
  216. package/package.json +8 -13
  217. package/cjs/rules/require-id-when-available.js +0 -241
  218. package/cjs/types-8d5f4ae0.d.ts +0 -107
  219. package/esm/types-ace77d86.d.ts +0 -107
  220. /package/cjs/configs/{relay.d.ts → schema-relay.d.ts} +0 -0
  221. /package/cjs/configs/{relay.js → schema-relay.js} +0 -0
  222. /package/esm/configs/{relay.d.mts → schema-relay.d.mts} +0 -0
@@ -5,86 +5,64 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
6
  var __export = (target, all) => {
7
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") {
8
+ __defProp(target, name, { get: all[name], enumerable: !0 });
9
+ }, __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from == "object" || typeof from == "function")
12
11
  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
- }
12
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
13
  return to;
17
14
  };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
19
16
  var relay_edge_types_exports = {};
20
17
  __export(relay_edge_types_exports, {
21
18
  rule: () => rule
22
19
  });
23
20
  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";
21
+ var import_utils = require("@graphql-tools/utils"), import_graphql = require("graphql"), import_utils2 = require("../utils.js");
22
+ const RULE_ID = "relay-edge-types", MESSAGE_MUST_BE_OBJECT_TYPE = "MESSAGE_MUST_BE_OBJECT_TYPE", MESSAGE_MISSING_EDGE_SUFFIX = "MESSAGE_MISSING_EDGE_SUFFIX", MESSAGE_LIST_TYPE_ONLY_EDGE_TYPE = "MESSAGE_LIST_TYPE_ONLY_EDGE_TYPE", MESSAGE_SHOULD_IMPLEMENTS_NODE = "MESSAGE_SHOULD_IMPLEMENTS_NODE";
32
23
  let edgeTypesCache;
33
24
  function getEdgeTypes(schema2) {
34
- if (edgeTypesCache) {
25
+ if (edgeTypesCache)
35
26
  return edgeTypesCache;
36
- }
37
- const edgeTypes = /* @__PURE__ */ new Set();
38
- const visitor = {
27
+ const edgeTypes = /* @__PURE__ */ new Set(), visitor = {
39
28
  ObjectTypeDefinition(node) {
40
- var _a;
41
- const typeName = node.name.value;
42
- const hasConnectionSuffix = typeName.endsWith("Connection");
43
- if (!hasConnectionSuffix) {
29
+ if (!node.name.value.endsWith("Connection"))
44
30
  return;
45
- }
46
- const edges = (_a = node.fields) == null ? void 0 : _a.find((field) => field.name.value === "edges");
31
+ const edges = node.fields?.find((field) => field.name.value === "edges");
47
32
  if (edges) {
48
- const edgesTypeName = (0, import_utils2.getTypeName)(edges);
49
- const edgesType = schema2.getType(edgesTypeName);
50
- if ((0, import_graphql.isObjectType)(edgesType)) {
51
- edgeTypes.add(edgesTypeName);
52
- }
33
+ const edgesTypeName = (0, import_utils2.getTypeName)(edges), edgesType = schema2.getType(edgesTypeName);
34
+ (0, import_graphql.isObjectType)(edgesType) && edgeTypes.add(edgesTypeName);
53
35
  }
54
36
  }
55
- };
56
- const astNode = (0, import_utils.getDocumentNodeFromSchema)(schema2);
57
- (0, import_graphql.visit)(astNode, visitor);
58
- edgeTypesCache = edgeTypes;
59
- return edgeTypesCache;
37
+ }, astNode = (0, import_utils.getDocumentNodeFromSchema)(schema2);
38
+ return (0, import_graphql.visit)(astNode, visitor), edgeTypesCache = edgeTypes, edgeTypesCache;
60
39
  }
61
40
  const schema = {
62
41
  type: "array",
63
42
  maxItems: 1,
64
43
  items: {
65
44
  type: "object",
66
- additionalProperties: false,
45
+ additionalProperties: !1,
67
46
  minProperties: 1,
68
47
  properties: {
69
48
  withEdgeSuffix: {
70
49
  type: "boolean",
71
- default: true,
50
+ default: !0,
72
51
  description: 'Edge type name must end in "Edge".'
73
52
  },
74
53
  shouldImplementNode: {
75
54
  type: "boolean",
76
- default: true,
55
+ default: !0,
77
56
  description: "Edge type's field `node` must implement `Node` interface."
78
57
  },
79
58
  listTypeCanWrapOnlyEdgeType: {
80
59
  type: "boolean",
81
- default: true,
60
+ default: !0,
82
61
  description: "A list type should only wrap an edge type."
83
62
  }
84
63
  }
85
64
  }
86
- };
87
- const rule = {
65
+ }, rule = {
88
66
  meta: {
89
67
  type: "problem",
90
68
  docs: {
@@ -99,10 +77,11 @@ const rule = {
99
77
  '- Edge type name must end in "Edge" _(optional)_',
100
78
  "- Edge type's field `node` must implement `Node` interface _(optional)_",
101
79
  "- A list type should only wrap an edge type _(optional)_"
102
- ].join("\n"),
80
+ ].join(`
81
+ `),
103
82
  url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
104
- isDisabledForAllConfig: true,
105
- requiresSchema: true,
83
+ isDisabledForAllConfig: !0,
84
+ requiresSchema: !0,
106
85
  examples: [
107
86
  {
108
87
  title: "Correct",
@@ -127,42 +106,28 @@ const rule = {
127
106
  schema
128
107
  },
129
108
  create(context) {
130
- const schema2 = (0, import_utils2.requireGraphQLSchemaFromContext)(RULE_ID, context);
131
- const edgeTypes = getEdgeTypes(schema2);
132
- const options = {
133
- withEdgeSuffix: true,
134
- shouldImplementNode: true,
135
- listTypeCanWrapOnlyEdgeType: true,
109
+ const schema2 = (0, import_utils2.requireGraphQLSchemaFromContext)(RULE_ID, context), edgeTypes = getEdgeTypes(schema2), options = {
110
+ withEdgeSuffix: !0,
111
+ shouldImplementNode: !0,
112
+ listTypeCanWrapOnlyEdgeType: !0,
136
113
  ...context.options[0]
137
- };
138
- 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;
139
- const checkNodeField = (node) => {
140
- var _a, _b;
141
- const nodeField = (_a = node.fields) == null ? void 0 : _a.find((field) => field.name.value === "node");
142
- const message = "return either a Scalar, Enum, Object, Interface, Union, or a non-null wrapper around one of those types.";
143
- if (!nodeField) {
114
+ }, 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, checkNodeField = (node) => {
115
+ const nodeField = node.fields?.find((field) => field.name.value === "node"), message = "return either a Scalar, Enum, Object, Interface, Union, or a non-null wrapper around one of those types.";
116
+ if (!nodeField)
144
117
  context.report({
145
118
  node: node.name,
146
119
  message: `Edge type must contain a field \`node\` that ${message}`
147
120
  });
148
- } else if (!isNamedOrNonNullNamed(nodeField.gqlType)) {
121
+ else if (!isNamedOrNonNullNamed(nodeField.gqlType))
149
122
  context.report({ node: nodeField.name, message: `Field \`node\` must ${message}` });
150
- } else if (options.shouldImplementNode) {
151
- const nodeReturnTypeName = (0, import_utils2.getTypeName)(nodeField.gqlType.rawNode());
152
- const type = schema2.getType(nodeReturnTypeName);
153
- if (!(0, import_graphql.isObjectType)(type)) {
123
+ else if (options.shouldImplementNode) {
124
+ const nodeReturnTypeName = (0, import_utils2.getTypeName)(nodeField.gqlType.rawNode()), type = schema2.getType(nodeReturnTypeName);
125
+ if (!(0, import_graphql.isObjectType)(type))
154
126
  return;
155
- }
156
- const implementsNode = (_b = type.astNode.interfaces) == null ? void 0 : _b.some((n) => n.name.value === "Node");
157
- if (!implementsNode) {
158
- context.report({ node: node.name, messageId: MESSAGE_SHOULD_IMPLEMENTS_NODE });
159
- }
127
+ type.astNode.interfaces?.some((n) => n.name.value === "Node") || context.report({ node: node.name, messageId: MESSAGE_SHOULD_IMPLEMENTS_NODE });
160
128
  }
161
- };
162
- const checkCursorField = (node) => {
163
- var _a;
164
- const cursorField = (_a = node.fields) == null ? void 0 : _a.find((field) => field.name.value === "cursor");
165
- const message = "return either a String, Scalar, or a non-null wrapper wrapper around one of those types.";
129
+ }, checkCursorField = (node) => {
130
+ const cursorField = node.fields?.find((field) => field.name.value === "cursor"), message = "return either a String, Scalar, or a non-null wrapper wrapper around one of those types.";
166
131
  if (!cursorField) {
167
132
  context.report({
168
133
  node: node.name,
@@ -171,39 +136,23 @@ const rule = {
171
136
  return;
172
137
  }
173
138
  const typeName = (0, import_utils2.getTypeName)(cursorField.rawNode());
174
- if (!isNamedOrNonNullNamed(cursorField.gqlType) || typeName !== "String" && !(0, import_graphql.isScalarType)(schema2.getType(typeName))) {
175
- context.report({ node: cursorField.name, message: `Field \`cursor\` must ${message}` });
176
- }
177
- };
178
- const listeners = {
139
+ (!isNamedOrNonNullNamed(cursorField.gqlType) || typeName !== "String" && !(0, import_graphql.isScalarType)(schema2.getType(typeName))) && context.report({ node: cursorField.name, message: `Field \`cursor\` must ${message}` });
140
+ }, listeners = {
179
141
  ":matches(ObjectTypeDefinition, ObjectTypeExtension)[name.value=/Connection$/] > FieldDefinition[name.value=edges] > .gqlType Name"(node) {
180
142
  const type = schema2.getType(node.value);
181
- if (!(0, import_graphql.isObjectType)(type)) {
182
- context.report({ node, messageId: MESSAGE_MUST_BE_OBJECT_TYPE });
183
- }
143
+ (0, import_graphql.isObjectType)(type) || context.report({ node, messageId: MESSAGE_MUST_BE_OBJECT_TYPE });
184
144
  },
185
145
  ":matches(ObjectTypeDefinition, ObjectTypeExtension)"(node) {
186
146
  const typeName = node.name.value;
187
- if (edgeTypes.has(typeName)) {
188
- checkNodeField(node);
189
- checkCursorField(node);
190
- if (options.withEdgeSuffix && !typeName.endsWith("Edge")) {
191
- context.report({ node: node.name, messageId: MESSAGE_MISSING_EDGE_SUFFIX });
192
- }
193
- }
147
+ edgeTypes.has(typeName) && (checkNodeField(node), checkCursorField(node), options.withEdgeSuffix && !typeName.endsWith("Edge") && context.report({ node: node.name, messageId: MESSAGE_MISSING_EDGE_SUFFIX }));
194
148
  }
195
149
  };
196
- if (options.listTypeCanWrapOnlyEdgeType) {
197
- listeners["FieldDefinition > .gqlType"] = (node) => {
198
- if (node.kind === import_graphql.Kind.LIST_TYPE || node.kind === import_graphql.Kind.NON_NULL_TYPE && node.gqlType.kind === import_graphql.Kind.LIST_TYPE) {
199
- const typeName = (0, import_utils2.getTypeName)(node.rawNode());
200
- if (!edgeTypes.has(typeName)) {
201
- context.report({ node, messageId: MESSAGE_LIST_TYPE_ONLY_EDGE_TYPE });
202
- }
203
- }
204
- };
205
- }
206
- return listeners;
150
+ return options.listTypeCanWrapOnlyEdgeType && (listeners["FieldDefinition > .gqlType"] = (node) => {
151
+ if (node.kind === import_graphql.Kind.LIST_TYPE || node.kind === import_graphql.Kind.NON_NULL_TYPE && node.gqlType.kind === import_graphql.Kind.LIST_TYPE) {
152
+ const typeName = (0, import_utils2.getTypeName)(node.rawNode());
153
+ edgeTypes.has(typeName) || context.report({ node, messageId: MESSAGE_LIST_TYPE_ONLY_EDGE_TYPE });
154
+ }
155
+ }), listeners;
207
156
  }
208
157
  };
209
158
  // Annotate the CommonJS export names for ESM import in node:
@@ -1,11 +1,12 @@
1
- import { f as GraphQLESLintRule } from '../types-8d5f4ae0.js';
2
- import '@graphql-tools/utils';
1
+ import { GraphQLESLintRule } from '../types.js';
3
2
  import 'eslint';
4
3
  import 'estree';
5
4
  import 'graphql';
6
- import 'graphql-config';
7
5
  import 'json-schema-to-ts';
6
+ import '../siblings.js';
7
+ import '@graphql-tools/utils';
8
8
  import '../estree-converter/types.js';
9
+ import 'graphql-config';
9
10
 
10
11
  declare const rule: GraphQLESLintRule;
11
12
 
@@ -5,30 +5,22 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
6
  var __export = (target, all) => {
7
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") {
8
+ __defProp(target, name, { get: all[name], enumerable: !0 });
9
+ }, __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from == "object" || typeof from == "function")
12
11
  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
- }
12
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
13
  return to;
17
14
  };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
19
16
  var relay_page_info_exports = {};
20
17
  __export(relay_page_info_exports, {
21
18
  rule: () => rule
22
19
  });
23
20
  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`;
31
- let hasPageInfoChecked = false;
21
+ var import_graphql = require("graphql"), import_utils = require("../utils.js"), import_relay_connection_types = require("./relay-connection-types.js");
22
+ const RULE_ID = "relay-page-info", MESSAGE_MUST_EXIST = "MESSAGE_MUST_EXIST", MESSAGE_MUST_BE_OBJECT_TYPE = "MESSAGE_MUST_BE_OBJECT_TYPE", notPageInfoTypesSelector = `:matches(${import_relay_connection_types.NON_OBJECT_TYPES})[name.value=PageInfo] > .name`;
23
+ let hasPageInfoChecked = !1;
32
24
  const rule = {
33
25
  meta: {
34
26
  type: "problem",
@@ -40,7 +32,8 @@ const rule = {
40
32
  "- `PageInfo` must be an Object type",
41
33
  "- `PageInfo` must contain fields `hasPreviousPage` and `hasNextPage`, that return non-null Boolean",
42
34
  "- `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"),
35
+ ].join(`
36
+ `),
44
37
  url: `https://the-guild.dev/graphql/eslint/rules/${RULE_ID}`,
45
38
  examples: [
46
39
  {
@@ -58,8 +51,8 @@ const rule = {
58
51
  )
59
52
  }
60
53
  ],
61
- isDisabledForAllConfig: true,
62
- requiresSchema: true
54
+ isDisabledForAllConfig: !0,
55
+ requiresSchema: !0
63
56
  },
64
57
  messages: {
65
58
  [MESSAGE_MUST_EXIST]: "The server must provide a `PageInfo` object.",
@@ -69,35 +62,22 @@ const rule = {
69
62
  },
70
63
  create(context) {
71
64
  const schema = (0, import_utils.requireGraphQLSchemaFromContext)(RULE_ID, context);
72
- if (!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 {
65
+ return hasPageInfoChecked || (schema.getType("PageInfo") || context.report({
66
+ loc: import_utils.REPORT_ON_FIRST_CHARACTER,
67
+ messageId: MESSAGE_MUST_EXIST
68
+ }), hasPageInfoChecked = !0), {
83
69
  [notPageInfoTypesSelector](node) {
84
70
  context.report({ node, messageId: MESSAGE_MUST_BE_OBJECT_TYPE });
85
71
  },
86
72
  "ObjectTypeDefinition[name.value=PageInfo]"(node) {
87
- var _a;
88
73
  const fieldMap = Object.fromEntries(
89
- ((_a = node.fields) == null ? void 0 : _a.map((field) => [field.name.value, field])) || []
90
- );
91
- const checkField = (fieldName, typeName) => {
74
+ node.fields?.map((field) => [field.name.value, field]) || []
75
+ ), checkField = (fieldName, typeName) => {
92
76
  const field = fieldMap[fieldName];
93
- let isAllowedType = false;
77
+ let isAllowedType = !1;
94
78
  if (field) {
95
79
  const type = field.gqlType;
96
- if (typeName === "Boolean") {
97
- isAllowedType = type.kind === import_graphql.Kind.NON_NULL_TYPE && type.gqlType.kind === import_graphql.Kind.NAMED_TYPE && type.gqlType.name.value === "Boolean";
98
- } else if (type.kind === import_graphql.Kind.NAMED_TYPE) {
99
- isAllowedType = type.name.value === "String" || (0, import_graphql.isScalarType)(schema.getType(type.name.value));
100
- }
80
+ typeName === "Boolean" ? isAllowedType = type.kind === import_graphql.Kind.NON_NULL_TYPE && type.gqlType.kind === import_graphql.Kind.NAMED_TYPE && type.gqlType.name.value === "Boolean" : type.kind === import_graphql.Kind.NAMED_TYPE && (isAllowedType = type.name.value === "String" || (0, import_graphql.isScalarType)(schema.getType(type.name.value)));
101
81
  }
102
82
  if (!isAllowedType) {
103
83
  const returnType = typeName === "Boolean" ? "non-null Boolean" : "either String or Scalar, which can be null if there are no results";
@@ -107,10 +87,7 @@ const rule = {
107
87
  });
108
88
  }
109
89
  };
110
- checkField("hasPreviousPage", "Boolean");
111
- checkField("hasNextPage", "Boolean");
112
- checkField("startCursor", "String");
113
- checkField("endCursor", "String");
90
+ checkField("hasPreviousPage", "Boolean"), checkField("hasNextPage", "Boolean"), checkField("startCursor", "String"), checkField("endCursor", "String");
114
91
  }
115
92
  };
116
93
  }
@@ -1,11 +1,12 @@
1
1
  import { FromSchema } from 'json-schema-to-ts';
2
- import { f as GraphQLESLintRule } from '../types-8d5f4ae0.js';
3
- import '@graphql-tools/utils';
2
+ import { GraphQLESLintRule } from '../types.js';
4
3
  import 'eslint';
5
4
  import 'estree';
6
5
  import 'graphql';
7
- import 'graphql-config';
6
+ import '../siblings.js';
7
+ import '@graphql-tools/utils';
8
8
  import '../estree-converter/types.js';
9
+ import 'graphql-config';
9
10
 
10
11
  declare const schema: {
11
12
  readonly type: "array";
@@ -5,46 +5,36 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
6
  var __export = (target, all) => {
7
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") {
8
+ __defProp(target, name, { get: all[name], enumerable: !0 });
9
+ }, __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from == "object" || typeof from == "function")
12
11
  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
- }
12
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
13
  return to;
17
14
  };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
19
16
  var require_deprecation_date_exports = {};
20
17
  __export(require_deprecation_date_exports, {
21
18
  rule: () => rule
22
19
  });
23
20
  module.exports = __toCommonJS(require_deprecation_date_exports);
24
- var import_estree_converter = require("../estree-converter/index.js");
25
- var import_utils = require("../utils.js");
26
- const DATE_REGEX = /^\d{2}\/\d{2}\/\d{4}$/;
27
- const MESSAGE_REQUIRE_DATE = "MESSAGE_REQUIRE_DATE";
28
- const MESSAGE_INVALID_FORMAT = "MESSAGE_INVALID_FORMAT";
29
- const MESSAGE_INVALID_DATE = "MESSAGE_INVALID_DATE";
30
- const MESSAGE_CAN_BE_REMOVED = "MESSAGE_CAN_BE_REMOVED";
31
- const schema = {
21
+ var import_estree_converter = require("../estree-converter/index.js"), import_utils = require("../utils.js");
22
+ const DATE_REGEX = /^\d{2}\/\d{2}\/\d{4}$/, MESSAGE_REQUIRE_DATE = "MESSAGE_REQUIRE_DATE", MESSAGE_INVALID_FORMAT = "MESSAGE_INVALID_FORMAT", MESSAGE_INVALID_DATE = "MESSAGE_INVALID_DATE", MESSAGE_CAN_BE_REMOVED = "MESSAGE_CAN_BE_REMOVED", schema = {
32
23
  type: "array",
33
24
  maxItems: 1,
34
25
  items: {
35
26
  type: "object",
36
- additionalProperties: false,
27
+ additionalProperties: !1,
37
28
  properties: {
38
29
  argumentName: {
39
30
  type: "string"
40
31
  }
41
32
  }
42
33
  }
43
- };
44
- const rule = {
34
+ }, rule = {
45
35
  meta: {
46
36
  type: "suggestion",
47
- hasSuggestions: true,
37
+ hasSuggestions: !0,
48
38
  docs: {
49
39
  category: "Schema",
50
40
  description: "Require deletion date on `@deprecated` directive. Suggest removing deprecated things after deprecated date.",
@@ -100,9 +90,7 @@ const rule = {
100
90
  create(context) {
101
91
  return {
102
92
  "Directive[name.value=deprecated]"(node) {
103
- var _a, _b;
104
- const argName = ((_a = context.options[0]) == null ? void 0 : _a.argumentName) || "deletionDate";
105
- const deletionDateNode = (_b = node.arguments) == null ? void 0 : _b.find((arg) => arg.name.value === argName);
93
+ const argName = context.options[0]?.argumentName || "deletionDate", deletionDateNode = node.arguments?.find((arg) => arg.name.value === argName);
106
94
  if (!deletionDateNode) {
107
95
  context.report({
108
96
  node: node.name,
@@ -114,8 +102,7 @@ const rule = {
114
102
  return;
115
103
  }
116
104
  const deletionDate = (0, import_estree_converter.valueFromNode)(deletionDateNode.value);
117
- const isValidDate = DATE_REGEX.test(deletionDate);
118
- if (!isValidDate) {
105
+ if (!DATE_REGEX.test(deletionDate)) {
119
106
  context.report({
120
107
  node: deletionDateNode.value,
121
108
  messageId: MESSAGE_INVALID_FORMAT,
@@ -124,8 +111,7 @@ const rule = {
124
111
  return;
125
112
  }
126
113
  let [day, month, year] = deletionDate.split("/");
127
- day = day.padStart(2, "0");
128
- month = month.padStart(2, "0");
114
+ day = day.padStart(2, "0"), month = month.padStart(2, "0");
129
115
  const deletionDateInMS = Date.parse(`${year}-${month}-${day}`);
130
116
  if (Number.isNaN(deletionDateInMS)) {
131
117
  context.report({
@@ -138,10 +124,8 @@ const rule = {
138
124
  });
139
125
  return;
140
126
  }
141
- const canRemove = Date.now() > deletionDateInMS;
142
- if (canRemove) {
143
- const { parent } = node;
144
- const nodeName = parent.name.value;
127
+ if (Date.now() > deletionDateInMS) {
128
+ const { parent } = node, nodeName = parent.name.value;
145
129
  context.report({
146
130
  node: parent.name,
147
131
  messageId: MESSAGE_CAN_BE_REMOVED,
@@ -1,11 +1,12 @@
1
- import { f as GraphQLESLintRule } from '../types-8d5f4ae0.js';
2
- import '@graphql-tools/utils';
1
+ import { GraphQLESLintRule } from '../types.js';
3
2
  import 'eslint';
4
3
  import 'estree';
5
4
  import 'graphql';
6
- import 'graphql-config';
7
5
  import 'json-schema-to-ts';
6
+ import '../siblings.js';
7
+ import '@graphql-tools/utils';
8
8
  import '../estree-converter/types.js';
9
+ import 'graphql-config';
9
10
 
10
11
  declare const rule: GraphQLESLintRule;
11
12
 
@@ -5,31 +5,27 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
6
  var __export = (target, all) => {
7
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") {
8
+ __defProp(target, name, { get: all[name], enumerable: !0 });
9
+ }, __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from == "object" || typeof from == "function")
12
11
  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
- }
12
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
13
  return to;
17
14
  };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
19
16
  var require_deprecation_reason_exports = {};
20
17
  __export(require_deprecation_reason_exports, {
21
18
  rule: () => rule
22
19
  });
23
20
  module.exports = __toCommonJS(require_deprecation_reason_exports);
24
- var import_estree_converter = require("../estree-converter/index.js");
25
- var import_utils = require("../utils.js");
21
+ var import_estree_converter = require("../estree-converter/index.js"), import_utils = require("../utils.js");
26
22
  const rule = {
27
23
  meta: {
28
24
  docs: {
29
25
  description: "Require all deprecation directives to specify a reason.",
30
26
  category: "Schema",
31
27
  url: "https://the-guild.dev/graphql/eslint/rules/require-deprecation-reason",
32
- recommended: true,
28
+ recommended: !0,
33
29
  examples: [
34
30
  {
35
31
  title: "Incorrect",
@@ -72,17 +68,13 @@ const rule = {
72
68
  create(context) {
73
69
  return {
74
70
  "Directive[name.value=deprecated]"(node) {
75
- var _a;
76
- const reasonArgument = (_a = node.arguments) == null ? void 0 : _a.find(
71
+ const reasonArgument = node.arguments?.find(
77
72
  (arg) => arg.name.value === "reason"
78
73
  );
79
- const value = reasonArgument && String((0, import_estree_converter.valueFromNode)(reasonArgument.value)).trim();
80
- if (!value) {
81
- context.report({
82
- node: node.name,
83
- message: `Deprecation reason is required for ${(0, import_utils.getNodeName)(node.parent)}.`
84
- });
85
- }
74
+ reasonArgument && String((0, import_estree_converter.valueFromNode)(reasonArgument.value)).trim() || context.report({
75
+ node: node.name,
76
+ message: `Deprecation reason is required for ${(0, import_utils.getNodeName)(node.parent)}.`
77
+ });
86
78
  }
87
79
  };
88
80
  }
@@ -1,11 +1,12 @@
1
1
  import { Kind } from 'graphql';
2
- import { f as GraphQLESLintRule } from '../types-8d5f4ae0.js';
3
- import '@graphql-tools/utils';
2
+ import { GraphQLESLintRule } from '../types.js';
4
3
  import 'eslint';
5
4
  import 'estree';
6
- import 'graphql-config';
7
5
  import 'json-schema-to-ts';
6
+ import '../siblings.js';
7
+ import '@graphql-tools/utils';
8
8
  import '../estree-converter/types.js';
9
+ import 'graphql-config';
9
10
 
10
11
  declare const RULE_ID = "require-description";
11
12
  declare const ALLOWED_KINDS: readonly [Kind.OBJECT_TYPE_DEFINITION, Kind.INTERFACE_TYPE_DEFINITION, Kind.ENUM_TYPE_DEFINITION, Kind.SCALAR_TYPE_DEFINITION, Kind.INPUT_OBJECT_TYPE_DEFINITION, Kind.UNION_TYPE_DEFINITION, Kind.DIRECTIVE_DEFINITION, Kind.FIELD_DEFINITION, Kind.INPUT_VALUE_DEFINITION, Kind.ENUM_VALUE_DEFINITION, Kind.OPERATION_DEFINITION];