@apollo/federation-internals 2.4.2 → 2.4.4

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 (125) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/package.json +1 -1
  3. package/src/__tests__/operations.test.ts +175 -10
  4. package/src/operations.ts +184 -36
  5. package/dist/Subgraph.d.ts +0 -1
  6. package/dist/Subgraph.d.ts.map +0 -1
  7. package/dist/Subgraph.js +0 -2
  8. package/dist/Subgraph.js.map +0 -1
  9. package/dist/argumentCompositionStrategies.d.ts +0 -34
  10. package/dist/argumentCompositionStrategies.d.ts.map +0 -1
  11. package/dist/argumentCompositionStrategies.js +0 -35
  12. package/dist/argumentCompositionStrategies.js.map +0 -1
  13. package/dist/buildSchema.d.ts +0 -10
  14. package/dist/buildSchema.d.ts.map +0 -1
  15. package/dist/buildSchema.js +0 -362
  16. package/dist/buildSchema.js.map +0 -1
  17. package/dist/coreSpec.d.ts +0 -127
  18. package/dist/coreSpec.d.ts.map +0 -1
  19. package/dist/coreSpec.js +0 -590
  20. package/dist/coreSpec.js.map +0 -1
  21. package/dist/debug.d.ts +0 -15
  22. package/dist/debug.d.ts.map +0 -1
  23. package/dist/debug.js +0 -122
  24. package/dist/debug.js.map +0 -1
  25. package/dist/definitions.d.ts +0 -663
  26. package/dist/definitions.d.ts.map +0 -1
  27. package/dist/definitions.js +0 -2841
  28. package/dist/definitions.js.map +0 -1
  29. package/dist/directiveAndTypeSpecification.d.ts +0 -67
  30. package/dist/directiveAndTypeSpecification.d.ts.map +0 -1
  31. package/dist/directiveAndTypeSpecification.js +0 -271
  32. package/dist/directiveAndTypeSpecification.js.map +0 -1
  33. package/dist/error.d.ts +0 -128
  34. package/dist/error.d.ts.map +0 -1
  35. package/dist/error.js +0 -315
  36. package/dist/error.js.map +0 -1
  37. package/dist/extractSubgraphsFromSupergraph.d.ts +0 -8
  38. package/dist/extractSubgraphsFromSupergraph.d.ts.map +0 -1
  39. package/dist/extractSubgraphsFromSupergraph.js +0 -576
  40. package/dist/extractSubgraphsFromSupergraph.js.map +0 -1
  41. package/dist/federation.d.ts +0 -175
  42. package/dist/federation.d.ts.map +0 -1
  43. package/dist/federation.js +0 -1414
  44. package/dist/federation.js.map +0 -1
  45. package/dist/federationSpec.d.ts +0 -25
  46. package/dist/federationSpec.d.ts.map +0 -1
  47. package/dist/federationSpec.js +0 -125
  48. package/dist/federationSpec.js.map +0 -1
  49. package/dist/genErrorCodeDoc.d.ts +0 -2
  50. package/dist/genErrorCodeDoc.d.ts.map +0 -1
  51. package/dist/genErrorCodeDoc.js +0 -61
  52. package/dist/genErrorCodeDoc.js.map +0 -1
  53. package/dist/graphQLJSSchemaToAST.d.ts +0 -8
  54. package/dist/graphQLJSSchemaToAST.d.ts.map +0 -1
  55. package/dist/graphQLJSSchemaToAST.js +0 -96
  56. package/dist/graphQLJSSchemaToAST.js.map +0 -1
  57. package/dist/inaccessibleSpec.d.ts +0 -18
  58. package/dist/inaccessibleSpec.d.ts.map +0 -1
  59. package/dist/inaccessibleSpec.js +0 -655
  60. package/dist/inaccessibleSpec.js.map +0 -1
  61. package/dist/index.d.ts +0 -24
  62. package/dist/index.d.ts.map +0 -1
  63. package/dist/index.js +0 -42
  64. package/dist/index.js.map +0 -1
  65. package/dist/introspection.d.ts +0 -6
  66. package/dist/introspection.d.ts.map +0 -1
  67. package/dist/introspection.js +0 -96
  68. package/dist/introspection.js.map +0 -1
  69. package/dist/joinSpec.d.ts +0 -51
  70. package/dist/joinSpec.d.ts.map +0 -1
  71. package/dist/joinSpec.js +0 -160
  72. package/dist/joinSpec.js.map +0 -1
  73. package/dist/knownCoreFeatures.d.ts +0 -5
  74. package/dist/knownCoreFeatures.d.ts.map +0 -1
  75. package/dist/knownCoreFeatures.js +0 -20
  76. package/dist/knownCoreFeatures.js.map +0 -1
  77. package/dist/operations.d.ts +0 -403
  78. package/dist/operations.d.ts.map +0 -1
  79. package/dist/operations.js +0 -1983
  80. package/dist/operations.js.map +0 -1
  81. package/dist/precompute.d.ts +0 -3
  82. package/dist/precompute.d.ts.map +0 -1
  83. package/dist/precompute.js +0 -54
  84. package/dist/precompute.js.map +0 -1
  85. package/dist/print.d.ts +0 -28
  86. package/dist/print.d.ts.map +0 -1
  87. package/dist/print.js +0 -299
  88. package/dist/print.js.map +0 -1
  89. package/dist/schemaUpgrader.d.ts +0 -121
  90. package/dist/schemaUpgrader.d.ts.map +0 -1
  91. package/dist/schemaUpgrader.js +0 -570
  92. package/dist/schemaUpgrader.js.map +0 -1
  93. package/dist/suggestions.d.ts +0 -3
  94. package/dist/suggestions.d.ts.map +0 -1
  95. package/dist/suggestions.js +0 -44
  96. package/dist/suggestions.js.map +0 -1
  97. package/dist/supergraphs.d.ts +0 -10
  98. package/dist/supergraphs.d.ts.map +0 -1
  99. package/dist/supergraphs.js +0 -76
  100. package/dist/supergraphs.js.map +0 -1
  101. package/dist/tagSpec.d.ts +0 -19
  102. package/dist/tagSpec.d.ts.map +0 -1
  103. package/dist/tagSpec.js +0 -66
  104. package/dist/tagSpec.js.map +0 -1
  105. package/dist/types.d.ts +0 -9
  106. package/dist/types.d.ts.map +0 -1
  107. package/dist/types.js +0 -64
  108. package/dist/types.js.map +0 -1
  109. package/dist/utils.d.ts +0 -64
  110. package/dist/utils.d.ts.map +0 -1
  111. package/dist/utils.js +0 -326
  112. package/dist/utils.js.map +0 -1
  113. package/dist/validate.d.ts +0 -4
  114. package/dist/validate.d.ts.map +0 -1
  115. package/dist/validate.js +0 -239
  116. package/dist/validate.js.map +0 -1
  117. package/dist/validation/KnownTypeNamesInFederationRule.d.ts +0 -4
  118. package/dist/validation/KnownTypeNamesInFederationRule.d.ts.map +0 -1
  119. package/dist/validation/KnownTypeNamesInFederationRule.js +0 -41
  120. package/dist/validation/KnownTypeNamesInFederationRule.js.map +0 -1
  121. package/dist/values.d.ts +0 -23
  122. package/dist/values.d.ts.map +0 -1
  123. package/dist/values.js +0 -580
  124. package/dist/values.js.map +0 -1
  125. package/tsconfig.tsbuildinfo +0 -1
@@ -1,570 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.upgradeSubgraphsIfNecessary = exports.RemovedTagOnExternal = exports.FieldsArgumentCoercionToString = exports.ProvidesOnNonCompositeRemoval = exports.ProvidesOrRequiresOnInterfaceFieldRemoval = exports.KeyOnInterfaceRemoval = exports.ShareableTypeAddition = exports.ShareableFieldAddition = exports.InactiveProvidesOrRequiresFieldsRemoval = exports.InactiveProvidesOrRequiresRemoval = exports.TypeWithOnlyUnusedExternalRemoval = exports.UnusedExternalRemoval = exports.ExternalOnObjectTypeRemoval = exports.ExternalOnInterfaceRemoval = exports.TypeExtensionRemoval = exports.ExternalOnTypeExtensionRemoval = void 0;
4
- const graphql_1 = require("graphql");
5
- const error_1 = require("./error");
6
- const definitions_1 = require("./definitions");
7
- const federation_1 = require("./federation");
8
- const utils_1 = require("./utils");
9
- const values_1 = require("./values");
10
- const federationSpec_1 = require("./federationSpec");
11
- class ExternalOnTypeExtensionRemoval {
12
- constructor(field) {
13
- this.field = field;
14
- this.id = 'EXTERNAL_ON_TYPE_EXTENSION_REMOVAL';
15
- }
16
- toString() {
17
- return `Removed @external from field "${this.field}" as it is a key of an extension type`;
18
- }
19
- }
20
- exports.ExternalOnTypeExtensionRemoval = ExternalOnTypeExtensionRemoval;
21
- class TypeExtensionRemoval {
22
- constructor(type) {
23
- this.type = type;
24
- this.id = 'TYPE_EXTENSION_REMOVAL';
25
- }
26
- toString() {
27
- return `Switched type "${this.type}" from an extension to a definition`;
28
- }
29
- }
30
- exports.TypeExtensionRemoval = TypeExtensionRemoval;
31
- class ExternalOnInterfaceRemoval {
32
- constructor(field) {
33
- this.field = field;
34
- this.id = 'EXTERNAL_ON_INTERFACE_REMOVAL';
35
- }
36
- toString() {
37
- return `Removed @external directive on interface type field "${this.field}": @external is nonsensical on interface fields`;
38
- }
39
- }
40
- exports.ExternalOnInterfaceRemoval = ExternalOnInterfaceRemoval;
41
- class ExternalOnObjectTypeRemoval {
42
- constructor(type) {
43
- this.type = type;
44
- this.id = 'EXTERNAL_ON_OBJECT_TYPE_REMOVAL';
45
- }
46
- toString() {
47
- return `Removed @external directive on object type "${this.type}": @external on types was not rejected but was inactive in fed1`;
48
- }
49
- }
50
- exports.ExternalOnObjectTypeRemoval = ExternalOnObjectTypeRemoval;
51
- class UnusedExternalRemoval {
52
- constructor(field) {
53
- this.field = field;
54
- this.id = 'UNUSED_EXTERNAL_REMOVAL';
55
- }
56
- toString() {
57
- return `Removed @external field "${this.field}" as it was not used in any @key, @provides or @requires`;
58
- }
59
- }
60
- exports.UnusedExternalRemoval = UnusedExternalRemoval;
61
- class TypeWithOnlyUnusedExternalRemoval {
62
- constructor(type) {
63
- this.type = type;
64
- this.id = 'TYPE_WITH_ONLY_UNUSED_EXTERNAL_REMOVAL';
65
- }
66
- toString() {
67
- return `Removed type ${this.type} that is not referenced in the schema and only declares unused @external fields`;
68
- }
69
- }
70
- exports.TypeWithOnlyUnusedExternalRemoval = TypeWithOnlyUnusedExternalRemoval;
71
- class InactiveProvidesOrRequiresRemoval {
72
- constructor(parent, removed) {
73
- this.parent = parent;
74
- this.removed = removed;
75
- this.id = 'INACTIVE_PROVIDES_OR_REQUIRES_REMOVAL';
76
- }
77
- toString() {
78
- return `Removed directive ${this.removed} on "${this.parent}": none of the fields were truly @external`;
79
- }
80
- }
81
- exports.InactiveProvidesOrRequiresRemoval = InactiveProvidesOrRequiresRemoval;
82
- class InactiveProvidesOrRequiresFieldsRemoval {
83
- constructor(parent, original, updated) {
84
- this.parent = parent;
85
- this.original = original;
86
- this.updated = updated;
87
- this.id = 'INACTIVE_PROVIDES_OR_REQUIRES_FIELDS_REMOVAL';
88
- }
89
- toString() {
90
- return `Updated directive ${this.original} on "${this.parent}" to ${this.updated}: removed fields that were not truly @external`;
91
- }
92
- }
93
- exports.InactiveProvidesOrRequiresFieldsRemoval = InactiveProvidesOrRequiresFieldsRemoval;
94
- class ShareableFieldAddition {
95
- constructor(field, declaringSubgraphs) {
96
- this.field = field;
97
- this.declaringSubgraphs = declaringSubgraphs;
98
- this.id = 'SHAREABLE_FIELD_ADDITION';
99
- }
100
- toString() {
101
- return `Added @shareable to field "${this.field}": it is also resolved by ${(0, federation_1.printSubgraphNames)(this.declaringSubgraphs)}`;
102
- }
103
- }
104
- exports.ShareableFieldAddition = ShareableFieldAddition;
105
- class ShareableTypeAddition {
106
- constructor(type, declaringSubgraphs) {
107
- this.type = type;
108
- this.declaringSubgraphs = declaringSubgraphs;
109
- this.id = 'SHAREABLE_TYPE_ADDITION';
110
- }
111
- toString() {
112
- return `Added @shareable to type "${this.type}": it is a "value type" and is also declared in ${(0, federation_1.printSubgraphNames)(this.declaringSubgraphs)}`;
113
- }
114
- }
115
- exports.ShareableTypeAddition = ShareableTypeAddition;
116
- class KeyOnInterfaceRemoval {
117
- constructor(type) {
118
- this.type = type;
119
- this.id = 'KEY_ON_INTERFACE_REMOVAL';
120
- }
121
- toString() {
122
- return `Removed @key on interface "${this.type}": while allowed by federation 0.x, @key on interfaces were completely ignored/had no effect`;
123
- }
124
- }
125
- exports.KeyOnInterfaceRemoval = KeyOnInterfaceRemoval;
126
- class ProvidesOrRequiresOnInterfaceFieldRemoval {
127
- constructor(field, directive) {
128
- this.field = field;
129
- this.directive = directive;
130
- this.id = 'PROVIDES_OR_REQUIRES_ON_INTERFACE_FIELD_REMOVAL';
131
- }
132
- toString() {
133
- return `Removed @${this.directive} on interface field "${this.field}": while allowed by federation 0.x, @${this.directive} on interface fields were completely ignored/had no effect`;
134
- }
135
- }
136
- exports.ProvidesOrRequiresOnInterfaceFieldRemoval = ProvidesOrRequiresOnInterfaceFieldRemoval;
137
- class ProvidesOnNonCompositeRemoval {
138
- constructor(field, type) {
139
- this.field = field;
140
- this.type = type;
141
- this.id = 'PROVIDES_ON_NON_COMPOSITE_REMOVAL';
142
- }
143
- toString() {
144
- return `Removed @provides directive on field "${this.field}" as it is of non-composite type "${this.type}": while not rejected by federation 0.x, such @provide is nonsensical and was ignored`;
145
- }
146
- }
147
- exports.ProvidesOnNonCompositeRemoval = ProvidesOnNonCompositeRemoval;
148
- class FieldsArgumentCoercionToString {
149
- constructor(element, directive, before, after) {
150
- this.element = element;
151
- this.directive = directive;
152
- this.before = before;
153
- this.after = after;
154
- this.id = 'FIELDS_ARGUMENT_COERCION_TO_STRING';
155
- }
156
- toString() {
157
- return `Coerced "fields" argument for directive @${this.directive} for "${this.element}" into a string: coerced from ${this.before} to ${this.after}`;
158
- }
159
- }
160
- exports.FieldsArgumentCoercionToString = FieldsArgumentCoercionToString;
161
- class RemovedTagOnExternal {
162
- constructor(application, element) {
163
- this.application = application;
164
- this.element = element;
165
- this.id = 'REMOVED_TAG_ON_EXTERNAL';
166
- }
167
- toString() {
168
- return `Removed ${this.application} application on @external "${this.element}" as the @tag application is on another definition`;
169
- }
170
- }
171
- exports.RemovedTagOnExternal = RemovedTagOnExternal;
172
- function upgradeSubgraphsIfNecessary(inputs) {
173
- const changes = new Map();
174
- if (inputs.values().every((s) => s.isFed2Subgraph())) {
175
- return { subgraphs: inputs, changes };
176
- }
177
- const subgraphs = new federation_1.Subgraphs();
178
- let errors = [];
179
- const subgraphsUsingInterfaceObject = [];
180
- for (const subgraph of inputs.values()) {
181
- if (subgraph.isFed2Subgraph()) {
182
- subgraphs.add(subgraph);
183
- if (subgraph.metadata().interfaceObjectDirective().applications().length > 0) {
184
- subgraphsUsingInterfaceObject.push(subgraph.name);
185
- }
186
- }
187
- else {
188
- const otherSubgraphs = inputs.values().filter((s) => s.name !== subgraph.name);
189
- const res = new SchemaUpgrader(subgraph, otherSubgraphs).upgrade();
190
- if (res.errors) {
191
- errors = errors.concat(res.errors);
192
- }
193
- else {
194
- subgraphs.add(res.upgraded);
195
- changes.set(subgraph.name, res.changes);
196
- }
197
- }
198
- }
199
- if (errors.length === 0 && subgraphsUsingInterfaceObject.length > 0) {
200
- const fed1Subgraphs = inputs.values().filter((s) => !s.isFed2Subgraph()).map((s) => s.name);
201
- errors = [error_1.ERRORS.INTERFACE_OBJECT_USAGE_ERROR.err('The @interfaceObject directive can only be used if all subgraphs have federation 2 subgraph schema (schema with a `@link` to "https://specs.apollo.dev/federation" version 2.0 or newer): '
202
- + `@interfaceObject is used in ${(0, federation_1.printSubgraphNames)(subgraphsUsingInterfaceObject)} but ${(0, federation_1.printSubgraphNames)(fed1Subgraphs)} ${fed1Subgraphs.length > 1 ? 'are not' : 'is not a'} federation 2 subgraph schema.`)];
203
- }
204
- return errors.length === 0 ? { subgraphs, changes } : { errors };
205
- }
206
- exports.upgradeSubgraphsIfNecessary = upgradeSubgraphsIfNecessary;
207
- function isFederationTypeExtension(type) {
208
- const metadata = (0, federation_1.federationMetadata)(type.schema());
209
- (0, utils_1.assert)(metadata, 'Should be a subgraph schema');
210
- const hasExtend = type.hasAppliedDirective(metadata.extendsDirective());
211
- return (type.hasExtensionElements() || hasExtend)
212
- && ((0, definitions_1.isObjectType)(type) || (0, definitions_1.isInterfaceType)(type))
213
- && (hasExtend || !type.hasNonExtensionElements());
214
- }
215
- function isRootTypeExtension(type) {
216
- const metadata = (0, federation_1.federationMetadata)(type.schema());
217
- (0, utils_1.assert)(metadata, 'Should be a subgraph schema');
218
- return (0, definitions_1.isObjectType)(type)
219
- && type.isRootType()
220
- && (type.hasAppliedDirective(metadata.extendsDirective()) || (type.hasExtensionElements() && !type.hasNonExtensionElements()));
221
- }
222
- function resolvesField(subgraph, field) {
223
- const metadata = subgraph.metadata();
224
- const t = subgraph.schema.type(field.parent.name);
225
- if (!t || !(0, definitions_1.isObjectType)(t)) {
226
- return false;
227
- }
228
- const f = t.field(field.name);
229
- return !!f && (!metadata.isFieldExternal(f) || metadata.isFieldPartiallyExternal(f));
230
- }
231
- function getField(schema, typeName, fieldName) {
232
- const type = schema.type(typeName);
233
- return type && (0, definitions_1.isCompositeType)(type) ? type.field(fieldName) : undefined;
234
- }
235
- class SchemaUpgrader {
236
- constructor(originalSubgraph, otherSubgraphs) {
237
- this.originalSubgraph = originalSubgraph;
238
- this.otherSubgraphs = otherSubgraphs;
239
- this.changes = new utils_1.MultiMap();
240
- this.errors = [];
241
- this.schema = originalSubgraph.schema.clone();
242
- this.renameFederationTypes();
243
- this.subgraph = new federation_1.Subgraph(originalSubgraph.name, originalSubgraph.url, this.schema);
244
- try {
245
- (0, federation_1.setSchemaAsFed2Subgraph)(this.schema);
246
- }
247
- catch (e) {
248
- const causes = (0, error_1.errorCauses)(e);
249
- if (causes) {
250
- causes.forEach((c) => this.addError(c));
251
- }
252
- else {
253
- throw e;
254
- }
255
- }
256
- this.metadata = this.subgraph.metadata();
257
- }
258
- addError(e) {
259
- this.errors.push((0, federation_1.addSubgraphToError)(e, this.subgraph.name, error_1.ERRORS.INVALID_GRAPHQL));
260
- }
261
- renameFederationTypes() {
262
- for (const typeSpec of federationSpec_1.FEDERATION1_TYPES) {
263
- const typeNameInOriginal = this.originalSubgraph.metadata().federationTypeNameInSchema(typeSpec.name);
264
- const type = this.schema.type(typeNameInOriginal);
265
- if (type) {
266
- type.rename(`federation__${typeSpec.name}`);
267
- }
268
- }
269
- }
270
- external(elt) {
271
- const applications = elt.appliedDirectivesOf(this.metadata.externalDirective());
272
- return applications.length === 0 ? undefined : applications[0];
273
- }
274
- addChange(change) {
275
- this.changes.add(change.id, change);
276
- }
277
- checkForExtensionWithNoBase(type) {
278
- var _a;
279
- if (isRootTypeExtension(type) || !isFederationTypeExtension(type)) {
280
- return;
281
- }
282
- const extensionAST = (_a = (0, utils_1.firstOf)(type.extensions().values())) === null || _a === void 0 ? void 0 : _a.sourceAST;
283
- for (const subgraph of this.otherSubgraphs) {
284
- const otherType = subgraph.schema.type(type.name);
285
- if (otherType && otherType.hasNonExtensionElements()) {
286
- return;
287
- }
288
- }
289
- this.addError(error_1.ERRORS.EXTENSION_WITH_NO_BASE.err(`Type "${type}" is an extension type, but there is no type definition for "${type}" in any subgraph.`, { nodes: extensionAST }));
290
- }
291
- preUpgradeValidations() {
292
- for (const type of this.schema.types()) {
293
- this.checkForExtensionWithNoBase(type);
294
- }
295
- }
296
- upgrade() {
297
- this.preUpgradeValidations();
298
- this.fixFederationDirectivesArguments();
299
- this.removeExternalOnInterface();
300
- this.removeExternalOnObjectTypes();
301
- this.removeExternalOnTypeExtensions();
302
- this.fixInactiveProvidesAndRequires();
303
- this.removeTypeExtensions();
304
- this.removeDirectivesOnInterface();
305
- this.removeProvidesOnNonComposite();
306
- this.removeUnusedExternals();
307
- this.addShareable();
308
- this.removeTagOnExternal();
309
- if (this.errors.length > 0) {
310
- return { errors: this.errors };
311
- }
312
- try {
313
- this.subgraph.validate();
314
- return {
315
- upgraded: this.subgraph,
316
- changes: this.changes,
317
- };
318
- }
319
- catch (e) {
320
- const errors = (0, error_1.errorCauses)(e);
321
- if (!errors) {
322
- throw e;
323
- }
324
- return { errors };
325
- }
326
- }
327
- fixFederationDirectivesArguments() {
328
- var _a;
329
- for (const directive of [this.metadata.keyDirective(), this.metadata.requiresDirective(), this.metadata.providesDirective()]) {
330
- for (const application of Array.from(directive.applications())) {
331
- const fields = application.arguments().fields;
332
- if (typeof fields !== 'string') {
333
- if (Array.isArray(fields) && fields.every((f) => typeof f === 'string')) {
334
- this.replaceFederationDirectiveApplication(application, application.toString(), fields.join(' '), directive.sourceAST);
335
- }
336
- continue;
337
- }
338
- const nodes = application.sourceAST;
339
- if (nodes && nodes.kind === 'Directive') {
340
- for (const argNode of (_a = nodes.arguments) !== null && _a !== void 0 ? _a : []) {
341
- if (argNode.name.value === 'fields') {
342
- if (argNode.value.kind === graphql_1.Kind.ENUM) {
343
- this.replaceFederationDirectiveApplication(application, (0, graphql_1.print)(nodes), fields, {
344
- ...nodes,
345
- arguments: [{
346
- ...argNode,
347
- value: {
348
- kind: graphql_1.Kind.STRING,
349
- value: fields
350
- }
351
- }]
352
- });
353
- break;
354
- }
355
- }
356
- }
357
- }
358
- }
359
- }
360
- }
361
- removeExternalOnInterface() {
362
- for (const itf of this.schema.interfaceTypes()) {
363
- for (const field of itf.fields()) {
364
- const external = this.external(field);
365
- if (external) {
366
- this.addChange(new ExternalOnInterfaceRemoval(field.coordinate));
367
- external.remove();
368
- }
369
- }
370
- }
371
- }
372
- removeExternalOnObjectTypes() {
373
- for (const type of this.schema.objectTypes()) {
374
- const external = type.appliedDirectivesOf(this.metadata.externalDirective())[0];
375
- if (external) {
376
- this.addChange(new ExternalOnObjectTypeRemoval(type.coordinate));
377
- external.remove();
378
- }
379
- }
380
- }
381
- replaceFederationDirectiveApplication(application, before, fields, updatedSourceAST) {
382
- const directive = application.definition;
383
- const parent = application.parent;
384
- application.remove();
385
- const newDirective = parent.applyDirective(directive, { fields });
386
- newDirective.sourceAST = updatedSourceAST;
387
- this.addChange(new FieldsArgumentCoercionToString(parent.coordinate, directive.name, before, newDirective.toString()));
388
- }
389
- fixInactiveProvidesAndRequires() {
390
- (0, federation_1.removeInactiveProvidesAndRequires)(this.schema, (field, original, updated) => {
391
- if (updated) {
392
- this.addChange(new InactiveProvidesOrRequiresFieldsRemoval(field.coordinate, original.toString(), updated.toString()));
393
- }
394
- else {
395
- this.addChange(new InactiveProvidesOrRequiresRemoval(field.coordinate, original.toString()));
396
- }
397
- });
398
- }
399
- removeExternalOnTypeExtensions() {
400
- for (const type of this.schema.types()) {
401
- if (!(0, definitions_1.isCompositeType)(type)) {
402
- continue;
403
- }
404
- if (!isFederationTypeExtension(type) && !isRootTypeExtension(type)) {
405
- continue;
406
- }
407
- const keyApplications = type.appliedDirectivesOf(this.metadata.keyDirective());
408
- if (keyApplications.length > 0) {
409
- for (const keyApplication of type.appliedDirectivesOf(this.metadata.keyDirective())) {
410
- (0, federation_1.collectTargetFields)({
411
- parentType: type,
412
- directive: keyApplication,
413
- includeInterfaceFieldsImplementations: false,
414
- validate: false,
415
- }).forEach((field) => {
416
- if (field.parent !== type) {
417
- return;
418
- }
419
- const external = this.external(field);
420
- if (external) {
421
- this.addChange(new ExternalOnTypeExtensionRemoval(field.coordinate));
422
- external.remove();
423
- }
424
- });
425
- }
426
- }
427
- else {
428
- for (const other of this.otherSubgraphs) {
429
- const typeInOther = other.schema.type(type.name);
430
- if (!typeInOther) {
431
- continue;
432
- }
433
- (0, utils_1.assert)((0, definitions_1.isCompositeType)(typeInOther), () => `Type ${type} is of kind ${type.kind} in ${this.subgraph.name} but ${typeInOther.kind} in ${other.name}`);
434
- const keysInOther = typeInOther.appliedDirectivesOf(other.metadata().keyDirective());
435
- if (keysInOther.length === 0) {
436
- continue;
437
- }
438
- (0, federation_1.collectTargetFields)({
439
- parentType: typeInOther,
440
- directive: keysInOther[0],
441
- includeInterfaceFieldsImplementations: false,
442
- validate: false,
443
- }).forEach((field) => {
444
- if (field.parent !== typeInOther) {
445
- return;
446
- }
447
- const ownField = type.field(field.name);
448
- if (!ownField) {
449
- return;
450
- }
451
- const external = this.external(ownField);
452
- if (external) {
453
- this.addChange(new ExternalOnTypeExtensionRemoval(ownField.coordinate));
454
- external.remove();
455
- }
456
- });
457
- }
458
- }
459
- }
460
- }
461
- removeTypeExtensions() {
462
- for (const type of this.schema.types()) {
463
- if (!isFederationTypeExtension(type) && !isRootTypeExtension(type)) {
464
- continue;
465
- }
466
- this.addChange(new TypeExtensionRemoval(type.coordinate));
467
- type.removeExtensions();
468
- }
469
- }
470
- removeUnusedExternals() {
471
- for (const type of this.schema.types()) {
472
- if (!(0, definitions_1.isObjectType)(type) && !(0, definitions_1.isInterfaceType)(type)) {
473
- continue;
474
- }
475
- for (const field of type.fields()) {
476
- if (this.metadata.isFieldExternal(field) && !this.metadata.isFieldUsed(field)) {
477
- this.addChange(new UnusedExternalRemoval(field.coordinate));
478
- field.remove();
479
- }
480
- }
481
- if (!type.hasFields()) {
482
- if (type.isReferenced()) {
483
- this.addError(error_1.ERRORS.TYPE_WITH_ONLY_UNUSED_EXTERNAL.err(`Type ${type} contains only external fields and all those fields are all unused (they do not appear in any @key, @provides or @requires).`, { nodes: type.sourceAST }));
484
- }
485
- else {
486
- this.addChange(new TypeWithOnlyUnusedExternalRemoval(type.name));
487
- type.remove();
488
- }
489
- }
490
- }
491
- }
492
- removeDirectivesOnInterface() {
493
- for (const type of this.schema.interfaceTypes()) {
494
- for (const application of type.appliedDirectivesOf(this.metadata.keyDirective())) {
495
- this.addChange(new KeyOnInterfaceRemoval(type.name));
496
- application.remove();
497
- }
498
- for (const field of type.fields()) {
499
- for (const directive of [this.metadata.providesDirective(), this.metadata.requiresDirective()]) {
500
- for (const application of field.appliedDirectivesOf(directive)) {
501
- this.addChange(new ProvidesOrRequiresOnInterfaceFieldRemoval(field.coordinate, directive.name));
502
- application.remove();
503
- }
504
- }
505
- }
506
- }
507
- }
508
- removeProvidesOnNonComposite() {
509
- for (const type of this.schema.objectTypes()) {
510
- for (const field of type.fields()) {
511
- if ((0, definitions_1.isCompositeType)((0, definitions_1.baseType)(field.type))) {
512
- continue;
513
- }
514
- for (const application of field.appliedDirectivesOf(this.metadata.providesDirective())) {
515
- this.addChange(new ProvidesOnNonCompositeRemoval(field.coordinate, field.type.toString()));
516
- application.remove();
517
- }
518
- }
519
- }
520
- }
521
- addShareable() {
522
- const originalMetadata = this.originalSubgraph.metadata();
523
- const keyDirective = this.metadata.keyDirective();
524
- const shareableDirective = this.metadata.shareableDirective();
525
- for (const type of this.schema.objectTypes()) {
526
- if (type.hasAppliedDirective(keyDirective) || type.isRootType()) {
527
- for (const field of type.fields()) {
528
- if (originalMetadata.isFieldShareable(field)) {
529
- continue;
530
- }
531
- const otherResolvingSubgraphs = this.otherSubgraphs.filter((s) => resolvesField(s, field));
532
- if (otherResolvingSubgraphs.length > 0 && !field.hasAppliedDirective(shareableDirective)) {
533
- field.applyDirective(shareableDirective);
534
- this.addChange(new ShareableFieldAddition(field.coordinate, otherResolvingSubgraphs.map((s) => s.name)));
535
- }
536
- }
537
- }
538
- else {
539
- const otherDeclaringSubgraphs = this.otherSubgraphs.filter((s) => s.schema.type(type.name));
540
- if (otherDeclaringSubgraphs.length > 0 && !type.hasAppliedDirective(shareableDirective)) {
541
- type.applyDirective(shareableDirective);
542
- this.addChange(new ShareableTypeAddition(type.coordinate, otherDeclaringSubgraphs.map((s) => s.name)));
543
- }
544
- }
545
- }
546
- }
547
- removeTagOnExternal() {
548
- const tagDirective = this.schema.directive('tag');
549
- if (!tagDirective) {
550
- return;
551
- }
552
- for (const application of Array.from(tagDirective.applications())) {
553
- const element = application.parent;
554
- if (!(element instanceof definitions_1.FieldDefinition)) {
555
- continue;
556
- }
557
- if (this.external(element)) {
558
- const tagIsUsedInOtherDefinition = this.otherSubgraphs
559
- .map((s) => getField(s.schema, element.parent.name, element.name))
560
- .filter((f) => !(f && f.hasAppliedDirective('external')))
561
- .some((f) => f && f.appliedDirectivesOf('tag').some((d) => (0, values_1.valueEquals)(application.arguments(), d.arguments())));
562
- if (tagIsUsedInOtherDefinition) {
563
- this.addChange(new RemovedTagOnExternal(application.toString(), element.coordinate));
564
- application.remove();
565
- }
566
- }
567
- }
568
- }
569
- }
570
- //# sourceMappingURL=schemaUpgrader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schemaUpgrader.js","sourceRoot":"","sources":["../src/schemaUpgrader.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export declare function suggestionList(input: string, options: readonly string[]): string[];
2
- export declare function didYouMean(suggestions: readonly string[]): string;
3
- //# sourceMappingURL=suggestions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"suggestions.d.ts","sourceRoot":"","sources":["../src/suggestions.ts"],"names":[],"mappings":"AAOA,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAoBlF;AAOD,wBAAgB,UAAU,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAgBjE"}
@@ -1,44 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.didYouMean = exports.suggestionList = void 0;
7
- const js_levenshtein_1 = __importDefault(require("js-levenshtein"));
8
- const utils_1 = require("./utils");
9
- function suggestionList(input, options) {
10
- const optionsByDistance = new Map();
11
- const threshold = Math.floor(input.length * 0.4) + 1;
12
- const inputLowerCase = input.toLowerCase();
13
- for (const option of options) {
14
- const distance = inputLowerCase === option.toLowerCase()
15
- ? 1
16
- : (0, js_levenshtein_1.default)(input, option);
17
- if (distance <= threshold) {
18
- optionsByDistance.set(option, distance);
19
- }
20
- }
21
- return (0, utils_1.mapKeys)(optionsByDistance).sort((a, b) => {
22
- const distanceDiff = optionsByDistance.get(a) - optionsByDistance.get(b);
23
- return distanceDiff !== 0 ? distanceDiff : a.localeCompare(b);
24
- });
25
- }
26
- exports.suggestionList = suggestionList;
27
- const MAX_SUGGESTIONS = 5;
28
- function didYouMean(suggestions) {
29
- const message = ' Did you mean ';
30
- const quotedSuggestions = suggestions.map((x) => `"${x}"`);
31
- switch (suggestions.length) {
32
- case 0:
33
- return '';
34
- case 1:
35
- return message + quotedSuggestions[0] + '?';
36
- case 2:
37
- return message + quotedSuggestions[0] + ' or ' + quotedSuggestions[1] + '?';
38
- }
39
- const selected = quotedSuggestions.slice(0, MAX_SUGGESTIONS);
40
- const lastItem = selected.pop();
41
- return message + selected.join(', ') + ', or ' + lastItem + '?';
42
- }
43
- exports.didYouMean = didYouMean;
44
- //# sourceMappingURL=suggestions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"suggestions.js","sourceRoot":"","sources":["../src/suggestions.ts"],"names":[],"mappings":";;;;;;AAAA,oEAAyC;AACzC,mCAAkC;AAMlC,SAAgB,cAAc,CAAC,KAAa,EAAE,OAA0B;IACtE,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEpD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAC3C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAG5B,MAAM,QAAQ,GAAG,cAAc,KAAK,MAAM,CAAC,WAAW,EAAE;YACtD,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,IAAA,wBAAW,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC/B,IAAI,QAAQ,IAAI,SAAS,EAAE;YACzB,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;SACzC;KACF;IAED,OAAO,IAAA,eAAO,EAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC9C,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAE,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC;QAC3E,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC;AApBD,wCAoBC;AAED,MAAM,eAAe,GAAG,CAAC,CAAC;AAK1B,SAAgB,UAAU,CAAC,WAA8B;IACvD,MAAM,OAAO,GAAG,gBAAgB,CAAC;IAEjC,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3D,QAAQ,WAAW,CAAC,MAAM,EAAE;QAC1B,KAAK,CAAC;YACJ,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC;YACJ,OAAO,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAC9C,KAAK,CAAC;YACJ,OAAO,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;KAC/E;IAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;IAChC,OAAO,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,QAAQ,GAAG,GAAG,CAAC;AAClE,CAAC;AAhBD,gCAgBC"}