@graphql-inspector/cli 3.4.13-alpha-20230417141810-fd2d33e7 → 3.4.13

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 (98) hide show
  1. package/README.md +3 -3
  2. package/cjs/action/src/run.js +1 -1
  3. package/cjs/commands/commands/src/index.js +7 -8
  4. package/cjs/commands/diff/src/index.js +6 -6
  5. package/cjs/commands/docs/src/index.js +1 -3
  6. package/cjs/commands/serve/src/fake.js +4 -4
  7. package/cjs/commands/serve/src/index.js +8 -7
  8. package/cjs/commands/similar/src/index.js +2 -2
  9. package/cjs/commands/validate/src/index.js +4 -4
  10. package/cjs/core/src/ast/document.js +2 -2
  11. package/cjs/core/src/coverage/index.js +7 -7
  12. package/cjs/core/src/diff/changes/argument.js +80 -19
  13. package/cjs/core/src/diff/changes/directive.js +208 -39
  14. package/cjs/core/src/diff/changes/enum.js +123 -25
  15. package/cjs/core/src/diff/changes/field.js +260 -69
  16. package/cjs/core/src/diff/changes/input.js +153 -34
  17. package/cjs/core/src/diff/changes/object.js +37 -9
  18. package/cjs/core/src/diff/changes/schema.js +55 -13
  19. package/cjs/core/src/diff/changes/type.js +106 -19
  20. package/cjs/core/src/diff/changes/union.js +35 -7
  21. package/cjs/core/src/diff/directive.js +2 -4
  22. package/cjs/core/src/diff/rules/consider-usage.js +3 -3
  23. package/cjs/core/src/index.js +63 -1
  24. package/cjs/core/src/similar/index.js +2 -2
  25. package/cjs/core/src/utils/compare.js +3 -9
  26. package/cjs/core/src/utils/is-deprecated.js +1 -1
  27. package/cjs/core/src/utils/string.js +5 -2
  28. package/cjs/core/src/validate/complexity.js +1 -1
  29. package/cjs/core/src/validate/directive-count.js +1 -1
  30. package/cjs/core/src/validate/index.js +12 -11
  31. package/cjs/core/src/validate/query-depth.js +1 -1
  32. package/cjs/github/src/helpers/config.js +6 -2
  33. package/cjs/github/src/helpers/utils.js +1 -1
  34. package/cjs/loaders/loaders/src/index.js +1 -2
  35. package/esm/action/src/run.js +1 -1
  36. package/esm/commands/commands/src/index.js +7 -8
  37. package/esm/commands/diff/src/index.js +6 -6
  38. package/esm/commands/docs/src/index.js +1 -4
  39. package/esm/commands/serve/src/fake.js +4 -4
  40. package/esm/commands/serve/src/index.js +8 -7
  41. package/esm/commands/similar/src/index.js +2 -2
  42. package/esm/commands/validate/src/index.js +4 -4
  43. package/esm/core/src/ast/document.js +2 -2
  44. package/esm/core/src/coverage/index.js +7 -7
  45. package/esm/core/src/diff/changes/argument.js +77 -19
  46. package/esm/core/src/diff/changes/directive.js +198 -39
  47. package/esm/core/src/diff/changes/enum.js +117 -25
  48. package/esm/core/src/diff/changes/field.js +240 -62
  49. package/esm/core/src/diff/changes/input.js +145 -34
  50. package/esm/core/src/diff/changes/object.js +35 -9
  51. package/esm/core/src/diff/changes/schema.js +50 -11
  52. package/esm/core/src/diff/changes/type.js +100 -19
  53. package/esm/core/src/diff/changes/union.js +33 -7
  54. package/esm/core/src/diff/directive.js +2 -4
  55. package/esm/core/src/diff/rules/consider-usage.js +3 -3
  56. package/esm/core/src/index.js +9 -0
  57. package/esm/core/src/similar/index.js +2 -2
  58. package/esm/core/src/utils/compare.js +3 -9
  59. package/esm/core/src/utils/is-deprecated.js +1 -1
  60. package/esm/core/src/utils/string.js +5 -2
  61. package/esm/core/src/validate/complexity.js +1 -1
  62. package/esm/core/src/validate/directive-count.js +1 -1
  63. package/esm/core/src/validate/index.js +12 -11
  64. package/esm/core/src/validate/query-depth.js +1 -1
  65. package/esm/github/src/helpers/config.js +6 -2
  66. package/esm/github/src/helpers/utils.js +1 -1
  67. package/esm/loaders/loaders/src/index.js +1 -2
  68. package/package.json +20 -20
  69. package/typings/core/src/diff/changes/argument.d.cts +52 -4
  70. package/typings/core/src/diff/changes/argument.d.ts +52 -4
  71. package/typings/core/src/diff/changes/change.d.cts +500 -2
  72. package/typings/core/src/diff/changes/change.d.ts +500 -2
  73. package/typings/core/src/diff/changes/directive.d.cts +147 -11
  74. package/typings/core/src/diff/changes/directive.d.ts +147 -11
  75. package/typings/core/src/diff/changes/enum.d.cts +75 -7
  76. package/typings/core/src/diff/changes/enum.d.ts +75 -7
  77. package/typings/core/src/diff/changes/field.d.cts +189 -14
  78. package/typings/core/src/diff/changes/field.d.ts +189 -14
  79. package/typings/core/src/diff/changes/input.d.cts +112 -8
  80. package/typings/core/src/diff/changes/input.d.ts +112 -8
  81. package/typings/core/src/diff/changes/object.d.cts +29 -3
  82. package/typings/core/src/diff/changes/object.d.ts +29 -3
  83. package/typings/core/src/diff/changes/schema.d.cts +37 -4
  84. package/typings/core/src/diff/changes/schema.d.ts +37 -4
  85. package/typings/core/src/diff/changes/type.d.cts +80 -7
  86. package/typings/core/src/diff/changes/type.d.ts +80 -7
  87. package/typings/core/src/diff/changes/union.d.cts +29 -3
  88. package/typings/core/src/diff/changes/union.d.ts +29 -3
  89. package/typings/core/src/index.d.cts +10 -0
  90. package/typings/core/src/index.d.ts +10 -0
  91. package/typings/core/src/utils/is-deprecated.d.cts +1 -1
  92. package/typings/core/src/utils/is-deprecated.d.ts +1 -1
  93. package/typings/core/src/utils/string.d.cts +1 -1
  94. package/typings/core/src/utils/string.d.ts +1 -1
  95. package/typings/core/utils/testing.d.cts +2 -2
  96. package/typings/core/utils/testing.d.ts +2 -2
  97. package/typings/github/src/helpers/utils.d.cts +1 -1
  98. package/typings/github/src/helpers/utils.d.ts +1 -1
@@ -12,11 +12,9 @@ function changesInDirective(oldDirective, newDirective, addChange) {
12
12
  removed: (0, compare_js_1.diffArrays)(oldDirective.locations, newDirective.locations),
13
13
  };
14
14
  // locations added
15
- for (const location of locations.added)
16
- addChange((0, directive_js_1.directiveLocationAdded)(newDirective, location));
15
+ locations.added.forEach(location => addChange((0, directive_js_1.directiveLocationAdded)(newDirective, location)));
17
16
  // locations removed
18
- for (const location of locations.removed)
19
- addChange((0, directive_js_1.directiveLocationRemoved)(oldDirective, location));
17
+ locations.removed.forEach(location => addChange((0, directive_js_1.directiveLocationRemoved)(oldDirective, location)));
20
18
  (0, compare_js_1.compareLists)(oldDirective.args, newDirective.args, {
21
19
  onAdded(arg) {
22
20
  addChange((0, directive_js_1.directiveArgumentAdded)(newDirective, arg));
@@ -9,7 +9,7 @@ const considerUsage = ({ changes, config }) => tslib_1.__awaiter(void 0, void 0,
9
9
  throw new Error(`considerUsage rule is missing config`);
10
10
  }
11
11
  const collectedBreakingField = [];
12
- for (const change of changes) {
12
+ changes.forEach(change => {
13
13
  if (change.criticality.level === change_js_1.CriticalityLevel.Breaking && change.path) {
14
14
  const [typeName, fieldName, argumentName] = (0, path_js_1.parsePath)(change.path);
15
15
  collectedBreakingField.push({
@@ -18,7 +18,7 @@ const considerUsage = ({ changes, config }) => tslib_1.__awaiter(void 0, void 0,
18
18
  argument: argumentName,
19
19
  });
20
20
  }
21
- }
21
+ });
22
22
  // True if safe to break, false otherwise
23
23
  const usageList = yield config.checkUsage(collectedBreakingField);
24
24
  // turns an array of booleans into an array of `Type.Field` strings
@@ -31,7 +31,7 @@ const considerUsage = ({ changes, config }) => tslib_1.__awaiter(void 0, void 0,
31
31
  if (change.criticality.level === change_js_1.CriticalityLevel.Breaking &&
32
32
  change.path &&
33
33
  suppressedPaths.some(p => change.path.startsWith(p))) {
34
- return Object.assign(Object.assign({}, change), { criticality: Object.assign(Object.assign({}, change.criticality), { level: change_js_1.CriticalityLevel.Dangerous }), message: `${change.message} (non-breaking based on usage)` });
34
+ return Object.assign(Object.assign({}, change), { criticality: Object.assign(Object.assign({}, change.criticality), { level: change_js_1.CriticalityLevel.Dangerous, isSafeBasedOnUsage: true }), message: `${change.message} (non-breaking based on usage)` });
35
35
  }
36
36
  return change;
37
37
  });
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.calculateTokenCount = exports.countDepth = exports.countDirectives = exports.calculateOperationComplexity = exports.countAliases = exports.validate = exports.getTypePrefix = exports.similar = exports.CriticalityLevel = exports.ChangeType = exports.DiffRule = exports.diff = void 0;
3
+ exports.inputFieldDefaultValueChangedFromMeta = exports.inputFieldDescriptionChangedFromMeta = exports.inputFieldDescriptionRemovedFromMeta = exports.inputFieldDescriptionAddedFromMeta = exports.inputFieldAddedFromMeta = exports.inputFieldRemovedFromMeta = exports.fieldArgumentRemovedFromMeta = exports.fieldArgumentAddedFromMeta = exports.fieldTypeChangedFromMeta = exports.fieldDeprecationReasonRemovedFromMeta = exports.fieldDeprecationReasonAddedFromMeta = exports.fieldDeprecationReasonChangedFromMeta = exports.fieldDeprecationRemovedFromMeta = exports.fieldDeprecationAddedFromMeta = exports.fieldDescriptionRemovedFromMeta = exports.fieldDescriptionAddedFromMeta = exports.fieldDescriptionChangedFromMeta = exports.fieldAddedFromMeta = exports.fieldRemovedFromMeta = exports.enumValueDeprecationReasonRemovedFromMeta = exports.enumValueDeprecationReasonAddedFromMeta = exports.enumValueDeprecationReasonChangedFromMeta = exports.enumValueDescriptionChangedFromMeta = exports.enumValueAddedFromMeta = exports.enumValueRemovedFromMeta = exports.directiveArgumentTypeChangedFromMeta = exports.directiveArgumentDefaultValueChangedFromMeta = exports.directiveArgumentDescriptionChangedFromMeta = exports.directiveArgumentRemovedFromMeta = exports.directiveArgumentAddedFromMeta = exports.directiveLocationRemovedFromMeta = exports.directiveLocationAddedFromMeta = exports.directiveDescriptionChangedFromMeta = exports.directiveAddedFromMeta = exports.directiveRemovedFromMeta = exports.fieldArgumentTypeChangedFromMeta = exports.fieldArgumentDefaultChangedFromMeta = exports.fieldArgumentDescriptionChangedFromMeta = exports.calculateTokenCount = exports.countDepth = exports.countDirectives = exports.calculateOperationComplexity = exports.countAliases = exports.validate = exports.getTypePrefix = exports.similar = exports.CriticalityLevel = exports.ChangeType = exports.DiffRule = exports.diff = void 0;
4
+ exports.buildUnionMemberAddedMessageFromMeta = exports.unionMemberRemovedFromMeta = exports.typeDescriptionAddedFromMeta = exports.typeDescriptionRemovedFromMeta = exports.typeDescriptionChangedFromMeta = exports.typeKindChangedFromMeta = exports.typeAddedFromMeta = exports.typeRemovedFromMeta = exports.schemaSubscriptionTypeChangedFromMeta = exports.schemaMutationTypeChangedFromMeta = exports.schemaQueryTypeChangedFromMeta = exports.objectTypeInterfaceRemovedFromMeta = exports.objectTypeInterfaceAddedFromMeta = exports.inputFieldTypeChangedFromMeta = void 0;
4
5
  const tslib_1 = require("tslib");
5
6
  tslib_1.__exportStar(require("./coverage/index.js"), exports);
6
7
  var index_js_1 = require("./diff/index.js");
@@ -25,3 +26,64 @@ var query_depth_js_1 = require("./validate/query-depth.js");
25
26
  Object.defineProperty(exports, "countDepth", { enumerable: true, get: function () { return query_depth_js_1.countDepth; } });
26
27
  var token_count_js_1 = require("./validate/token-count.js");
27
28
  Object.defineProperty(exports, "calculateTokenCount", { enumerable: true, get: function () { return token_count_js_1.calculateTokenCount; } });
29
+ var argument_js_1 = require("./diff/changes/argument.js");
30
+ Object.defineProperty(exports, "fieldArgumentDescriptionChangedFromMeta", { enumerable: true, get: function () { return argument_js_1.fieldArgumentDescriptionChangedFromMeta; } });
31
+ Object.defineProperty(exports, "fieldArgumentDefaultChangedFromMeta", { enumerable: true, get: function () { return argument_js_1.fieldArgumentDefaultChangedFromMeta; } });
32
+ Object.defineProperty(exports, "fieldArgumentTypeChangedFromMeta", { enumerable: true, get: function () { return argument_js_1.fieldArgumentTypeChangedFromMeta; } });
33
+ var directive_js_1 = require("./diff/changes/directive.js");
34
+ Object.defineProperty(exports, "directiveRemovedFromMeta", { enumerable: true, get: function () { return directive_js_1.directiveRemovedFromMeta; } });
35
+ Object.defineProperty(exports, "directiveAddedFromMeta", { enumerable: true, get: function () { return directive_js_1.directiveAddedFromMeta; } });
36
+ Object.defineProperty(exports, "directiveDescriptionChangedFromMeta", { enumerable: true, get: function () { return directive_js_1.directiveDescriptionChangedFromMeta; } });
37
+ Object.defineProperty(exports, "directiveLocationAddedFromMeta", { enumerable: true, get: function () { return directive_js_1.directiveLocationAddedFromMeta; } });
38
+ Object.defineProperty(exports, "directiveLocationRemovedFromMeta", { enumerable: true, get: function () { return directive_js_1.directiveLocationRemovedFromMeta; } });
39
+ Object.defineProperty(exports, "directiveArgumentAddedFromMeta", { enumerable: true, get: function () { return directive_js_1.directiveArgumentAddedFromMeta; } });
40
+ Object.defineProperty(exports, "directiveArgumentRemovedFromMeta", { enumerable: true, get: function () { return directive_js_1.directiveArgumentRemovedFromMeta; } });
41
+ Object.defineProperty(exports, "directiveArgumentDescriptionChangedFromMeta", { enumerable: true, get: function () { return directive_js_1.directiveArgumentDescriptionChangedFromMeta; } });
42
+ Object.defineProperty(exports, "directiveArgumentDefaultValueChangedFromMeta", { enumerable: true, get: function () { return directive_js_1.directiveArgumentDefaultValueChangedFromMeta; } });
43
+ Object.defineProperty(exports, "directiveArgumentTypeChangedFromMeta", { enumerable: true, get: function () { return directive_js_1.directiveArgumentTypeChangedFromMeta; } });
44
+ var enum_js_1 = require("./diff/changes/enum.js");
45
+ Object.defineProperty(exports, "enumValueRemovedFromMeta", { enumerable: true, get: function () { return enum_js_1.enumValueRemovedFromMeta; } });
46
+ Object.defineProperty(exports, "enumValueAddedFromMeta", { enumerable: true, get: function () { return enum_js_1.enumValueAddedFromMeta; } });
47
+ Object.defineProperty(exports, "enumValueDescriptionChangedFromMeta", { enumerable: true, get: function () { return enum_js_1.enumValueDescriptionChangedFromMeta; } });
48
+ Object.defineProperty(exports, "enumValueDeprecationReasonChangedFromMeta", { enumerable: true, get: function () { return enum_js_1.enumValueDeprecationReasonChangedFromMeta; } });
49
+ Object.defineProperty(exports, "enumValueDeprecationReasonAddedFromMeta", { enumerable: true, get: function () { return enum_js_1.enumValueDeprecationReasonAddedFromMeta; } });
50
+ Object.defineProperty(exports, "enumValueDeprecationReasonRemovedFromMeta", { enumerable: true, get: function () { return enum_js_1.enumValueDeprecationReasonRemovedFromMeta; } });
51
+ var field_js_1 = require("./diff/changes/field.js");
52
+ Object.defineProperty(exports, "fieldRemovedFromMeta", { enumerable: true, get: function () { return field_js_1.fieldRemovedFromMeta; } });
53
+ Object.defineProperty(exports, "fieldAddedFromMeta", { enumerable: true, get: function () { return field_js_1.fieldAddedFromMeta; } });
54
+ Object.defineProperty(exports, "fieldDescriptionChangedFromMeta", { enumerable: true, get: function () { return field_js_1.fieldDescriptionChangedFromMeta; } });
55
+ Object.defineProperty(exports, "fieldDescriptionAddedFromMeta", { enumerable: true, get: function () { return field_js_1.fieldDescriptionAddedFromMeta; } });
56
+ Object.defineProperty(exports, "fieldDescriptionRemovedFromMeta", { enumerable: true, get: function () { return field_js_1.fieldDescriptionRemovedFromMeta; } });
57
+ Object.defineProperty(exports, "fieldDeprecationAddedFromMeta", { enumerable: true, get: function () { return field_js_1.fieldDeprecationAddedFromMeta; } });
58
+ Object.defineProperty(exports, "fieldDeprecationRemovedFromMeta", { enumerable: true, get: function () { return field_js_1.fieldDeprecationRemovedFromMeta; } });
59
+ Object.defineProperty(exports, "fieldDeprecationReasonChangedFromMeta", { enumerable: true, get: function () { return field_js_1.fieldDeprecationReasonChangedFromMeta; } });
60
+ Object.defineProperty(exports, "fieldDeprecationReasonAddedFromMeta", { enumerable: true, get: function () { return field_js_1.fieldDeprecationReasonAddedFromMeta; } });
61
+ Object.defineProperty(exports, "fieldDeprecationReasonRemovedFromMeta", { enumerable: true, get: function () { return field_js_1.fieldDeprecationReasonRemovedFromMeta; } });
62
+ Object.defineProperty(exports, "fieldTypeChangedFromMeta", { enumerable: true, get: function () { return field_js_1.fieldTypeChangedFromMeta; } });
63
+ Object.defineProperty(exports, "fieldArgumentAddedFromMeta", { enumerable: true, get: function () { return field_js_1.fieldArgumentAddedFromMeta; } });
64
+ Object.defineProperty(exports, "fieldArgumentRemovedFromMeta", { enumerable: true, get: function () { return field_js_1.fieldArgumentRemovedFromMeta; } });
65
+ var input_js_1 = require("./diff/changes/input.js");
66
+ Object.defineProperty(exports, "inputFieldRemovedFromMeta", { enumerable: true, get: function () { return input_js_1.inputFieldRemovedFromMeta; } });
67
+ Object.defineProperty(exports, "inputFieldAddedFromMeta", { enumerable: true, get: function () { return input_js_1.inputFieldAddedFromMeta; } });
68
+ Object.defineProperty(exports, "inputFieldDescriptionAddedFromMeta", { enumerable: true, get: function () { return input_js_1.inputFieldDescriptionAddedFromMeta; } });
69
+ Object.defineProperty(exports, "inputFieldDescriptionRemovedFromMeta", { enumerable: true, get: function () { return input_js_1.inputFieldDescriptionRemovedFromMeta; } });
70
+ Object.defineProperty(exports, "inputFieldDescriptionChangedFromMeta", { enumerable: true, get: function () { return input_js_1.inputFieldDescriptionChangedFromMeta; } });
71
+ Object.defineProperty(exports, "inputFieldDefaultValueChangedFromMeta", { enumerable: true, get: function () { return input_js_1.inputFieldDefaultValueChangedFromMeta; } });
72
+ Object.defineProperty(exports, "inputFieldTypeChangedFromMeta", { enumerable: true, get: function () { return input_js_1.inputFieldTypeChangedFromMeta; } });
73
+ var object_js_1 = require("./diff/changes/object.js");
74
+ Object.defineProperty(exports, "objectTypeInterfaceAddedFromMeta", { enumerable: true, get: function () { return object_js_1.objectTypeInterfaceAddedFromMeta; } });
75
+ Object.defineProperty(exports, "objectTypeInterfaceRemovedFromMeta", { enumerable: true, get: function () { return object_js_1.objectTypeInterfaceRemovedFromMeta; } });
76
+ var schema_js_1 = require("./diff/changes/schema.js");
77
+ Object.defineProperty(exports, "schemaQueryTypeChangedFromMeta", { enumerable: true, get: function () { return schema_js_1.schemaQueryTypeChangedFromMeta; } });
78
+ Object.defineProperty(exports, "schemaMutationTypeChangedFromMeta", { enumerable: true, get: function () { return schema_js_1.schemaMutationTypeChangedFromMeta; } });
79
+ Object.defineProperty(exports, "schemaSubscriptionTypeChangedFromMeta", { enumerable: true, get: function () { return schema_js_1.schemaSubscriptionTypeChangedFromMeta; } });
80
+ var type_js_1 = require("./diff/changes/type.js");
81
+ Object.defineProperty(exports, "typeRemovedFromMeta", { enumerable: true, get: function () { return type_js_1.typeRemovedFromMeta; } });
82
+ Object.defineProperty(exports, "typeAddedFromMeta", { enumerable: true, get: function () { return type_js_1.typeAddedFromMeta; } });
83
+ Object.defineProperty(exports, "typeKindChangedFromMeta", { enumerable: true, get: function () { return type_js_1.typeKindChangedFromMeta; } });
84
+ Object.defineProperty(exports, "typeDescriptionChangedFromMeta", { enumerable: true, get: function () { return type_js_1.typeDescriptionChangedFromMeta; } });
85
+ Object.defineProperty(exports, "typeDescriptionRemovedFromMeta", { enumerable: true, get: function () { return type_js_1.typeDescriptionRemovedFromMeta; } });
86
+ Object.defineProperty(exports, "typeDescriptionAddedFromMeta", { enumerable: true, get: function () { return type_js_1.typeDescriptionAddedFromMeta; } });
87
+ var union_js_1 = require("./diff/changes/union.js");
88
+ Object.defineProperty(exports, "unionMemberRemovedFromMeta", { enumerable: true, get: function () { return union_js_1.unionMemberRemovedFromMeta; } });
89
+ Object.defineProperty(exports, "buildUnionMemberAddedMessageFromMeta", { enumerable: true, get: function () { return union_js_1.buildUnionMemberAddedMessageFromMeta; } });
@@ -16,7 +16,7 @@ function similar(schema, typeName, threshold = 0.4) {
16
16
  if (typeof typeName !== 'undefined' && !targets.some(t => t.typeId === typeName)) {
17
17
  throw new Error(`Type '${typeName}' doesn't exist`);
18
18
  }
19
- for (const source of typeName ? [{ typeId: typeName, value: '' }] : targets) {
19
+ (typeName ? [{ typeId: typeName, value: '' }] : targets).forEach(source => {
20
20
  const sourceType = schema.getType(source.typeId);
21
21
  const matchWith = targets.filter(target => schema.getType(target.typeId).astNode.kind === sourceType.astNode.kind &&
22
22
  target.typeId !== source.typeId);
@@ -26,7 +26,7 @@ function similar(schema, typeName, threshold = 0.4) {
26
26
  results[source.typeId] = found;
27
27
  }
28
28
  }
29
- }
29
+ });
30
30
  return results;
31
31
  }
32
32
  exports.similar = similar;
@@ -73,19 +73,13 @@ function compareLists(oldList, newList, callbacks) {
73
73
  }
74
74
  if (callbacks) {
75
75
  if (callbacks.onAdded) {
76
- for (const item of added) {
77
- callbacks.onAdded(item);
78
- }
76
+ added.forEach(callbacks.onAdded);
79
77
  }
80
78
  if (callbacks.onRemoved) {
81
- for (const item of removed) {
82
- callbacks.onRemoved(item);
83
- }
79
+ removed.forEach(callbacks.onRemoved);
84
80
  }
85
81
  if (callbacks.onMutual) {
86
- for (const item of mutual) {
87
- callbacks.onMutual(item);
88
- }
82
+ mutual.forEach(callbacks.onMutual);
89
83
  }
90
84
  }
91
85
  return {
@@ -4,7 +4,7 @@ exports.isDeprecated = void 0;
4
4
  function isDeprecated(fieldOrEnumValue) {
5
5
  var _a, _b;
6
6
  if ('isDeprecated' in fieldOrEnumValue) {
7
- return fieldOrEnumValue['isDeprecated'];
7
+ return !!fieldOrEnumValue['isDeprecated'];
8
8
  }
9
9
  if (fieldOrEnumValue.deprecationReason != null) {
10
10
  return true;
@@ -16,7 +16,7 @@ function compareTwoStrings(str1, str2) {
16
16
  const pairs2 = wordLetterPairs(str2);
17
17
  const union = pairs1.length + pairs2.length;
18
18
  let intersection = 0;
19
- for (const pair1 of pairs1) {
19
+ pairs1.forEach(pair1 => {
20
20
  for (let i = 0, pair2; (pair2 = pairs2[i]); i++) {
21
21
  if (pair1 !== pair2)
22
22
  continue;
@@ -24,7 +24,7 @@ function compareTwoStrings(str1, str2) {
24
24
  pairs2.splice(i, 1);
25
25
  break;
26
26
  }
27
- }
27
+ });
28
28
  return (intersection * 2) / union;
29
29
  }
30
30
  function findBestMatch(mainString, targetStrings) {
@@ -63,6 +63,9 @@ function wordLetterPairs(str) {
63
63
  return flattenDeep(pairs);
64
64
  }
65
65
  function safeString(obj) {
66
+ if (typeof obj === 'string') {
67
+ return JSON.stringify(obj);
68
+ }
66
69
  return (0, object_inspect_1.default)(obj)
67
70
  .replace(/\[Object: null prototype\] /g, '')
68
71
  .replace(/(^')|('$)/g, '');
@@ -26,7 +26,7 @@ function calculateOperationComplexity(node, config, getFragmentByName, depth = 0
26
26
  calculateOperationComplexity(child, config, getFragmentByName, depth + 1);
27
27
  }
28
28
  }
29
- if (node.kind === graphql_1.Kind.FRAGMENT_SPREAD) {
29
+ if (node.kind == graphql_1.Kind.FRAGMENT_SPREAD) {
30
30
  const fragment = getFragmentByName(node.name.value);
31
31
  if (fragment) {
32
32
  cost +=
@@ -26,7 +26,7 @@ function countDirectives(node, getFragmentByName) {
26
26
  directives += countDirectives(child, getFragmentByName);
27
27
  }
28
28
  }
29
- if (node.kind === graphql_1.Kind.FRAGMENT_SPREAD) {
29
+ if (node.kind == graphql_1.Kind.FRAGMENT_SPREAD) {
30
30
  const fragment = getFragmentByName(node.name.value);
31
31
  if (fragment) {
32
32
  directives += countDirectives(fragment, getFragmentByName);
@@ -19,24 +19,25 @@ function validate(schema, sources, options) {
19
19
  const fragments = [];
20
20
  const fragmentNames = [];
21
21
  const graph = new dependency_graph_1.DepGraph({ circular: true });
22
- for (const doc of documents) {
23
- for (const fragment of doc.fragments) {
22
+ documents.forEach(doc => {
23
+ doc.fragments.forEach(fragment => {
24
24
  fragmentNames.push(fragment.node.name.value);
25
25
  fragments.push(fragment);
26
26
  graph.addNode(fragment.node.name.value, fragment.node);
27
- }
28
- }
29
- for (const fragment of fragments) {
27
+ });
28
+ });
29
+ fragments.forEach(fragment => {
30
30
  const depends = extractFragments((0, graphql_1.print)(fragment.node));
31
31
  if (depends) {
32
- for (const name of depends) {
32
+ depends.forEach(name => {
33
33
  graph.addDependency(fragment.node.name.value, name);
34
- }
34
+ });
35
35
  }
36
- }
37
- for (const doc of documents
36
+ });
37
+ documents
38
38
  // since we include fragments, validate only operations
39
- .filter(doc => doc.hasOperations)) {
39
+ .filter(doc => doc.hasOperations)
40
+ .forEach(doc => {
40
41
  const docWithOperations = {
41
42
  kind: graphql_1.Kind.DOCUMENT,
42
43
  definitions: doc.operations.map(d => d.node),
@@ -116,7 +117,7 @@ function validate(schema, sources, options) {
116
117
  deprecated,
117
118
  });
118
119
  }
119
- }
120
+ });
120
121
  return invalidDocuments;
121
122
  }
122
123
  exports.validate = validate;
@@ -92,7 +92,7 @@ function countDepth(node, parentDepth, getFragmentReference) {
92
92
  depth = Math.max(depth, countDepth(child, parentDepth + 1, getFragmentReference));
93
93
  }
94
94
  }
95
- if (node.kind === graphql_1.Kind.FRAGMENT_SPREAD) {
95
+ if (node.kind == graphql_1.Kind.FRAGMENT_SPREAD) {
96
96
  const fragment = getFragmentReference(node.name.value);
97
97
  if (fragment) {
98
98
  depth = Math.max(depth, countDepth(fragment, parentDepth + 1, getFragmentReference));
@@ -87,12 +87,16 @@ function createConfig(rawConfig, setConfigKind, branches = [], fallbackBranch =
87
87
  return config;
88
88
  }
89
89
  for (const branch of branches) {
90
- config = config || findConfigByBranch(branch, normalizedConfig, false);
90
+ if (config == null) {
91
+ config = findConfigByBranch(branch, normalizedConfig, false);
92
+ }
91
93
  if (config) {
92
94
  break;
93
95
  }
94
96
  }
95
- config = config || getGlobalConfig(rawConfig, fallbackBranch);
97
+ if (config == null) {
98
+ config = getGlobalConfig(rawConfig, fallbackBranch);
99
+ }
96
100
  return config;
97
101
  }
98
102
  exports.createConfig = createConfig;
@@ -27,7 +27,7 @@ function filterChangesByLevel(level) {
27
27
  return (change) => change.criticality.level === level;
28
28
  }
29
29
  exports.filterChangesByLevel = filterChangesByLevel;
30
- function createSummary(changes, summaryLimit, isLegacyConfig) {
30
+ function createSummary(changes, summaryLimit, isLegacyConfig = false) {
31
31
  const breakingChanges = changes.filter(filterChangesByLevel(core_1.CriticalityLevel.Breaking));
32
32
  const dangerousChanges = changes.filter(filterChangesByLevel(core_1.CriticalityLevel.Dangerous));
33
33
  const safeChanges = changes.filter(filterChangesByLevel(core_1.CriticalityLevel.NonBreaking));
@@ -76,8 +76,7 @@ class LoadersRegistry {
76
76
  exports.LoadersRegistry = LoadersRegistry;
77
77
  function useLoaders(config) {
78
78
  const loaders = new LoadersRegistry();
79
- for (const loaderName of config.loaders)
80
- loaders.registerModule(loaderName);
79
+ config.loaders.forEach(loaderName => loaders.registerModule(loaderName));
81
80
  return loaders;
82
81
  }
83
82
  exports.useLoaders = useLoaders;
@@ -79,7 +79,7 @@ export function run() {
79
79
  }
80
80
  }
81
81
  let [schemaRef, schemaPath] = schemaPointer.split(':');
82
- if (useMerge && (pullRequest === null || pullRequest === void 0 ? void 0 : pullRequest.state) === 'open') {
82
+ if (useMerge && (pullRequest === null || pullRequest === void 0 ? void 0 : pullRequest.state) == 'open') {
83
83
  ref = `refs/pull/${pullRequest.number}/merge`;
84
84
  workspace = undefined;
85
85
  core.info(`EXPERIMENTAL - Using Pull Request ${ref}`);
@@ -20,26 +20,25 @@ export function parseGlobalArgs(args) {
20
20
  const leftHeaders = {};
21
21
  const rightHeaders = {};
22
22
  if (args.header) {
23
- for (const header of args.header) {
23
+ args.header.forEach(header => {
24
24
  const [name, ...values] = header.split(':');
25
25
  headers[name] = values.join('');
26
- }
26
+ });
27
27
  }
28
28
  if (args.leftHeader) {
29
- for (const leftHeader of args.leftHeader) {
29
+ args.leftHeader.forEach(leftHeader => {
30
30
  const [lname, ...lvalues] = leftHeader.split(':');
31
31
  leftHeaders[lname] = lvalues.join('');
32
- }
32
+ });
33
33
  }
34
34
  if (args.rightHeader) {
35
- for (const rightHeader of args.rightHeader) {
35
+ args.rightHeader.forEach(rightHeader => {
36
36
  const [rname, ...rvalues] = rightHeader.split(':');
37
37
  rightHeaders[rname] = rvalues.join('');
38
- }
38
+ });
39
39
  }
40
40
  if (args.require) {
41
- for (const mod of args.require)
42
- require(mod);
41
+ args.require.forEach(mod => require(mod));
43
42
  }
44
43
  return { headers, leftHeaders, rightHeaders, token: args.token };
45
44
  }
@@ -129,23 +129,23 @@ function sortChanges(changes) {
129
129
  function reportBreakingChanges(changes) {
130
130
  const label = symbols.error;
131
131
  const sorted = sortChanges(changes);
132
- for (const change of sorted) {
132
+ sorted.forEach(change => {
133
133
  Logger.log(`${label} ${bolderize(change.message)}`);
134
- }
134
+ });
135
135
  }
136
136
  function reportDangerousChanges(changes) {
137
137
  const label = symbols.warning;
138
138
  const sorted = sortChanges(changes);
139
- for (const change of sorted) {
139
+ sorted.forEach(change => {
140
140
  Logger.log(`${label} ${bolderize(change.message)}`);
141
- }
141
+ });
142
142
  }
143
143
  function reportNonBreakingChanges(changes) {
144
144
  const label = symbols.success;
145
145
  const sorted = sortChanges(changes);
146
- for (const change of sorted) {
146
+ sorted.forEach(change => {
147
147
  Logger.log(`${label} ${bolderize(change.message)}`);
148
- }
148
+ });
149
149
  }
150
150
  function resolveRule(name) {
151
151
  const filepath = ensureAbsolute(name);
@@ -1,4 +1,3 @@
1
- import { __awaiter } from "tslib";
2
1
  import open from 'open';
3
2
  import { createCommand } from '@graphql-inspector/commands';
4
3
  export default createCommand(() => {
@@ -6,9 +5,7 @@ export default createCommand(() => {
6
5
  command: ['docs', 'website'],
7
6
  describe: 'Open Documentation',
8
7
  handler() {
9
- return __awaiter(this, void 0, void 0, function* () {
10
- return yield open('https://graphql-inspector.com');
11
- });
8
+ return open('https://graphql-inspector.com');
12
9
  },
13
10
  };
14
11
  });
@@ -153,17 +153,17 @@ function assignResolveType(type) {
153
153
  }
154
154
  function forEachField(schema, fn) {
155
155
  const typeMap = schema.getTypeMap();
156
- for (const typeName of Object.keys(typeMap)) {
156
+ Object.keys(typeMap).forEach(typeName => {
157
157
  const type = typeMap[typeName];
158
158
  // TODO: maybe have an option to include these?
159
159
  if (!getNamedType(type).name.startsWith('__') && type instanceof GraphQLObjectType) {
160
160
  const fields = type.getFields();
161
- for (const fieldName of Object.keys(fields)) {
161
+ Object.keys(fields).forEach(fieldName => {
162
162
  const field = fields[fieldName];
163
163
  fn(field, typeName, fieldName);
164
- }
164
+ });
165
165
  }
166
- }
166
+ });
167
167
  }
168
168
  class MockList {
169
169
  // wrappedFunction can return another MockList or a value
@@ -1,9 +1,8 @@
1
1
  import { __awaiter } from "tslib";
2
- import { createServer } from 'http';
3
- import { createYoga } from 'graphql-yoga';
4
2
  import open from 'open';
5
3
  import { createCommand, parseGlobalArgs, } from '@graphql-inspector/commands';
6
4
  import { Logger } from '@graphql-inspector/logger';
5
+ import { createServer } from '@graphql-yoga/node';
7
6
  import { fake } from './fake.js';
8
7
  export default createCommand(api => {
9
8
  const { loaders } = api;
@@ -41,16 +40,18 @@ export default createCommand(api => {
41
40
  const port = args.port;
42
41
  try {
43
42
  fake(schema);
44
- const yoga = createYoga({ schema, cors: true, logging: false });
45
- const server = createServer(yoga);
46
- yield server.listen(port, () => {
47
- console.info(`Server is running on http://localhost:${port}`);
43
+ const server = createServer({
44
+ schema,
45
+ port,
46
+ cors: true,
47
+ logging: false,
48
48
  });
49
+ yield server.start();
49
50
  const url = `http://localhost:${port}`;
50
51
  Logger.success(`GraphQL API: ${url}`);
51
52
  yield open(url);
52
53
  const shutdown = () => {
53
- server.close();
54
+ server.stop();
54
55
  process.exit(0);
55
56
  };
56
57
  process.on('SIGINT', shutdown);
@@ -20,9 +20,9 @@ export function handler({ schema, writePath, type, threshold, }) {
20
20
  Logger.log('');
21
21
  Logger.log(`${prefix} ${sourceType}`);
22
22
  Logger.log(printResult(name, matches.bestMatch.rating));
23
- for (const match of matches.ratings) {
23
+ matches.ratings.forEach(match => {
24
24
  Logger.log(printResult(match.target.typeId, match.rating));
25
- }
25
+ });
26
26
  }
27
27
  }
28
28
  if (shouldWrite) {
@@ -226,13 +226,13 @@ function printInvalidDocuments(invalidDocuments, listKey, isError = false, silen
226
226
  if (silent) {
227
227
  return;
228
228
  }
229
- for (const doc of invalidDocuments) {
229
+ invalidDocuments.forEach(doc => {
230
230
  if (doc.errors.length) {
231
- for (const line of renderErrors(doc.source.name, doc[listKey], isError)) {
231
+ renderErrors(doc.source.name, doc[listKey], isError).forEach(line => {
232
232
  Logger.log(line);
233
- }
233
+ });
234
234
  }
235
- }
235
+ });
236
236
  }
237
237
  function renderErrors(sourceName, errors, isError = false) {
238
238
  const errorsAsString = errors.map(e => ` - ${bolderize(e.message)}`).join('\n');
@@ -10,7 +10,7 @@ export function readDocument(source) {
10
10
  const documentNode = parse(source.body);
11
11
  const filepath = source.name;
12
12
  const definitions = documentNode.definitions || [];
13
- for (const node of definitions) {
13
+ definitions.forEach((node) => {
14
14
  if (isOperation(node)) {
15
15
  result.operations.push({
16
16
  node,
@@ -23,7 +23,7 @@ export function readDocument(source) {
23
23
  source: filepath,
24
24
  });
25
25
  }
26
- }
26
+ });
27
27
  result.hasFragments = result.fragments.length > 0;
28
28
  result.hasOperations = result.operations.length > 0;
29
29
  return result;
@@ -83,22 +83,22 @@ export function coverage(schema, sources) {
83
83
  }
84
84
  }
85
85
  const documents = coverage.sources.map(readDocument);
86
- for (const [i, doc] of documents.entries()) {
86
+ documents.forEach((doc, i) => {
87
87
  const source = coverage.sources[i];
88
- for (const op of doc.operations) {
88
+ doc.operations.forEach(op => {
89
89
  visit(op.node, visitWithTypeInfo(typeInfo, visitor(source)));
90
- }
91
- for (const fr of doc.fragments) {
90
+ });
91
+ doc.fragments.forEach(fr => {
92
92
  visit(fr.node, visitWithTypeInfo(typeInfo, visitor(source)));
93
- }
94
- }
93
+ });
94
+ });
95
95
  for (const key in coverage.types) {
96
96
  const me = coverage.types[key];
97
97
  processStats(me);
98
98
  coverage.stats.numTypes++;
99
99
  if (me.fieldsCountCovered > 0)
100
100
  coverage.stats.numTypesCovered++;
101
- if (me.fieldsCount === me.fieldsCountCovered)
101
+ if (me.fieldsCount == me.fieldsCountCovered)
102
102
  coverage.stats.numTypesCoveredFully++;
103
103
  coverage.stats.numFields += me.fieldsCount;
104
104
  coverage.stats.numFiledsCovered += me.fieldsCountCovered;