@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,124 +1,293 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.directiveArgumentTypeChanged = exports.directiveArgumentDefaultValueChanged = exports.directiveArgumentDescriptionChanged = exports.directiveArgumentRemoved = exports.directiveArgumentAdded = exports.directiveLocationRemoved = exports.directiveLocationAdded = exports.directiveDescriptionChanged = exports.directiveAdded = exports.directiveRemoved = void 0;
3
+ exports.directiveArgumentTypeChanged = exports.directiveArgumentTypeChangedFromMeta = exports.directiveArgumentDefaultValueChanged = exports.directiveArgumentDefaultValueChangedFromMeta = exports.directiveArgumentDescriptionChanged = exports.directiveArgumentDescriptionChangedFromMeta = exports.directiveArgumentRemoved = exports.directiveArgumentRemovedFromMeta = exports.directiveArgumentAdded = exports.directiveArgumentAddedFromMeta = exports.directiveLocationRemoved = exports.directiveLocationRemovedFromMeta = exports.directiveLocationAdded = exports.directiveLocationAddedFromMeta = exports.directiveDescriptionChanged = exports.directiveDescriptionChangedFromMeta = exports.directiveAdded = exports.directiveAddedFromMeta = exports.directiveRemoved = exports.directiveRemovedFromMeta = void 0;
4
4
  const graphql_1 = require("graphql");
5
5
  const graphql_js_1 = require("../../utils/graphql.js");
6
+ const string_js_1 = require("../../utils/string.js");
6
7
  const change_js_1 = require("./change.js");
7
- function directiveRemoved(directive) {
8
+ function buildDirectiveRemovedMessage(args) {
9
+ return `Directive '${args.removedDirectiveName}' was removed`;
10
+ }
11
+ const directiveRemovedCriticalityBreakingReason = `A directive could be in use of a client application. Removing it could break the client application.`;
12
+ function directiveRemovedFromMeta(args) {
8
13
  return {
9
14
  criticality: {
10
15
  level: change_js_1.CriticalityLevel.Breaking,
16
+ reason: directiveRemovedCriticalityBreakingReason,
11
17
  },
12
18
  type: change_js_1.ChangeType.DirectiveRemoved,
13
- message: `Directive '${directive.name}' was removed`,
14
- path: `@${directive.name}`,
19
+ message: buildDirectiveRemovedMessage(args.meta),
20
+ path: `@${args.meta.removedDirectiveName}`,
21
+ meta: args.meta,
15
22
  };
16
23
  }
24
+ exports.directiveRemovedFromMeta = directiveRemovedFromMeta;
25
+ function directiveRemoved(directive) {
26
+ return directiveRemovedFromMeta({
27
+ type: change_js_1.ChangeType.DirectiveRemoved,
28
+ meta: {
29
+ removedDirectiveName: directive.name,
30
+ },
31
+ });
32
+ }
17
33
  exports.directiveRemoved = directiveRemoved;
18
- function directiveAdded(directive) {
34
+ function buildDirectiveAddedMessage(args) {
35
+ return `Directive '${args.addedDirectiveName}' was added`;
36
+ }
37
+ function directiveAddedFromMeta(args) {
19
38
  return {
20
39
  criticality: {
21
40
  level: change_js_1.CriticalityLevel.NonBreaking,
22
41
  },
23
42
  type: change_js_1.ChangeType.DirectiveAdded,
24
- message: `Directive '${directive.name}' was added`,
25
- path: `@${directive.name}`,
43
+ message: buildDirectiveAddedMessage(args.meta),
44
+ path: `@${args.meta.addedDirectiveName}`,
45
+ meta: args.meta,
26
46
  };
27
47
  }
48
+ exports.directiveAddedFromMeta = directiveAddedFromMeta;
49
+ function directiveAdded(directive) {
50
+ return directiveAddedFromMeta({
51
+ type: change_js_1.ChangeType.DirectiveAdded,
52
+ meta: {
53
+ addedDirectiveName: directive.name,
54
+ },
55
+ });
56
+ }
28
57
  exports.directiveAdded = directiveAdded;
29
- function directiveDescriptionChanged(oldDirective, newDirective) {
58
+ function buildDirectiveDescriptionChangedMessage(args) {
59
+ var _a, _b;
60
+ return `Directive '${args.directiveName}' description changed from '${(_a = args.oldDirectiveDescription) !== null && _a !== void 0 ? _a : 'undefined'}' to '${(_b = args.newDirectiveDescription) !== null && _b !== void 0 ? _b : 'undefined'}'`;
61
+ }
62
+ function directiveDescriptionChangedFromMeta(args) {
30
63
  return {
31
64
  criticality: {
32
65
  level: change_js_1.CriticalityLevel.NonBreaking,
33
66
  },
34
67
  type: change_js_1.ChangeType.DirectiveDescriptionChanged,
35
- message: `Directive '${oldDirective.name}' description changed from '${oldDirective.description}' to '${newDirective.description}'`,
36
- path: `@${oldDirective.name}`,
68
+ message: buildDirectiveDescriptionChangedMessage(args.meta),
69
+ path: `@${args.meta.directiveName}`,
70
+ meta: args.meta,
37
71
  };
38
72
  }
73
+ exports.directiveDescriptionChangedFromMeta = directiveDescriptionChangedFromMeta;
74
+ function directiveDescriptionChanged(oldDirective, newDirective) {
75
+ var _a, _b;
76
+ return directiveDescriptionChangedFromMeta({
77
+ type: change_js_1.ChangeType.DirectiveDescriptionChanged,
78
+ meta: {
79
+ directiveName: oldDirective.name,
80
+ oldDirectiveDescription: (_a = oldDirective.description) !== null && _a !== void 0 ? _a : null,
81
+ newDirectiveDescription: (_b = newDirective.description) !== null && _b !== void 0 ? _b : null,
82
+ },
83
+ });
84
+ }
39
85
  exports.directiveDescriptionChanged = directiveDescriptionChanged;
40
- function directiveLocationAdded(directive, location) {
86
+ function buildDirectiveLocationAddedMessage(args) {
87
+ return `Location '${args.addedDirectiveLocation}' was added to directive '${args.directiveName}'`;
88
+ }
89
+ function directiveLocationAddedFromMeta(args) {
41
90
  return {
42
91
  criticality: {
43
92
  level: change_js_1.CriticalityLevel.NonBreaking,
44
93
  },
45
94
  type: change_js_1.ChangeType.DirectiveLocationAdded,
46
- message: `Location '${location}' was added to directive '${directive.name}'`,
47
- path: `@${directive.name}`,
95
+ message: buildDirectiveLocationAddedMessage(args.meta),
96
+ path: `@${args.meta.directiveName}`,
97
+ meta: args.meta,
48
98
  };
49
99
  }
100
+ exports.directiveLocationAddedFromMeta = directiveLocationAddedFromMeta;
101
+ function directiveLocationAdded(directive, location) {
102
+ return directiveLocationAddedFromMeta({
103
+ type: change_js_1.ChangeType.DirectiveLocationAdded,
104
+ meta: {
105
+ directiveName: directive.name,
106
+ addedDirectiveLocation: location.toString(),
107
+ },
108
+ });
109
+ }
50
110
  exports.directiveLocationAdded = directiveLocationAdded;
51
- function directiveLocationRemoved(directive, location) {
111
+ function buildDirectiveLocationRemovedMessage(args) {
112
+ return `Location '${args.removedDirectiveLocation}' was removed from directive '${args.directiveName}'`;
113
+ }
114
+ const directiveLocationRemovedBreakingReason = `A directive could be in use of a client application. Removing it could break the client application.`;
115
+ function directiveLocationRemovedFromMeta(args) {
52
116
  return {
53
117
  criticality: {
54
118
  level: change_js_1.CriticalityLevel.Breaking,
119
+ reason: directiveLocationRemovedBreakingReason,
55
120
  },
56
121
  type: change_js_1.ChangeType.DirectiveLocationRemoved,
57
- message: `Location '${location}' was removed from directive '${directive.name}'`,
58
- path: `@${directive.name}`,
122
+ message: buildDirectiveLocationRemovedMessage(args.meta),
123
+ path: `@${args.meta.directiveName}`,
124
+ meta: args.meta,
59
125
  };
60
126
  }
127
+ exports.directiveLocationRemovedFromMeta = directiveLocationRemovedFromMeta;
128
+ function directiveLocationRemoved(directive, location) {
129
+ return directiveLocationRemovedFromMeta({
130
+ type: change_js_1.ChangeType.DirectiveLocationRemoved,
131
+ meta: {
132
+ directiveName: directive.name,
133
+ removedDirectiveLocation: location.toString(),
134
+ },
135
+ });
136
+ }
61
137
  exports.directiveLocationRemoved = directiveLocationRemoved;
62
- function directiveArgumentAdded(directive, arg) {
138
+ const directiveArgumentAddedBreakingReason = `A directive could be in use of a client application. Adding a non-nullable argument will break those clients.`;
139
+ const directiveArgumentNonBreakingReason = `A directive could be in use of a client application. Adding a non-nullable argument will break those clients.`;
140
+ function directiveArgumentAddedFromMeta(args) {
63
141
  return {
64
- criticality: {
65
- level: (0, graphql_1.isNonNullType)(arg.type) ? change_js_1.CriticalityLevel.Breaking : change_js_1.CriticalityLevel.NonBreaking,
66
- },
142
+ criticality: args.meta.addedDirectiveArgumentTypeIsNonNull
143
+ ? {
144
+ level: change_js_1.CriticalityLevel.Breaking,
145
+ reason: directiveArgumentAddedBreakingReason,
146
+ }
147
+ : {
148
+ level: change_js_1.CriticalityLevel.NonBreaking,
149
+ reason: directiveArgumentNonBreakingReason,
150
+ },
67
151
  type: change_js_1.ChangeType.DirectiveArgumentAdded,
68
- message: `Argument '${arg.name}' was added to directive '${directive.name}'`,
69
- path: `@${directive.name}`,
152
+ message: `Argument '${args.meta.addedDirectiveArgumentName}' was added to directive '${args.meta.directiveName}'`,
153
+ path: `@${args.meta.directiveName}`,
154
+ meta: args.meta,
70
155
  };
71
156
  }
157
+ exports.directiveArgumentAddedFromMeta = directiveArgumentAddedFromMeta;
158
+ function directiveArgumentAdded(directive, arg) {
159
+ return directiveArgumentAddedFromMeta({
160
+ type: change_js_1.ChangeType.DirectiveArgumentAdded,
161
+ meta: {
162
+ directiveName: directive.name,
163
+ addedDirectiveArgumentName: arg.name,
164
+ addedDirectiveArgumentTypeIsNonNull: (0, graphql_1.isNonNullType)(arg.type),
165
+ },
166
+ });
167
+ }
72
168
  exports.directiveArgumentAdded = directiveArgumentAdded;
73
- function directiveArgumentRemoved(directive, arg) {
169
+ function buildDirectiveArgumentRemovedMessage(args) {
170
+ return `Argument '${args.removedDirectiveArgumentName}' was removed from directive '${args.directiveName}'`;
171
+ }
172
+ const directiveArgumentRemovedBreakingReason = `A directive argument could be in use of a client application. Removing the argument can break client applications.`;
173
+ function directiveArgumentRemovedFromMeta(args) {
74
174
  return {
75
175
  criticality: {
76
176
  level: change_js_1.CriticalityLevel.Breaking,
177
+ reason: directiveArgumentRemovedBreakingReason,
77
178
  },
78
179
  type: change_js_1.ChangeType.DirectiveArgumentRemoved,
79
- message: `Argument '${arg.name}' was removed from directive '${directive.name}'`,
80
- path: `@${directive.name}.${arg.name}`,
180
+ message: buildDirectiveArgumentRemovedMessage(args.meta),
181
+ path: `@${args.meta.directiveName}.${args.meta.removedDirectiveArgumentName}`,
182
+ meta: args.meta,
81
183
  };
82
184
  }
185
+ exports.directiveArgumentRemovedFromMeta = directiveArgumentRemovedFromMeta;
186
+ function directiveArgumentRemoved(directive, arg) {
187
+ return directiveArgumentRemovedFromMeta({
188
+ type: change_js_1.ChangeType.DirectiveArgumentRemoved,
189
+ meta: {
190
+ directiveName: directive.name,
191
+ removedDirectiveArgumentName: arg.name,
192
+ },
193
+ });
194
+ }
83
195
  exports.directiveArgumentRemoved = directiveArgumentRemoved;
84
- function directiveArgumentDescriptionChanged(directive, oldArg, newArg) {
196
+ function buildDirectiveArgumentDescriptionChangedMessage(args) {
197
+ return `Description for argument '${args.directiveArgumentName}' on directive '${args.directiveName}' changed from '${args.oldDirectiveArgumentDescription}' to '${args.newDirectiveArgumentDescription}'`;
198
+ }
199
+ function directiveArgumentDescriptionChangedFromMeta(args) {
85
200
  return {
86
201
  criticality: {
87
202
  level: change_js_1.CriticalityLevel.NonBreaking,
88
203
  },
89
204
  type: change_js_1.ChangeType.DirectiveArgumentDescriptionChanged,
90
- message: `Description for argument '${oldArg.name}' on directive '${directive.name}' changed from '${oldArg.description}' to '${newArg.description}'`,
91
- path: `@${directive.name}.${oldArg.name}`,
205
+ message: buildDirectiveArgumentDescriptionChangedMessage(args.meta),
206
+ path: `@${args.meta.directiveName}.${args.meta.directiveArgumentName}`,
207
+ meta: args.meta,
92
208
  };
93
209
  }
210
+ exports.directiveArgumentDescriptionChangedFromMeta = directiveArgumentDescriptionChangedFromMeta;
211
+ function directiveArgumentDescriptionChanged(directive, oldArg, newArg) {
212
+ var _a, _b;
213
+ return directiveArgumentDescriptionChangedFromMeta({
214
+ type: change_js_1.ChangeType.DirectiveArgumentDescriptionChanged,
215
+ meta: {
216
+ directiveName: directive.name,
217
+ directiveArgumentName: oldArg.name,
218
+ oldDirectiveArgumentDescription: (_a = oldArg.description) !== null && _a !== void 0 ? _a : null,
219
+ newDirectiveArgumentDescription: (_b = newArg.description) !== null && _b !== void 0 ? _b : null,
220
+ },
221
+ });
222
+ }
94
223
  exports.directiveArgumentDescriptionChanged = directiveArgumentDescriptionChanged;
95
- function directiveArgumentDefaultValueChanged(directive, oldArg, newArg) {
224
+ function buildDirectiveArgumentDefaultValueChanged(args) {
225
+ return args.oldDirectiveArgumentDefaultValue === undefined
226
+ ? `Default value '${args.newDirectiveArgumentDefaultValue}' was added to argument '${args.directiveArgumentName}' on directive '${args.directiveName}'`
227
+ : `Default value for argument '${args.directiveArgumentName}' on directive '${args.directiveName}' changed from '${args.oldDirectiveArgumentDefaultValue}' to '${args.newDirectiveArgumentDefaultValue}'`;
228
+ }
229
+ const directiveArgumentDefaultValueChangedDangerousReason = 'Changing the default value for an argument may change the runtime behaviour of a field if it was never provided.';
230
+ function directiveArgumentDefaultValueChangedFromMeta(args) {
96
231
  return {
97
232
  criticality: {
98
233
  level: change_js_1.CriticalityLevel.Dangerous,
99
- reason: 'Changing the default value for an argument may change the runtime behaviour of a field if it was never provided.',
234
+ reason: directiveArgumentDefaultValueChangedDangerousReason,
100
235
  },
101
236
  type: change_js_1.ChangeType.DirectiveArgumentDefaultValueChanged,
102
- message: typeof oldArg.defaultValue === 'undefined'
103
- ? `Default value '${newArg.defaultValue}' was added to argument '${newArg.name}' on directive '${directive.name}'`
104
- : `Default value for argument '${oldArg.name}' on directive '${directive.name}' changed from '${oldArg.defaultValue}' to '${newArg.defaultValue}'`,
105
- path: `@${directive.name}.${oldArg.name}`,
237
+ message: buildDirectiveArgumentDefaultValueChanged(args.meta),
238
+ path: `@${args.meta.directiveName}.${args.meta.directiveArgumentName}`,
239
+ meta: args.meta,
240
+ };
241
+ }
242
+ exports.directiveArgumentDefaultValueChangedFromMeta = directiveArgumentDefaultValueChangedFromMeta;
243
+ function directiveArgumentDefaultValueChanged(directive, oldArg, newArg) {
244
+ const meta = {
245
+ directiveName: directive.name,
246
+ directiveArgumentName: oldArg.name,
106
247
  };
248
+ if (oldArg.defaultValue !== undefined) {
249
+ meta.oldDirectiveArgumentDefaultValue = (0, string_js_1.safeString)(oldArg.defaultValue);
250
+ }
251
+ if (newArg.defaultValue !== undefined) {
252
+ meta.newDirectiveArgumentDefaultValue = (0, string_js_1.safeString)(newArg.defaultValue);
253
+ }
254
+ return directiveArgumentDefaultValueChangedFromMeta({
255
+ type: change_js_1.ChangeType.DirectiveArgumentDefaultValueChanged,
256
+ meta,
257
+ });
107
258
  }
108
259
  exports.directiveArgumentDefaultValueChanged = directiveArgumentDefaultValueChanged;
109
- function directiveArgumentTypeChanged(directive, oldArg, newArg) {
260
+ function buildDirectiveArgumentTypeChangedMessage(args) {
261
+ return `Type for argument '${args.meta.directiveArgumentName}' on directive '${args.meta.directiveName}' changed from '${args.meta.oldDirectiveArgumentType}' to '${args.meta.newDirectiveArgumentType}'`;
262
+ }
263
+ const directiveArgumentTypeChangedNonBreakingReason = 'Changing an input field from non-null to null is considered non-breaking.';
264
+ function directiveArgumentTypeChangedFromMeta(args) {
110
265
  return {
111
- criticality: (0, graphql_js_1.safeChangeForInputValue)(oldArg.type, newArg.type)
266
+ criticality: args.meta.isSafeDirectiveArgumentTypeChange
112
267
  ? {
113
268
  level: change_js_1.CriticalityLevel.NonBreaking,
114
- reason: 'Changing an input field from non-null to null is considered non-breaking.',
269
+ reason: directiveArgumentTypeChangedNonBreakingReason,
115
270
  }
116
271
  : {
117
272
  level: change_js_1.CriticalityLevel.Breaking,
118
273
  },
119
274
  type: change_js_1.ChangeType.DirectiveArgumentTypeChanged,
120
- message: `Type for argument '${oldArg.name}' on directive '${directive.name}' changed from '${oldArg.type}' to '${newArg.type}'`,
121
- path: `@${directive.name}.${oldArg.name}`,
275
+ message: buildDirectiveArgumentTypeChangedMessage(args),
276
+ path: `@${args.meta.directiveName}.${args.meta.directiveArgumentName}`,
277
+ meta: args.meta,
122
278
  };
123
279
  }
280
+ exports.directiveArgumentTypeChangedFromMeta = directiveArgumentTypeChangedFromMeta;
281
+ function directiveArgumentTypeChanged(directive, oldArg, newArg) {
282
+ return directiveArgumentTypeChangedFromMeta({
283
+ type: change_js_1.ChangeType.DirectiveArgumentTypeChanged,
284
+ meta: {
285
+ directiveName: directive.name,
286
+ directiveArgumentName: oldArg.name,
287
+ oldDirectiveArgumentType: oldArg.type.toString(),
288
+ newDirectiveArgumentType: newArg.type.toString(),
289
+ isSafeDirectiveArgumentTypeChange: (0, graphql_js_1.safeChangeForInputValue)(oldArg.type, newArg.type),
290
+ },
291
+ });
292
+ }
124
293
  exports.directiveArgumentTypeChanged = directiveArgumentTypeChanged;
@@ -1,75 +1,173 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.enumValueDeprecationReasonRemoved = exports.enumValueDeprecationReasonAdded = exports.enumValueDeprecationReasonChanged = exports.enumValueDescriptionChanged = exports.enumValueAdded = exports.enumValueRemoved = void 0;
3
+ exports.enumValueDeprecationReasonRemoved = exports.enumValueDeprecationReasonRemovedFromMeta = exports.enumValueDeprecationReasonAdded = exports.enumValueDeprecationReasonAddedFromMeta = exports.enumValueDeprecationReasonChanged = exports.enumValueDeprecationReasonChangedFromMeta = exports.enumValueDescriptionChanged = exports.enumValueDescriptionChangedFromMeta = exports.enumValueAdded = exports.enumValueAddedFromMeta = exports.enumValueRemoved = exports.enumValueRemovedFromMeta = void 0;
4
4
  const is_deprecated_js_1 = require("../../utils/is-deprecated.js");
5
5
  const change_js_1 = require("./change.js");
6
- function enumValueRemoved(oldEnum, value) {
6
+ function buildEnumValueRemovedMessage(args) {
7
+ return `Enum value '${args.removedEnumValueName}' ${args.isEnumValueDeprecated ? '(deprecated) ' : ''}was removed from enum '${args.enumName}'`;
8
+ }
9
+ const enumValueRemovedCriticalityBreakingReason = `Removing an enum value will cause existing queries that use this enum value to error.`;
10
+ function enumValueRemovedFromMeta(args) {
7
11
  return {
12
+ type: change_js_1.ChangeType.EnumValueRemoved,
8
13
  criticality: {
9
14
  level: change_js_1.CriticalityLevel.Breaking,
10
- reason: `Removing an enum value will cause existing queries that use this enum value to error.`,
15
+ reason: enumValueRemovedCriticalityBreakingReason,
11
16
  },
12
- type: change_js_1.ChangeType.EnumValueRemoved,
13
- message: `Enum value '${value.name}' ${(0, is_deprecated_js_1.isDeprecated)(value) ? '(deprecated) ' : ''}was removed from enum '${oldEnum.name}'`,
14
- path: [oldEnum.name, value.name].join('.'),
17
+ message: buildEnumValueRemovedMessage(args.meta),
18
+ meta: args.meta,
19
+ path: [args.meta.enumName, args.meta.removedEnumValueName].join('.'),
15
20
  };
16
21
  }
22
+ exports.enumValueRemovedFromMeta = enumValueRemovedFromMeta;
23
+ function enumValueRemoved(oldEnum, value) {
24
+ return enumValueRemovedFromMeta({
25
+ type: change_js_1.ChangeType.EnumValueRemoved,
26
+ meta: {
27
+ enumName: oldEnum.name,
28
+ removedEnumValueName: value.name,
29
+ isEnumValueDeprecated: (0, is_deprecated_js_1.isDeprecated)(value),
30
+ },
31
+ });
32
+ }
17
33
  exports.enumValueRemoved = enumValueRemoved;
18
- function enumValueAdded(newEnum, value) {
34
+ function buildEnumValueAddedMessage(args) {
35
+ return `Enum value '${args.meta.addedEnumValueName}' was added to enum '${args.meta.enumName}'`;
36
+ }
37
+ const enumValueAddedCriticalityDangerousReason = `Adding an enum value may break existing clients that were not programming defensively against an added case when querying an enum.`;
38
+ function enumValueAddedFromMeta(args) {
19
39
  return {
40
+ type: change_js_1.ChangeType.EnumValueAdded,
20
41
  criticality: {
21
42
  level: change_js_1.CriticalityLevel.Dangerous,
22
- reason: `Adding an enum value may break existing clients that were not programming defensively against an added case when querying an enum.`,
43
+ reason: enumValueAddedCriticalityDangerousReason,
23
44
  },
24
- type: change_js_1.ChangeType.EnumValueAdded,
25
- message: `Enum value '${value.name}' was added to enum '${newEnum.name}'`,
26
- path: [newEnum.name, value.name].join('.'),
45
+ message: buildEnumValueAddedMessage(args),
46
+ meta: args.meta,
47
+ path: [args.meta.enumName, args.meta.addedEnumValueName].join('.'),
27
48
  };
28
49
  }
50
+ exports.enumValueAddedFromMeta = enumValueAddedFromMeta;
51
+ function enumValueAdded(newEnum, value) {
52
+ return enumValueAddedFromMeta({
53
+ type: change_js_1.ChangeType.EnumValueAdded,
54
+ meta: {
55
+ enumName: newEnum.name,
56
+ addedEnumValueName: value.name,
57
+ },
58
+ });
59
+ }
29
60
  exports.enumValueAdded = enumValueAdded;
30
- function enumValueDescriptionChanged(newEnum, oldValue, newValue) {
61
+ function buildEnumValueDescriptionChangedMessage(args) {
62
+ var _a, _b, _c;
63
+ return args.oldEnumValueDescription === null
64
+ ? `Description '${(_a = args.newEnumValueDescription) !== null && _a !== void 0 ? _a : 'undefined'}' was added to enum value '${args.enumName}.${args.enumValueName}'`
65
+ : `Description for enum value '${args.enumName}.${args.enumValueName}' changed from '${(_b = args.oldEnumValueDescription) !== null && _b !== void 0 ? _b : 'undefined'}' to '${(_c = args.newEnumValueDescription) !== null && _c !== void 0 ? _c : 'undefined'}'`;
66
+ }
67
+ function enumValueDescriptionChangedFromMeta(args) {
31
68
  return {
32
69
  criticality: {
33
70
  level: change_js_1.CriticalityLevel.NonBreaking,
34
71
  },
35
72
  type: change_js_1.ChangeType.EnumValueDescriptionChanged,
36
- message: typeof oldValue.description === 'undefined'
37
- ? `Description '${newValue.description}' was added to enum value '${newEnum.name}.${newValue.name}'`
38
- : `Description for enum value '${newEnum.name}.${newValue.name}' changed from '${oldValue.description}' to '${newValue.description}'`,
39
- path: [newEnum.name, oldValue.name].join('.'),
73
+ message: buildEnumValueDescriptionChangedMessage(args.meta),
74
+ path: [args.meta.enumName, args.meta.enumValueName].join('.'),
75
+ meta: args.meta,
40
76
  };
41
77
  }
78
+ exports.enumValueDescriptionChangedFromMeta = enumValueDescriptionChangedFromMeta;
79
+ function enumValueDescriptionChanged(newEnum, oldValue, newValue) {
80
+ var _a, _b;
81
+ return enumValueDescriptionChangedFromMeta({
82
+ type: change_js_1.ChangeType.EnumValueDescriptionChanged,
83
+ meta: {
84
+ enumName: newEnum.name,
85
+ enumValueName: oldValue.name,
86
+ oldEnumValueDescription: (_a = oldValue.description) !== null && _a !== void 0 ? _a : null,
87
+ newEnumValueDescription: (_b = newValue.description) !== null && _b !== void 0 ? _b : null,
88
+ },
89
+ });
90
+ }
42
91
  exports.enumValueDescriptionChanged = enumValueDescriptionChanged;
43
- function enumValueDeprecationReasonChanged(newEnum, oldValue, newValue) {
92
+ function buildEnumValueDeprecationChangedMessage(args) {
93
+ return `Enum value '${args.enumName}.${args.enumValueName}' deprecation reason changed from '${args.oldEnumValueDeprecationReason}' to '${args.newEnumValueDeprecationReason}'`;
94
+ }
95
+ function enumValueDeprecationReasonChangedFromMeta(args) {
44
96
  return {
45
97
  criticality: {
46
98
  level: change_js_1.CriticalityLevel.NonBreaking,
47
99
  },
48
100
  type: change_js_1.ChangeType.EnumValueDeprecationReasonChanged,
49
- message: `Enum value '${newEnum.name}.${newValue.name}' deprecation reason changed from '${oldValue.deprecationReason}' to '${newValue.deprecationReason}'`,
50
- path: [newEnum.name, oldValue.name].join('.'),
101
+ message: buildEnumValueDeprecationChangedMessage(args.meta),
102
+ path: [args.meta.enumName, args.meta.enumValueName].join('.'),
103
+ meta: args.meta,
51
104
  };
52
105
  }
106
+ exports.enumValueDeprecationReasonChangedFromMeta = enumValueDeprecationReasonChangedFromMeta;
107
+ function enumValueDeprecationReasonChanged(newEnum, oldValue, newValue) {
108
+ var _a, _b;
109
+ return enumValueDeprecationReasonChangedFromMeta({
110
+ type: change_js_1.ChangeType.EnumValueDeprecationReasonChanged,
111
+ meta: {
112
+ enumName: newEnum.name,
113
+ enumValueName: oldValue.name,
114
+ oldEnumValueDeprecationReason: (_a = oldValue.deprecationReason) !== null && _a !== void 0 ? _a : '',
115
+ newEnumValueDeprecationReason: (_b = newValue.deprecationReason) !== null && _b !== void 0 ? _b : '',
116
+ },
117
+ });
118
+ }
53
119
  exports.enumValueDeprecationReasonChanged = enumValueDeprecationReasonChanged;
54
- function enumValueDeprecationReasonAdded(newEnum, oldValue, newValue) {
120
+ function buildEnumValueDeprecationReasonAddedMessage(args) {
121
+ return `Enum value '${args.enumName}.${args.enumValueName}' was deprecated with reason '${args.addedValueDeprecationReason}'`;
122
+ }
123
+ function enumValueDeprecationReasonAddedFromMeta(args) {
55
124
  return {
56
125
  criticality: {
57
126
  level: change_js_1.CriticalityLevel.NonBreaking,
58
127
  },
59
128
  type: change_js_1.ChangeType.EnumValueDeprecationReasonAdded,
60
- message: `Enum value '${newEnum.name}.${newValue.name}' was deprecated with reason '${newValue.deprecationReason}'`,
61
- path: [newEnum.name, oldValue.name].join('.'),
129
+ message: buildEnumValueDeprecationReasonAddedMessage(args.meta),
130
+ path: [args.meta.enumName, args.meta.enumValueName].join('.'),
131
+ meta: args.meta,
62
132
  };
63
133
  }
134
+ exports.enumValueDeprecationReasonAddedFromMeta = enumValueDeprecationReasonAddedFromMeta;
135
+ function enumValueDeprecationReasonAdded(newEnum, oldValue, newValue) {
136
+ var _a;
137
+ return enumValueDeprecationReasonAddedFromMeta({
138
+ type: change_js_1.ChangeType.EnumValueDeprecationReasonAdded,
139
+ meta: {
140
+ enumName: newEnum.name,
141
+ enumValueName: oldValue.name,
142
+ addedValueDeprecationReason: (_a = newValue.deprecationReason) !== null && _a !== void 0 ? _a : '',
143
+ },
144
+ });
145
+ }
64
146
  exports.enumValueDeprecationReasonAdded = enumValueDeprecationReasonAdded;
65
- function enumValueDeprecationReasonRemoved(newEnum, oldValue, newValue) {
147
+ function buildEnumValueDeprecationReasonRemovedMessage(args) {
148
+ return `Deprecation reason was removed from enum value '${args.enumName}.${args.enumValueName}'`;
149
+ }
150
+ function enumValueDeprecationReasonRemovedFromMeta(args) {
66
151
  return {
67
152
  criticality: {
68
153
  level: change_js_1.CriticalityLevel.NonBreaking,
69
154
  },
70
155
  type: change_js_1.ChangeType.EnumValueDeprecationReasonRemoved,
71
- message: `Deprecation reason was removed from enum value '${newEnum.name}.${newValue.name}'`,
72
- path: [newEnum.name, oldValue.name].join('.'),
156
+ message: buildEnumValueDeprecationReasonRemovedMessage(args.meta),
157
+ path: [args.meta.enumName, args.meta.enumValueName].join('.'),
158
+ meta: args.meta,
73
159
  };
74
160
  }
161
+ exports.enumValueDeprecationReasonRemovedFromMeta = enumValueDeprecationReasonRemovedFromMeta;
162
+ function enumValueDeprecationReasonRemoved(newEnum, oldValue, _newValue) {
163
+ var _a;
164
+ return enumValueDeprecationReasonRemovedFromMeta({
165
+ type: change_js_1.ChangeType.EnumValueDeprecationReasonRemoved,
166
+ meta: {
167
+ enumName: newEnum.name,
168
+ enumValueName: oldValue.name,
169
+ removedEnumValueDeprecationReason: (_a = oldValue.deprecationReason) !== null && _a !== void 0 ? _a : '',
170
+ },
171
+ });
172
+ }
75
173
  exports.enumValueDeprecationReasonRemoved = enumValueDeprecationReasonRemoved;