@graphql-eslint/eslint-plugin 3.20.0 → 3.20.1-alpha-20230713065202-54d864e

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. package/cjs/configs/operations-all.js +1 -23
  2. package/cjs/configs/operations-recommended.js +1 -23
  3. package/cjs/configs/relay.js +1 -23
  4. package/cjs/configs/schema-all.js +1 -23
  5. package/cjs/configs/schema-recommended.js +1 -23
  6. package/cjs/documents.js +2 -1
  7. package/cjs/estree-converter/utils.js +1 -1
  8. package/cjs/parser.js +4 -3
  9. package/cjs/processor.js +1 -1
  10. package/cjs/rules/alphabetize.js +12 -9
  11. package/cjs/rules/graphql-js-validation.js +13 -8
  12. package/cjs/rules/lone-executable-definition.js +5 -3
  13. package/cjs/rules/match-document-filename.js +2 -1
  14. package/cjs/rules/naming-convention.js +2 -2
  15. package/cjs/rules/no-case-insensitive-enum-values-duplicates.js +2 -1
  16. package/cjs/rules/no-deprecated.js +4 -2
  17. package/cjs/rules/no-one-place-fragments.js +1 -1
  18. package/cjs/rules/no-unreachable-types.js +2 -2
  19. package/cjs/rules/no-unused-fields.js +4 -2
  20. package/cjs/rules/relay-arguments.js +2 -1
  21. package/cjs/rules/relay-connection-types.js +8 -2
  22. package/cjs/rules/relay-edge-types.js +7 -4
  23. package/cjs/rules/relay-page-info.js +2 -1
  24. package/cjs/rules/require-deprecation-date.js +3 -2
  25. package/cjs/rules/require-deprecation-reason.js +2 -1
  26. package/cjs/rules/require-description.js +3 -2
  27. package/cjs/rules/require-field-of-type-query-in-mutation-result.js +1 -1
  28. package/cjs/rules/require-import-fragment.js +2 -1
  29. package/cjs/rules/require-nullable-result-in-root.js +1 -1
  30. package/cjs/rules/require-type-pattern-with-oneof.js +2 -1
  31. package/cjs/rules/strict-id-in-types.js +4 -3
  32. package/cjs/rules/unique-fragment-name.js +2 -1
  33. package/cjs/siblings.js +8 -3
  34. package/cjs/utils.js +2 -1
  35. package/esm/cache.js +1 -0
  36. package/esm/chunk-BMTV3EA2.js +8 -0
  37. package/esm/configs/index.js +1 -0
  38. package/esm/configs/operations-all.js +32 -27
  39. package/esm/configs/operations-recommended.js +57 -52
  40. package/esm/configs/relay.js +17 -12
  41. package/esm/configs/schema-all.js +26 -21
  42. package/esm/configs/schema-recommended.js +53 -48
  43. package/esm/documents.js +3 -1
  44. package/esm/estree-converter/converter.js +1 -0
  45. package/esm/estree-converter/utils.js +2 -1
  46. package/esm/flat-configs.js +1 -0
  47. package/esm/graphql-config.js +1 -0
  48. package/esm/index.js +1 -0
  49. package/esm/parser.js +5 -3
  50. package/esm/processor.js +2 -1
  51. package/esm/rules/alphabetize.js +13 -9
  52. package/esm/rules/description-style.js +1 -0
  53. package/esm/rules/graphql-js-validation.js +14 -8
  54. package/esm/rules/index.js +1 -0
  55. package/esm/rules/input-name.js +1 -0
  56. package/esm/rules/lone-executable-definition.js +6 -3
  57. package/esm/rules/match-document-filename.js +3 -1
  58. package/esm/rules/naming-convention.js +3 -2
  59. package/esm/rules/no-anonymous-operations.js +1 -0
  60. package/esm/rules/no-case-insensitive-enum-values-duplicates.js +3 -1
  61. package/esm/rules/no-deprecated.js +5 -2
  62. package/esm/rules/no-duplicate-fields.js +1 -0
  63. package/esm/rules/no-hashtag-description.js +1 -0
  64. package/esm/rules/no-one-place-fragments.js +2 -1
  65. package/esm/rules/no-root-type.js +1 -0
  66. package/esm/rules/no-scalar-result-type-on-mutation.js +1 -0
  67. package/esm/rules/no-typename-prefix.js +1 -0
  68. package/esm/rules/no-unreachable-types.js +3 -2
  69. package/esm/rules/no-unused-fields.js +5 -2
  70. package/esm/rules/relay-arguments.js +3 -1
  71. package/esm/rules/relay-connection-types.js +9 -2
  72. package/esm/rules/relay-edge-types.js +8 -4
  73. package/esm/rules/relay-page-info.js +3 -1
  74. package/esm/rules/require-deprecation-date.js +4 -2
  75. package/esm/rules/require-deprecation-reason.js +3 -1
  76. package/esm/rules/require-description.js +4 -2
  77. package/esm/rules/require-field-of-type-query-in-mutation-result.js +2 -1
  78. package/esm/rules/require-id-when-available.js +1 -0
  79. package/esm/rules/require-import-fragment.js +3 -1
  80. package/esm/rules/require-nullable-fields-with-oneof.js +1 -0
  81. package/esm/rules/require-nullable-result-in-root.js +2 -1
  82. package/esm/rules/require-type-pattern-with-oneof.js +3 -1
  83. package/esm/rules/selection-set-depth.js +1 -0
  84. package/esm/rules/strict-id-in-types.js +5 -3
  85. package/esm/rules/unique-fragment-name.js +3 -1
  86. package/esm/rules/unique-operation-name.js +1 -0
  87. package/esm/schema.js +1 -0
  88. package/esm/siblings.js +9 -3
  89. package/esm/testkit.js +1 -0
  90. package/esm/utils.js +3 -1
  91. package/package.json +1 -4
@@ -1,27 +1,5 @@
1
1
  "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: 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 operations_all_exports = {};
20
- __export(operations_all_exports, {
21
- default: () => operations_all_default
22
- });
23
- module.exports = __toCommonJS(operations_all_exports);
24
- var operations_all_default = {
2
+ module.exports = {
25
3
  extends: "./configs/operations-recommended",
26
4
  rules: {
27
5
  "@graphql-eslint/alphabetize": [
@@ -1,27 +1,5 @@
1
1
  "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: 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 operations_recommended_exports = {};
20
- __export(operations_recommended_exports, {
21
- default: () => operations_recommended_default
22
- });
23
- module.exports = __toCommonJS(operations_recommended_exports);
24
- var operations_recommended_default = {
2
+ module.exports = {
25
3
  parser: "@graphql-eslint/eslint-plugin",
26
4
  plugins: ["@graphql-eslint"],
27
5
  rules: {
@@ -1,27 +1,5 @@
1
1
  "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: 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_exports = {};
20
- __export(relay_exports, {
21
- default: () => relay_default
22
- });
23
- module.exports = __toCommonJS(relay_exports);
24
- var relay_default = {
2
+ module.exports = {
25
3
  parser: "@graphql-eslint/eslint-plugin",
26
4
  plugins: ["@graphql-eslint"],
27
5
  rules: {
@@ -1,27 +1,5 @@
1
1
  "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: 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 schema_all_exports = {};
20
- __export(schema_all_exports, {
21
- default: () => schema_all_default
22
- });
23
- module.exports = __toCommonJS(schema_all_exports);
24
- var schema_all_default = {
2
+ module.exports = {
25
3
  extends: "./configs/schema-recommended",
26
4
  rules: {
27
5
  "@graphql-eslint/alphabetize": [
@@ -1,27 +1,5 @@
1
1
  "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: 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 schema_recommended_exports = {};
20
- __export(schema_recommended_exports, {
21
- default: () => schema_recommended_default
22
- });
23
- module.exports = __toCommonJS(schema_recommended_exports);
24
- var schema_recommended_default = {
2
+ module.exports = {
25
3
  parser: "@graphql-eslint/eslint-plugin",
26
4
  plugins: ["@graphql-eslint"],
27
5
  rules: {
package/cjs/documents.js CHANGED
@@ -40,11 +40,12 @@ const operationsCache = new import_cache.ModuleCache();
40
40
  const handleVirtualPath = (documents) => {
41
41
  const filepathMap = /* @__PURE__ */ Object.create(null);
42
42
  return documents.map((source) => {
43
+ var _a;
43
44
  const location = source.location;
44
45
  if ([".gql", ".graphql"].some((extension) => location.endsWith(extension))) {
45
46
  return source;
46
47
  }
47
- filepathMap[location] ??= -1;
48
+ (_a = filepathMap[location]) != null ? _a : filepathMap[location] = -1;
48
49
  const index = filepathMap[location] += 1;
49
50
  return {
50
51
  ...source,
@@ -62,7 +62,7 @@ function convertToken(token, type) {
62
62
  }
63
63
  function getLexer(source) {
64
64
  const gqlLanguage = require("graphql/language");
65
- if (gqlLanguage?.createLexer) {
65
+ if (gqlLanguage == null ? void 0 : gqlLanguage.createLexer) {
66
66
  return gqlLanguage.createLexer(source, {});
67
67
  }
68
68
  const { Lexer: LexerCls } = require("graphql");
package/cjs/parser.js CHANGED
@@ -42,9 +42,10 @@ var import_utils2 = require("./utils.js");
42
42
  const debug = (0, import_debug.default)("graphql-eslint:parser");
43
43
  debug("cwd %o", import_utils2.CWD);
44
44
  function parseForESLint(code, options) {
45
+ var _a, _b;
45
46
  try {
46
47
  const { filePath } = options;
47
- options.documents ||= options.operations;
48
+ options.documents || (options.documents = options.operations);
48
49
  const { document } = (0, import_utils.parseGraphQLSDL)(filePath, code, {
49
50
  ...options.graphQLParserOptions,
50
51
  noLocation: false
@@ -82,9 +83,9 @@ function parseForESLint(code, options) {
82
83
  error.message = `[graphql-eslint] ${error.message}`;
83
84
  }
84
85
  if (error instanceof import_graphql.GraphQLError) {
85
- const location = error.locations?.[0];
86
+ const location = (_a = error.locations) == null ? void 0 : _a[0];
86
87
  const eslintError = {
87
- index: error.positions?.[0],
88
+ index: (_b = error.positions) == null ? void 0 : _b[0],
88
89
  ...location && {
89
90
  lineNumber: location.line,
90
91
  column: location.column - 1
package/cjs/processor.js CHANGED
@@ -38,7 +38,7 @@ const processor = {
38
38
  onDiskConfigLoaded = true;
39
39
  }
40
40
  let keywords = RELEVANT_KEYWORDS;
41
- const pluckConfig = onDiskConfig?.getProjectForFile(filePath).extensions.pluckConfig;
41
+ const pluckConfig = onDiskConfig == null ? void 0 : onDiskConfig.getProjectForFile(filePath).extensions.pluckConfig;
42
42
  if (pluckConfig) {
43
43
  const {
44
44
  modules = [],
@@ -237,6 +237,7 @@ const rule = {
237
237
  schema
238
238
  },
239
239
  create(context) {
240
+ var _a, _b, _c, _d, _e;
240
241
  const sourceCode = context.getSourceCode();
241
242
  function isNodeAndCommentOnSameLine(node, comment) {
242
243
  return node.loc.end.line === comment.loc.start.line;
@@ -272,19 +273,20 @@ const rule = {
272
273
  return [from.range[0], to.range[1]];
273
274
  }
274
275
  function checkNodes(nodes = []) {
276
+ var _a2, _b2, _c2, _d2;
275
277
  for (let i = 1; i < nodes.length; i += 1) {
276
278
  const currNode = nodes[i];
277
- const currName = "alias" in currNode && currNode.alias?.value || "name" in currNode && currNode.name?.value;
279
+ const currName = "alias" in currNode && ((_a2 = currNode.alias) == null ? void 0 : _a2.value) || "name" in currNode && ((_b2 = currNode.name) == null ? void 0 : _b2.value);
278
280
  if (!currName) {
279
281
  continue;
280
282
  }
281
283
  const prevNode = nodes[i - 1];
282
- const prevName = "alias" in prevNode && prevNode.alias?.value || "name" in prevNode && prevNode.name?.value;
284
+ const prevName = "alias" in prevNode && ((_c2 = prevNode.alias) == null ? void 0 : _c2.value) || "name" in prevNode && ((_d2 = prevNode.name) == null ? void 0 : _d2.value);
283
285
  if (prevName) {
284
286
  const compareResult = prevName.localeCompare(currName);
285
287
  const { groups } = opts;
286
288
  let shouldSortByGroup = false;
287
- if (groups?.length) {
289
+ if (groups == null ? void 0 : groups.length) {
288
290
  if (!groups.includes("*")) {
289
291
  throw new Error("`groups` option should contain `*` string.");
290
292
  }
@@ -331,7 +333,7 @@ const rule = {
331
333
  }
332
334
  }
333
335
  const opts = context.options[0];
334
- const fields = new Set(opts.fields ?? []);
336
+ const fields = new Set((_a = opts.fields) != null ? _a : []);
335
337
  const listeners = {};
336
338
  const kinds = [
337
339
  fields.has(import_graphql.Kind.OBJECT_TYPE_DEFINITION) && [
@@ -348,10 +350,10 @@ const rule = {
348
350
  ]
349
351
  ].filter(import_utils.truthy).flat();
350
352
  const fieldsSelector = kinds.join(",");
351
- const hasEnumValues = opts.values?.[0] === import_graphql.Kind.ENUM_TYPE_DEFINITION;
352
- const selectionsSelector = opts.selections?.join(",");
353
- const hasVariables = opts.variables?.[0] === import_graphql.Kind.OPERATION_DEFINITION;
354
- const argumentsSelector = opts.arguments?.join(",");
353
+ const hasEnumValues = ((_b = opts.values) == null ? void 0 : _b[0]) === import_graphql.Kind.ENUM_TYPE_DEFINITION;
354
+ const selectionsSelector = (_c = opts.selections) == null ? void 0 : _c.join(",");
355
+ const hasVariables = ((_d = opts.variables) == null ? void 0 : _d[0]) === import_graphql.Kind.OPERATION_DEFINITION;
356
+ const argumentsSelector = (_e = opts.arguments) == null ? void 0 : _e.join(",");
355
357
  if (fieldsSelector) {
356
358
  listeners[fieldsSelector] = (node) => {
357
359
  checkNodes(node.fields);
@@ -370,7 +372,8 @@ const rule = {
370
372
  }
371
373
  if (hasVariables) {
372
374
  listeners.OperationDefinition = (node) => {
373
- checkNodes(node.variableDefinitions?.map((varDef) => varDef.variable));
375
+ var _a2;
376
+ checkNodes((_a2 = node.variableDefinitions) == null ? void 0 : _a2.map((varDef) => varDef.variable));
374
377
  };
375
378
  }
376
379
  if (argumentsSelector) {
@@ -31,6 +31,7 @@ function validateDocument({
31
31
  rule,
32
32
  hasDidYouMeanSuggestions
33
33
  }) {
34
+ var _a;
34
35
  if (documentNode.definitions.length === 0) {
35
36
  return;
36
37
  }
@@ -51,7 +52,7 @@ function validateDocument({
51
52
  loc = // if cursor on `@` symbol than use next node
52
53
  token.type === "@" ? sourceCode.getNodeByRangeIndex(token.range[1] + 1).loc : token.loc;
53
54
  }
54
- const didYouMeanContent = error.message.match(/Did you mean (?<content>.*)\?$/)?.groups.content;
55
+ const didYouMeanContent = (_a = error.message.match(/Did you mean (?<content>.*)\?$/)) == null ? void 0 : _a.groups.content;
55
56
  const matches = didYouMeanContent ? [...didYouMeanContent.matchAll(/"(?<name>[^"]*)"/g)] : [];
56
57
  context.report({
57
58
  loc,
@@ -226,12 +227,15 @@ const GRAPHQL_JS_VALIDATIONS = Object.assign(
226
227
  if (ignoreClientDirectives.length === 0) {
227
228
  return documentNode;
228
229
  }
229
- const filterDirectives = (node) => ({
230
- ...node,
231
- directives: node.directives?.filter(
232
- (directive) => !ignoreClientDirectives.includes(directive.name.value)
233
- )
234
- });
230
+ const filterDirectives = (node) => {
231
+ var _a;
232
+ return {
233
+ ...node,
234
+ directives: (_a = node.directives) == null ? void 0 : _a.filter(
235
+ (directive) => !ignoreClientDirectives.includes(directive.name.value)
236
+ )
237
+ };
238
+ };
235
239
  return (0, import_graphql.visit)(documentNode, {
236
240
  Field: filterDirectives,
237
241
  OperationDefinition: filterDirectives
@@ -407,7 +411,8 @@ const GRAPHQL_JS_VALIDATIONS = Object.assign(
407
411
  ...siblings.getOperations(),
408
412
  ...siblings.getFragments()
409
413
  ].reduce((map, { filePath, document }) => {
410
- map[filePath] ??= [];
414
+ var _a;
415
+ (_a = map[filePath]) != null ? _a : map[filePath] = [];
411
416
  map[filePath].push(document);
412
417
  return map;
413
418
  }, /* @__PURE__ */ Object.create(null));
@@ -85,7 +85,8 @@ const rule = {
85
85
  schema
86
86
  },
87
87
  create(context) {
88
- const ignore = new Set(context.options[0]?.ignore || []);
88
+ var _a;
89
+ const ignore = new Set(((_a = context.options[0]) == null ? void 0 : _a.ignore) || []);
89
90
  const definitions = [];
90
91
  return {
91
92
  ":matches(OperationDefinition, FragmentDefinition)"(node) {
@@ -95,14 +96,15 @@ const rule = {
95
96
  }
96
97
  },
97
98
  "Document:exit"() {
99
+ var _a2, _b;
98
100
  for (const { node, type } of definitions.slice(1)) {
99
101
  let name = (0, import_utils.pascalCase)(type);
100
- const definitionName = node.name?.value;
102
+ const definitionName = (_a2 = node.name) == null ? void 0 : _a2.value;
101
103
  if (definitionName) {
102
104
  name += ` "${definitionName}"`;
103
105
  }
104
106
  context.report({
105
- loc: node.name?.loc || (0, import_utils.getLocation)(node.loc.start, type),
107
+ loc: ((_b = node.name) == null ? void 0 : _b.loc) || (0, import_utils.getLocation)(node.loc.start, type),
106
108
  messageId: RULE_ID,
107
109
  data: { name }
108
110
  });
@@ -220,6 +220,7 @@ const rule = {
220
220
  const filename = (0, import_path.basename)(filePath, fileExtension);
221
221
  return {
222
222
  Document(documentNode) {
223
+ var _a;
223
224
  if (options.fileExtension && options.fileExtension !== fileExtension) {
224
225
  context.report({
225
226
  loc: import_utils.REPORT_ON_FIRST_CHARACTER,
@@ -240,7 +241,7 @@ const rule = {
240
241
  if (!node) {
241
242
  return;
242
243
  }
243
- const docName = node.name?.value;
244
+ const docName = (_a = node.name) == null ? void 0 : _a.value;
244
245
  if (!docName) {
245
246
  return;
246
247
  }
@@ -364,14 +364,14 @@ const rule = {
364
364
  renameToNames: [name + suffix]
365
365
  };
366
366
  }
367
- const forbiddenPrefix = forbiddenPrefixes?.find((prefix2) => name.startsWith(prefix2));
367
+ const forbiddenPrefix = forbiddenPrefixes == null ? void 0 : forbiddenPrefixes.find((prefix2) => name.startsWith(prefix2));
368
368
  if (forbiddenPrefix) {
369
369
  return {
370
370
  errorMessage: `not have "${forbiddenPrefix}" prefix`,
371
371
  renameToNames: [name.replace(new RegExp(`^${forbiddenPrefix}`), "")]
372
372
  };
373
373
  }
374
- const forbiddenSuffix = forbiddenSuffixes?.find((suffix2) => name.endsWith(suffix2));
374
+ const forbiddenSuffix = forbiddenSuffixes == null ? void 0 : forbiddenSuffixes.find((suffix2) => name.endsWith(suffix2));
375
375
  if (forbiddenSuffix) {
376
376
  return {
377
377
  errorMessage: `not have "${forbiddenSuffix}" suffix`,
@@ -67,7 +67,8 @@ const rule = {
67
67
  const selector = [import_graphql.Kind.ENUM_TYPE_DEFINITION, import_graphql.Kind.ENUM_TYPE_EXTENSION].join(",");
68
68
  return {
69
69
  [selector](node) {
70
- const duplicates = node.values?.filter(
70
+ var _a;
71
+ const duplicates = (_a = node.values) == null ? void 0 : _a.filter(
71
72
  (item, index, array) => array.findIndex((v) => v.name.value.toLowerCase() === item.name.value.toLowerCase()) !== index
72
73
  );
73
74
  for (const duplicate of duplicates || []) {
@@ -133,15 +133,17 @@ const rule = {
133
133
  }
134
134
  return {
135
135
  EnumValue(node) {
136
+ var _a;
136
137
  const typeInfo = node.typeInfo();
137
- const reason = typeInfo.enumValue?.deprecationReason;
138
+ const reason = (_a = typeInfo.enumValue) == null ? void 0 : _a.deprecationReason;
138
139
  if (reason) {
139
140
  report(node, reason);
140
141
  }
141
142
  },
142
143
  Field(node) {
144
+ var _a;
143
145
  const typeInfo = node.typeInfo();
144
- const reason = typeInfo.fieldDef?.deprecationReason;
146
+ const reason = (_a = typeInfo.fieldDef) == null ? void 0 : _a.deprecationReason;
145
147
  if (reason) {
146
148
  report(node, reason);
147
149
  }
@@ -87,7 +87,7 @@ const rule = {
87
87
  (0, import_graphql.visit)(document, {
88
88
  FragmentSpread({ name }) {
89
89
  const spreadName = name.value;
90
- usedFragmentsMap[spreadName] ||= [];
90
+ usedFragmentsMap[spreadName] || (usedFragmentsMap[spreadName] = []);
91
91
  usedFragmentsMap[spreadName].push(relativeFilePath);
92
92
  }
93
93
  });
@@ -78,7 +78,7 @@ function getReachableTypes(schema) {
78
78
  for (const { astNode } of [...objects, ...interfaces]) {
79
79
  (0, import_graphql.visit)(astNode, visitor);
80
80
  }
81
- } else if (type?.astNode) {
81
+ } else if (type == null ? void 0 : type.astNode) {
82
82
  (0, import_graphql.visit)(type.astNode, visitor);
83
83
  }
84
84
  };
@@ -98,7 +98,7 @@ function getReachableTypes(schema) {
98
98
  schema.getMutationType(),
99
99
  schema.getSubscriptionType()
100
100
  ]) {
101
- if (type?.astNode) {
101
+ if (type == null ? void 0 : type.astNode) {
102
102
  (0, import_graphql.visit)(type.astNode, visitor);
103
103
  }
104
104
  }
@@ -33,13 +33,14 @@ function getUsedFields(schema, operations) {
33
33
  const typeInfo = new import_graphql.TypeInfo(schema);
34
34
  const visitor = (0, import_graphql.visitWithTypeInfo)(typeInfo, {
35
35
  Field(node) {
36
+ var _a;
36
37
  const fieldDef = typeInfo.getFieldDef();
37
38
  if (!fieldDef) {
38
39
  return false;
39
40
  }
40
41
  const parentTypeName = typeInfo.getParentType().name;
41
42
  const fieldName = node.name.value;
42
- usedFields[parentTypeName] ??= /* @__PURE__ */ new Set();
43
+ (_a = usedFields[parentTypeName]) != null ? _a : usedFields[parentTypeName] = /* @__PURE__ */ new Set();
43
44
  usedFields[parentTypeName].add(fieldName);
44
45
  }
45
46
  });
@@ -122,9 +123,10 @@ const rule = {
122
123
  const usedFields = getUsedFields(schema, siblingsOperations);
123
124
  return {
124
125
  FieldDefinition(node) {
126
+ var _a;
125
127
  const fieldName = node.name.value;
126
128
  const parentTypeName = node.parent.name.value;
127
- const isUsed = usedFields[parentTypeName]?.has(fieldName);
129
+ const isUsed = (_a = usedFields[parentTypeName]) == null ? void 0 : _a.has(fieldName);
128
130
  if (isUsed) {
129
131
  return;
130
132
  }
@@ -98,12 +98,13 @@ const rule = {
98
98
  const { includeBoth = true } = context.options[0] || {};
99
99
  return {
100
100
  "FieldDefinition > .gqlType Name[value=/Connection$/]"(node) {
101
+ var _a;
101
102
  let fieldNode = node.parent;
102
103
  while (fieldNode.kind !== import_graphql.Kind.FIELD_DEFINITION) {
103
104
  fieldNode = fieldNode.parent;
104
105
  }
105
106
  const args = Object.fromEntries(
106
- fieldNode.arguments?.map((argument) => [argument.name.value, argument]) || []
107
+ ((_a = fieldNode.arguments) == null ? void 0 : _a.map((argument) => [argument.name.value, argument])) || []
107
108
  );
108
109
  const hasForwardPagination = !!(args.first && args.after);
109
110
  const hasBackwardPagination = !!(args.last && args.before);
@@ -41,8 +41,14 @@ const NON_OBJECT_TYPES = [
41
41
  import_graphql.Kind.INTERFACE_TYPE_EXTENSION
42
42
  ];
43
43
  const notConnectionTypesSelector = `:matches(${NON_OBJECT_TYPES})[name.value=/Connection$/] > .name`;
44
- const hasEdgesField = (node) => node.fields?.some((field) => field.name.value === "edges");
45
- const hasPageInfoField = (node) => node.fields?.some((field) => field.name.value === "pageInfo");
44
+ const hasEdgesField = (node) => {
45
+ var _a;
46
+ return (_a = node.fields) == null ? void 0 : _a.some((field) => field.name.value === "edges");
47
+ };
48
+ const hasPageInfoField = (node) => {
49
+ var _a;
50
+ return (_a = node.fields) == null ? void 0 : _a.some((field) => field.name.value === "pageInfo");
51
+ };
46
52
  const rule = {
47
53
  meta: {
48
54
  type: "problem",
@@ -37,12 +37,13 @@ function getEdgeTypes(schema2) {
37
37
  const edgeTypes = /* @__PURE__ */ new Set();
38
38
  const visitor = {
39
39
  ObjectTypeDefinition(node) {
40
+ var _a;
40
41
  const typeName = node.name.value;
41
42
  const hasConnectionSuffix = typeName.endsWith("Connection");
42
43
  if (!hasConnectionSuffix) {
43
44
  return;
44
45
  }
45
- const edges = node.fields?.find((field) => field.name.value === "edges");
46
+ const edges = (_a = node.fields) == null ? void 0 : _a.find((field) => field.name.value === "edges");
46
47
  if (edges) {
47
48
  const edgesTypeName = (0, import_utils2.getTypeName)(edges);
48
49
  const edgesType = schema2.getType(edgesTypeName);
@@ -136,7 +137,8 @@ const rule = {
136
137
  };
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;
138
139
  const checkNodeField = (node) => {
139
- const nodeField = node.fields?.find((field) => field.name.value === "node");
140
+ var _a, _b;
141
+ const nodeField = (_a = node.fields) == null ? void 0 : _a.find((field) => field.name.value === "node");
140
142
  const message = "return either a Scalar, Enum, Object, Interface, Union, or a non-null wrapper around one of those types.";
141
143
  if (!nodeField) {
142
144
  context.report({
@@ -151,14 +153,15 @@ const rule = {
151
153
  if (!(0, import_graphql.isObjectType)(type)) {
152
154
  return;
153
155
  }
154
- const implementsNode = type.astNode.interfaces?.some((n) => n.name.value === "Node");
156
+ const implementsNode = (_b = type.astNode.interfaces) == null ? void 0 : _b.some((n) => n.name.value === "Node");
155
157
  if (!implementsNode) {
156
158
  context.report({ node: node.name, messageId: MESSAGE_SHOULD_IMPLEMENTS_NODE });
157
159
  }
158
160
  }
159
161
  };
160
162
  const checkCursorField = (node) => {
161
- const cursorField = node.fields?.find((field) => field.name.value === "cursor");
163
+ var _a;
164
+ const cursorField = (_a = node.fields) == null ? void 0 : _a.find((field) => field.name.value === "cursor");
162
165
  const message = "return either a String, Scalar, or a non-null wrapper wrapper around one of those types.";
163
166
  if (!cursorField) {
164
167
  context.report({
@@ -84,8 +84,9 @@ const rule = {
84
84
  context.report({ node, messageId: MESSAGE_MUST_BE_OBJECT_TYPE });
85
85
  },
86
86
  "ObjectTypeDefinition[name.value=PageInfo]"(node) {
87
+ var _a;
87
88
  const fieldMap = Object.fromEntries(
88
- node.fields?.map((field) => [field.name.value, field]) || []
89
+ ((_a = node.fields) == null ? void 0 : _a.map((field) => [field.name.value, field])) || []
89
90
  );
90
91
  const checkField = (fieldName, typeName) => {
91
92
  const field = fieldMap[fieldName];
@@ -100,8 +100,9 @@ const rule = {
100
100
  create(context) {
101
101
  return {
102
102
  "Directive[name.value=deprecated]"(node) {
103
- const argName = context.options[0]?.argumentName || "deletionDate";
104
- const deletionDateNode = node.arguments?.find((arg) => arg.name.value === argName);
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);
105
106
  if (!deletionDateNode) {
106
107
  context.report({
107
108
  node: node.name,
@@ -72,7 +72,8 @@ const rule = {
72
72
  create(context) {
73
73
  return {
74
74
  "Directive[name.value=deprecated]"(node) {
75
- const reasonArgument = node.arguments?.find(
75
+ var _a;
76
+ const reasonArgument = (_a = node.arguments) == null ? void 0 : _a.find(
76
77
  (arg) => arg.name.value === "reason"
77
78
  );
78
79
  const value = reasonArgument && String((0, import_estree_converter.valueFromNode)(reasonArgument.value)).trim();
@@ -169,12 +169,13 @@ const rule = {
169
169
  const selector = [...kinds].join(",");
170
170
  return {
171
171
  [selector](node) {
172
+ var _a;
172
173
  let description = "";
173
174
  const isOperation = node.kind === import_graphql.Kind.OPERATION_DEFINITION;
174
175
  if (isOperation) {
175
176
  const rawNode = node.rawNode();
176
177
  const { prev, line } = rawNode.loc.startToken;
177
- if (prev?.kind === import_graphql.TokenKind.COMMENT) {
178
+ if ((prev == null ? void 0 : prev.kind) === import_graphql.TokenKind.COMMENT) {
178
179
  const value = prev.value.trim();
179
180
  const linesBefore = line - prev.line;
180
181
  if (!value.startsWith("eslint") && linesBefore === 1) {
@@ -182,7 +183,7 @@ const rule = {
182
183
  }
183
184
  }
184
185
  } else {
185
- description = node.description?.value.trim() || "";
186
+ description = ((_a = node.description) == null ? void 0 : _a.value.trim()) || "";
186
187
  }
187
188
  if (description.length === 0) {
188
189
  context.report({
@@ -84,7 +84,7 @@ const rule = {
84
84
  const graphQLType = schema.getType(typeName);
85
85
  if ((0, import_graphql.isObjectType)(graphQLType)) {
86
86
  const { fields } = graphQLType.astNode;
87
- const hasQueryType = fields?.some((field) => (0, import_utils.getTypeName)(field) === queryType.name);
87
+ const hasQueryType = fields == null ? void 0 : fields.some((field) => (0, import_utils.getTypeName)(field) === queryType.name);
88
88
  if (!hasQueryType) {
89
89
  context.report({
90
90
  node,
@@ -115,6 +115,7 @@ const rule = {
115
115
  const filePath = context.getFilename();
116
116
  return {
117
117
  "FragmentSpread > .name"(node) {
118
+ var _a;
118
119
  const fragmentName = node.value;
119
120
  const fragmentsFromSiblings = siblings.getFragment(fragmentName);
120
121
  for (const comment of comments) {
@@ -125,7 +126,7 @@ const rule = {
125
126
  ).test(comment.value);
126
127
  if (!isPossibleImported)
127
128
  continue;
128
- const extractedImportPath = comment.value.match(/(["'])((?:\1|.)*?)\1/)?.[2];
129
+ const extractedImportPath = (_a = comment.value.match(/(["'])((?:\1|.)*?)\1/)) == null ? void 0 : _a[2];
129
130
  if (!extractedImportPath)
130
131
  continue;
131
132
  const importPath = import_path.default.join(import_path.default.dirname(filePath), extractedImportPath);