@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
@@ -1,166 +1,357 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fieldArgumentRemoved = exports.fieldArgumentAdded = exports.fieldTypeChanged = exports.fieldDeprecationReasonRemoved = exports.fieldDeprecationReasonAdded = exports.fieldDeprecationReasonChanged = exports.fieldDeprecationRemoved = exports.fieldDeprecationAdded = exports.fieldDescriptionRemoved = exports.fieldDescriptionAdded = exports.fieldDescriptionChanged = exports.fieldAdded = exports.fieldRemoved = void 0;
3
+ exports.fieldArgumentRemoved = exports.fieldArgumentRemovedFromMeta = exports.fieldArgumentAdded = exports.fieldArgumentAddedFromMeta = exports.fieldTypeChanged = exports.fieldTypeChangedFromMeta = exports.fieldDeprecationReasonRemoved = exports.fieldDeprecationReasonRemovedFromMeta = exports.fieldDeprecationReasonAdded = exports.fieldDeprecationReasonAddedFromMeta = exports.fieldDeprecationReasonChanged = exports.fieldDeprecationReasonChangedFromMeta = exports.fieldDeprecationRemoved = exports.fieldDeprecationRemovedFromMeta = exports.fieldDeprecationAdded = exports.fieldDeprecationAddedFromMeta = exports.fieldDescriptionRemoved = exports.fieldDescriptionRemovedFromMeta = exports.fieldDescriptionAdded = exports.fieldDescriptionAddedFromMeta = exports.fieldDescriptionChanged = exports.fieldDescriptionChangedFromMeta = exports.fieldAdded = exports.fieldAddedFromMeta = exports.fieldRemoved = exports.fieldRemovedFromMeta = void 0;
4
4
  const graphql_1 = require("graphql");
5
5
  const graphql_js_1 = require("../../utils/graphql.js");
6
- const is_deprecated_js_1 = require("../../utils/is-deprecated.js");
7
6
  const change_js_1 = require("./change.js");
8
- function fieldRemoved(type, field) {
9
- const entity = (0, graphql_1.isInterfaceType)(type) ? 'interface' : 'object type';
7
+ function buildFieldRemovedMessage(args) {
8
+ return `Field '${args.removedFieldName}' ${args.isRemovedFieldDeprecated ? '(deprecated) ' : ''}was removed from ${args.typeType} '${args.typeName}'`;
9
+ }
10
+ function fieldRemovedFromMeta(args) {
10
11
  return {
12
+ type: change_js_1.ChangeType.FieldRemoved,
11
13
  criticality: {
12
14
  level: change_js_1.CriticalityLevel.Breaking,
13
- reason: field.deprecationReason
15
+ reason: args.meta.isRemovedFieldDeprecated
14
16
  ? `Removing a deprecated field is a breaking change. Before removing it, you may want to look at the field's usage to see the impact of removing the field.`
15
17
  : `Removing a field is a breaking change. It is preferable to deprecate the field before removing it.`,
16
18
  },
17
- type: change_js_1.ChangeType.FieldRemoved,
18
- message: `Field '${field.name}' ${(0, is_deprecated_js_1.isDeprecated)(field) ? '(deprecated) ' : ''}was removed from ${entity} '${type.name}'`,
19
- path: [type.name, field.name].join('.'),
19
+ message: buildFieldRemovedMessage(args.meta),
20
+ meta: args.meta,
21
+ path: [args.meta.typeName, args.meta.removedFieldName].join('.'),
20
22
  };
21
23
  }
22
- exports.fieldRemoved = fieldRemoved;
23
- function fieldAdded(type, field) {
24
+ exports.fieldRemovedFromMeta = fieldRemovedFromMeta;
25
+ function fieldRemoved(type, field) {
24
26
  const entity = (0, graphql_1.isInterfaceType)(type) ? 'interface' : 'object type';
27
+ return fieldRemovedFromMeta({
28
+ type: change_js_1.ChangeType.FieldRemoved,
29
+ meta: {
30
+ typeName: type.name,
31
+ removedFieldName: field.name,
32
+ isRemovedFieldDeprecated: field.deprecationReason != null,
33
+ typeType: entity,
34
+ },
35
+ });
36
+ }
37
+ exports.fieldRemoved = fieldRemoved;
38
+ function buildFieldAddedMessage(args) {
39
+ return `Field '${args.addedFieldName}' was added to ${args.typeType} '${args.typeName}'`;
40
+ }
41
+ function fieldAddedFromMeta(args) {
25
42
  return {
43
+ type: change_js_1.ChangeType.FieldAdded,
26
44
  criticality: {
27
45
  level: change_js_1.CriticalityLevel.NonBreaking,
28
46
  },
29
- type: change_js_1.ChangeType.FieldAdded,
30
- message: `Field '${field.name}' was added to ${entity} '${type.name}'`,
31
- path: [type.name, field.name].join('.'),
47
+ message: buildFieldAddedMessage(args.meta),
48
+ meta: args.meta,
49
+ path: [args.meta.typeName, args.meta.addedFieldName].join('.'),
32
50
  };
33
51
  }
52
+ exports.fieldAddedFromMeta = fieldAddedFromMeta;
53
+ function fieldAdded(type, field) {
54
+ const entity = (0, graphql_1.isInterfaceType)(type) ? 'interface' : 'object type';
55
+ return fieldAddedFromMeta({
56
+ type: change_js_1.ChangeType.FieldAdded,
57
+ meta: {
58
+ typeName: type.name,
59
+ addedFieldName: field.name,
60
+ typeType: entity,
61
+ },
62
+ });
63
+ }
34
64
  exports.fieldAdded = fieldAdded;
35
- function fieldDescriptionChanged(type, oldField, newField) {
65
+ function buildFieldDescriptionChangedMessage(args) {
66
+ return `Field '${args.typeName}.${args.fieldName}' description changed from '${args.oldDescription}' to '${args.newDescription}'`;
67
+ }
68
+ function fieldDescriptionChangedFromMeta(args) {
36
69
  return {
70
+ type: change_js_1.ChangeType.FieldDescriptionChanged,
37
71
  criticality: {
38
72
  level: change_js_1.CriticalityLevel.NonBreaking,
39
73
  },
40
- type: change_js_1.ChangeType.FieldDescriptionChanged,
41
- message: `Field '${type.name}.${oldField.name}' description changed from '${oldField.description}' to '${newField.description}'`,
42
- path: [type.name, oldField.name].join('.'),
74
+ message: buildFieldDescriptionChangedMessage(args.meta),
75
+ meta: args.meta,
76
+ path: [args.meta.typeName, args.meta.fieldName].join('.'),
43
77
  };
44
78
  }
79
+ exports.fieldDescriptionChangedFromMeta = fieldDescriptionChangedFromMeta;
80
+ function fieldDescriptionChanged(type, oldField, newField) {
81
+ var _a, _b;
82
+ return fieldDescriptionChangedFromMeta({
83
+ type: change_js_1.ChangeType.FieldDescriptionChanged,
84
+ meta: {
85
+ fieldName: oldField.name,
86
+ typeName: type.name,
87
+ oldDescription: (_a = oldField.description) !== null && _a !== void 0 ? _a : '',
88
+ newDescription: (_b = newField.description) !== null && _b !== void 0 ? _b : '',
89
+ },
90
+ });
91
+ }
45
92
  exports.fieldDescriptionChanged = fieldDescriptionChanged;
46
- function fieldDescriptionAdded(type, field) {
93
+ function buildFieldDescriptionAddedMessage(args) {
94
+ return `Field '${args.typeName}.${args.fieldName}' has description '${args.addedDescription}'`;
95
+ }
96
+ function fieldDescriptionAddedFromMeta(args) {
47
97
  return {
98
+ type: change_js_1.ChangeType.FieldDescriptionAdded,
48
99
  criticality: {
49
100
  level: change_js_1.CriticalityLevel.NonBreaking,
50
101
  },
51
- type: change_js_1.ChangeType.FieldDescriptionAdded,
52
- message: `Field '${type.name}.${field.name}' has description '${field.description}'`,
53
- path: [type.name, field.name].join('.'),
102
+ message: buildFieldDescriptionAddedMessage(args.meta),
103
+ meta: args.meta,
104
+ path: [args.meta.typeName, args.meta.fieldName].join('.'),
54
105
  };
55
106
  }
107
+ exports.fieldDescriptionAddedFromMeta = fieldDescriptionAddedFromMeta;
108
+ function fieldDescriptionAdded(type, field) {
109
+ var _a;
110
+ return fieldDescriptionAddedFromMeta({
111
+ type: change_js_1.ChangeType.FieldDescriptionAdded,
112
+ meta: {
113
+ typeName: type.name,
114
+ fieldName: field.name,
115
+ addedDescription: (_a = field.description) !== null && _a !== void 0 ? _a : '',
116
+ },
117
+ });
118
+ }
56
119
  exports.fieldDescriptionAdded = fieldDescriptionAdded;
57
- function fieldDescriptionRemoved(type, field) {
120
+ function buildFieldDescriptionRemovedMessage(args) {
121
+ return `Description was removed from field '${args.typeName}.${args.fieldName}'`;
122
+ }
123
+ function fieldDescriptionRemovedFromMeta(args) {
58
124
  return {
125
+ type: change_js_1.ChangeType.FieldDescriptionRemoved,
59
126
  criticality: {
60
127
  level: change_js_1.CriticalityLevel.NonBreaking,
61
128
  },
62
- type: change_js_1.ChangeType.FieldDescriptionRemoved,
63
- message: `Description was removed from field '${type.name}.${field.name}'`,
64
- path: [type.name, field.name].join('.'),
129
+ message: buildFieldDescriptionRemovedMessage(args.meta),
130
+ meta: args.meta,
131
+ path: [args.meta.typeName, args.meta.fieldName].join('.'),
65
132
  };
66
133
  }
134
+ exports.fieldDescriptionRemovedFromMeta = fieldDescriptionRemovedFromMeta;
135
+ function fieldDescriptionRemoved(type, field) {
136
+ return fieldDescriptionRemovedFromMeta({
137
+ type: change_js_1.ChangeType.FieldDescriptionRemoved,
138
+ meta: {
139
+ typeName: type.name,
140
+ fieldName: field.name,
141
+ },
142
+ });
143
+ }
67
144
  exports.fieldDescriptionRemoved = fieldDescriptionRemoved;
68
- function fieldDeprecationAdded(type, field) {
145
+ function buildFieldDeprecatedAddedMessage(args) {
146
+ return `Field '${args.typeName}.${args.fieldName}' is deprecated`;
147
+ }
148
+ function fieldDeprecationAddedFromMeta(args) {
69
149
  return {
150
+ type: change_js_1.ChangeType.FieldDeprecationAdded,
70
151
  criticality: {
71
152
  level: change_js_1.CriticalityLevel.NonBreaking,
72
153
  },
73
- type: change_js_1.ChangeType.FieldDeprecationAdded,
74
- message: `Field '${type.name}.${field.name}' is deprecated`,
75
- path: [type.name, field.name].join('.'),
154
+ message: buildFieldDeprecatedAddedMessage(args.meta),
155
+ meta: args.meta,
156
+ path: [args.meta.typeName, args.meta.fieldName].join('.'),
76
157
  };
77
158
  }
159
+ exports.fieldDeprecationAddedFromMeta = fieldDeprecationAddedFromMeta;
160
+ function fieldDeprecationAdded(type, field) {
161
+ return fieldDeprecationAddedFromMeta({
162
+ type: change_js_1.ChangeType.FieldDeprecationAdded,
163
+ meta: {
164
+ typeName: type.name,
165
+ fieldName: field.name,
166
+ },
167
+ });
168
+ }
78
169
  exports.fieldDeprecationAdded = fieldDeprecationAdded;
79
- function fieldDeprecationRemoved(type, field) {
170
+ function fieldDeprecationRemovedFromMeta(args) {
80
171
  return {
172
+ type: change_js_1.ChangeType.FieldDeprecationRemoved,
81
173
  criticality: {
82
174
  level: change_js_1.CriticalityLevel.Dangerous,
83
175
  },
84
- type: change_js_1.ChangeType.FieldDeprecationRemoved,
85
- message: `Field '${type.name}.${field.name}' is no longer deprecated`,
86
- path: [type.name, field.name].join('.'),
176
+ message: `Field '${args.meta.typeName}.${args.meta.fieldName}' is no longer deprecated`,
177
+ meta: args.meta,
178
+ path: [args.meta.typeName, args.meta.fieldName].join('.'),
87
179
  };
88
180
  }
181
+ exports.fieldDeprecationRemovedFromMeta = fieldDeprecationRemovedFromMeta;
182
+ function fieldDeprecationRemoved(type, field) {
183
+ return fieldDeprecationRemovedFromMeta({
184
+ type: change_js_1.ChangeType.FieldDeprecationRemoved,
185
+ meta: {
186
+ fieldName: field.name,
187
+ typeName: type.name,
188
+ },
189
+ });
190
+ }
89
191
  exports.fieldDeprecationRemoved = fieldDeprecationRemoved;
90
- function fieldDeprecationReasonChanged(type, oldField, newField) {
192
+ function buildFieldDeprecationReasonChangedMessage(args) {
193
+ return `Deprecation reason on field '${args.typeName}.${args.fieldName}' has changed from '${args.oldDeprecationReason}' to '${args.newDeprecationReason}'`;
194
+ }
195
+ function fieldDeprecationReasonChangedFromMeta(args) {
91
196
  return {
197
+ type: change_js_1.ChangeType.FieldDeprecationReasonChanged,
92
198
  criticality: {
93
199
  level: change_js_1.CriticalityLevel.NonBreaking,
94
200
  },
95
- type: change_js_1.ChangeType.FieldDeprecationReasonChanged,
96
- message: `Deprecation reason on field '${type.name}.${newField.name}' has changed from '${oldField.deprecationReason}' to '${newField.deprecationReason}'`,
97
- path: [type.name, oldField.name].join('.'),
201
+ message: buildFieldDeprecationReasonChangedMessage(args.meta),
202
+ meta: args.meta,
203
+ path: [args.meta.typeName, args.meta.fieldName].join('.'),
98
204
  };
99
205
  }
206
+ exports.fieldDeprecationReasonChangedFromMeta = fieldDeprecationReasonChangedFromMeta;
207
+ function fieldDeprecationReasonChanged(type, oldField, newField) {
208
+ var _a, _b;
209
+ return fieldDeprecationReasonChangedFromMeta({
210
+ type: change_js_1.ChangeType.FieldDeprecationReasonChanged,
211
+ meta: {
212
+ fieldName: newField.name,
213
+ typeName: type.name,
214
+ newDeprecationReason: (_a = newField.deprecationReason) !== null && _a !== void 0 ? _a : '',
215
+ oldDeprecationReason: (_b = oldField.deprecationReason) !== null && _b !== void 0 ? _b : '',
216
+ },
217
+ });
218
+ }
100
219
  exports.fieldDeprecationReasonChanged = fieldDeprecationReasonChanged;
101
- function fieldDeprecationReasonAdded(type, field) {
220
+ function buildFieldDeprecationReasonAddedMessage(args) {
221
+ return `Field '${args.typeName}.${args.fieldName}' has deprecation reason '${args.addedDeprecationReason}'`;
222
+ }
223
+ function fieldDeprecationReasonAddedFromMeta(args) {
102
224
  return {
225
+ type: change_js_1.ChangeType.FieldDeprecationReasonAdded,
103
226
  criticality: {
104
227
  level: change_js_1.CriticalityLevel.NonBreaking,
105
228
  },
106
- type: change_js_1.ChangeType.FieldDeprecationReasonAdded,
107
- message: `Field '${type.name}.${field.name}' has deprecation reason '${field.deprecationReason}'`,
108
- path: [type.name, field.name].join('.'),
229
+ message: buildFieldDeprecationReasonAddedMessage(args.meta),
230
+ meta: args.meta,
231
+ path: [args.meta.typeName, args.meta.fieldName].join('.'),
109
232
  };
110
233
  }
234
+ exports.fieldDeprecationReasonAddedFromMeta = fieldDeprecationReasonAddedFromMeta;
235
+ function fieldDeprecationReasonAdded(type, field) {
236
+ var _a;
237
+ return fieldDeprecationReasonAddedFromMeta({
238
+ type: change_js_1.ChangeType.FieldDeprecationReasonAdded,
239
+ meta: {
240
+ typeName: type.name,
241
+ fieldName: field.name,
242
+ addedDeprecationReason: (_a = field.deprecationReason) !== null && _a !== void 0 ? _a : '',
243
+ },
244
+ });
245
+ }
111
246
  exports.fieldDeprecationReasonAdded = fieldDeprecationReasonAdded;
112
- function fieldDeprecationReasonRemoved(type, field) {
247
+ function fieldDeprecationReasonRemovedFromMeta(args) {
113
248
  return {
249
+ type: change_js_1.ChangeType.FieldDeprecationReasonRemoved,
114
250
  criticality: {
115
251
  level: change_js_1.CriticalityLevel.NonBreaking,
116
252
  },
117
- type: change_js_1.ChangeType.FieldDeprecationReasonRemoved,
118
- message: `Deprecation reason was removed from field '${type.name}.${field.name}'`,
119
- path: [type.name, field.name].join('.'),
253
+ message: `Deprecation reason was removed from field '${args.meta.typeName}.${args.meta.fieldName}'`,
254
+ meta: args.meta,
255
+ path: [args.meta.typeName, args.meta.fieldName].join('.'),
120
256
  };
121
257
  }
258
+ exports.fieldDeprecationReasonRemovedFromMeta = fieldDeprecationReasonRemovedFromMeta;
259
+ function fieldDeprecationReasonRemoved(type, field) {
260
+ return fieldDeprecationReasonRemovedFromMeta({
261
+ type: change_js_1.ChangeType.FieldDeprecationReasonRemoved,
262
+ meta: {
263
+ typeName: type.name,
264
+ fieldName: field.name,
265
+ },
266
+ });
267
+ }
122
268
  exports.fieldDeprecationReasonRemoved = fieldDeprecationReasonRemoved;
123
- function fieldTypeChanged(type, oldField, newField) {
269
+ function buildFieldTypeChangedMessage(args) {
270
+ return `Field '${args.meta.typeName}.${args.meta.fieldName}' changed type from '${args.meta.oldFieldType}' to '${args.meta.newFieldType}'`;
271
+ }
272
+ function fieldTypeChangedFromMeta(args) {
124
273
  return {
274
+ type: change_js_1.ChangeType.FieldTypeChanged,
125
275
  criticality: {
126
- level: (0, graphql_js_1.safeChangeForField)(oldField.type, newField.type)
276
+ level: args.meta.isSafeFieldTypeChange
127
277
  ? change_js_1.CriticalityLevel.NonBreaking
128
278
  : change_js_1.CriticalityLevel.Breaking,
129
279
  },
130
- type: change_js_1.ChangeType.FieldTypeChanged,
131
- message: `Field '${type}.${oldField.name}' changed type from '${oldField.type}' to '${newField.type}'`,
132
- path: [type.name, oldField.name].join('.'),
280
+ message: buildFieldTypeChangedMessage(args),
281
+ meta: args.meta,
282
+ path: [args.meta.typeName, args.meta.fieldName].join('.'),
133
283
  };
134
284
  }
285
+ exports.fieldTypeChangedFromMeta = fieldTypeChangedFromMeta;
286
+ function fieldTypeChanged(type, oldField, newField) {
287
+ return fieldTypeChangedFromMeta({
288
+ type: change_js_1.ChangeType.FieldTypeChanged,
289
+ meta: {
290
+ typeName: type.name,
291
+ fieldName: oldField.name,
292
+ oldFieldType: oldField.type.toString(),
293
+ newFieldType: newField.type.toString(),
294
+ isSafeFieldTypeChange: (0, graphql_js_1.safeChangeForField)(oldField.type, newField.type),
295
+ },
296
+ });
297
+ }
135
298
  exports.fieldTypeChanged = fieldTypeChanged;
136
- function fieldArgumentAdded(type, field, arg) {
137
- const isBreaking = (0, graphql_1.isNonNullType)(arg.type) && typeof arg.defaultValue === 'undefined';
138
- const defaultValueMsg = typeof arg.defaultValue === 'undefined' ? ' ' : ' (with default value) ';
299
+ function buildFieldArgumentAddedMessage(args) {
300
+ return `Argument '${args.addedArgumentName}: ${args.addedArgumentType}'${args.hasDefaultValue ? ' (with default value) ' : ' '}added to field '${args.typeName}.${args.fieldName}'`;
301
+ }
302
+ function fieldArgumentAddedFromMeta(args) {
139
303
  return {
140
- criticality: isBreaking
141
- ? {
142
- level: change_js_1.CriticalityLevel.Breaking,
143
- reason: `Adding a required argument to an existing field is a breaking change because it will cause existing uses of this field to error.`,
144
- }
145
- : {
146
- level: change_js_1.CriticalityLevel.Dangerous,
147
- reason: `Adding a new argument to an existing field may involve a change in resolve function logic that potentially may cause some side effects.`,
148
- },
149
304
  type: change_js_1.ChangeType.FieldArgumentAdded,
150
- message: `Argument '${arg.name}: ${arg.type}'${defaultValueMsg}added to field '${type.name}.${field.name}'`,
151
- path: [type.name, field.name, arg.name].join('.'),
305
+ criticality: {
306
+ level: args.meta.isAddedFieldArgumentBreaking
307
+ ? change_js_1.CriticalityLevel.Breaking
308
+ : change_js_1.CriticalityLevel.Dangerous,
309
+ },
310
+ message: buildFieldArgumentAddedMessage(args.meta),
311
+ meta: args.meta,
312
+ path: [args.meta.typeName, args.meta.fieldName, args.meta.addedArgumentName].join('.'),
152
313
  };
153
314
  }
315
+ exports.fieldArgumentAddedFromMeta = fieldArgumentAddedFromMeta;
316
+ function fieldArgumentAdded(type, field, arg) {
317
+ const isBreaking = (0, graphql_1.isNonNullType)(arg.type) && typeof arg.defaultValue === 'undefined';
318
+ return fieldArgumentAddedFromMeta({
319
+ type: change_js_1.ChangeType.FieldArgumentAdded,
320
+ meta: {
321
+ typeName: type.name,
322
+ fieldName: field.name,
323
+ addedArgumentName: arg.name,
324
+ addedArgumentType: arg.type.toString(),
325
+ hasDefaultValue: arg.defaultValue != null,
326
+ isAddedFieldArgumentBreaking: isBreaking,
327
+ },
328
+ });
329
+ }
154
330
  exports.fieldArgumentAdded = fieldArgumentAdded;
155
- function fieldArgumentRemoved(type, field, arg) {
331
+ function buildFieldArgumentRemovedMessage(args) {
332
+ return `Argument '${args.meta.removedFieldArgumentName}: ${args.meta.removedFieldType}' was removed from field '${args.meta.typeName}.${args.meta.fieldName}'`;
333
+ }
334
+ function fieldArgumentRemovedFromMeta(args) {
156
335
  return {
336
+ type: change_js_1.ChangeType.FieldArgumentRemoved,
157
337
  criticality: {
158
338
  level: change_js_1.CriticalityLevel.Breaking,
159
- reason: `Removing a field argument is a breaking change because it will cause existing queries that use this argument to error.`,
160
339
  },
161
- type: change_js_1.ChangeType.FieldArgumentRemoved,
162
- message: `Argument '${arg.name}: ${arg.type}' was removed from field '${type.name}.${field.name}'`,
163
- path: [type.name, field.name, arg.name].join('.'),
340
+ message: buildFieldArgumentRemovedMessage(args),
341
+ meta: args.meta,
342
+ path: [args.meta.typeName, args.meta.fieldName, args.meta.removedFieldArgumentName].join('.'),
164
343
  };
165
344
  }
345
+ exports.fieldArgumentRemovedFromMeta = fieldArgumentRemovedFromMeta;
346
+ function fieldArgumentRemoved(type, field, arg) {
347
+ return fieldArgumentRemovedFromMeta({
348
+ type: change_js_1.ChangeType.FieldArgumentRemoved,
349
+ meta: {
350
+ typeName: type.name,
351
+ fieldName: field.name,
352
+ removedFieldArgumentName: arg.name,
353
+ removedFieldType: arg.type.toString(),
354
+ },
355
+ });
356
+ }
166
357
  exports.fieldArgumentRemoved = fieldArgumentRemoved;