@apollo/federation-internals 2.0.0-alpha.2 → 2.0.0-alpha.6

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 (66) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/buildSchema.d.ts.map +1 -1
  3. package/dist/buildSchema.js +3 -3
  4. package/dist/buildSchema.js.map +1 -1
  5. package/dist/debug.d.ts.map +1 -1
  6. package/dist/debug.js +2 -18
  7. package/dist/debug.js.map +1 -1
  8. package/dist/definitions.d.ts +18 -7
  9. package/dist/definitions.d.ts.map +1 -1
  10. package/dist/definitions.js +80 -26
  11. package/dist/definitions.js.map +1 -1
  12. package/dist/error.d.ts +88 -3
  13. package/dist/error.d.ts.map +1 -1
  14. package/dist/error.js +145 -5
  15. package/dist/error.js.map +1 -1
  16. package/dist/extractSubgraphsFromSupergraph.d.ts.map +1 -1
  17. package/dist/extractSubgraphsFromSupergraph.js +41 -4
  18. package/dist/extractSubgraphsFromSupergraph.js.map +1 -1
  19. package/dist/federation.d.ts +4 -1
  20. package/dist/federation.d.ts.map +1 -1
  21. package/dist/federation.js +231 -58
  22. package/dist/federation.js.map +1 -1
  23. package/dist/genErrorCodeDoc.d.ts +2 -0
  24. package/dist/genErrorCodeDoc.d.ts.map +1 -0
  25. package/dist/genErrorCodeDoc.js +55 -0
  26. package/dist/genErrorCodeDoc.js.map +1 -0
  27. package/dist/inaccessibleSpec.d.ts.map +1 -1
  28. package/dist/inaccessibleSpec.js +1 -1
  29. package/dist/inaccessibleSpec.js.map +1 -1
  30. package/dist/joinSpec.d.ts.map +1 -1
  31. package/dist/joinSpec.js +6 -5
  32. package/dist/joinSpec.js.map +1 -1
  33. package/dist/operations.d.ts.map +1 -1
  34. package/dist/operations.js +15 -15
  35. package/dist/operations.js.map +1 -1
  36. package/dist/tagSpec.d.ts +2 -2
  37. package/dist/tagSpec.d.ts.map +1 -1
  38. package/dist/tagSpec.js +10 -2
  39. package/dist/tagSpec.js.map +1 -1
  40. package/dist/utils.d.ts +2 -0
  41. package/dist/utils.d.ts.map +1 -1
  42. package/dist/utils.js +34 -1
  43. package/dist/utils.js.map +1 -1
  44. package/dist/values.d.ts +2 -1
  45. package/dist/values.d.ts.map +1 -1
  46. package/dist/values.js +27 -1
  47. package/dist/values.js.map +1 -1
  48. package/jest.config.js +5 -1
  49. package/package.json +3 -6
  50. package/src/__tests__/extractSubgraphsFromSupergraph.test.ts +535 -0
  51. package/src/__tests__/subgraphValidation.test.ts +480 -0
  52. package/src/buildSchema.ts +7 -6
  53. package/src/debug.ts +2 -19
  54. package/src/definitions.ts +151 -40
  55. package/src/error.ts +340 -7
  56. package/src/extractSubgraphsFromSupergraph.ts +50 -5
  57. package/src/federation.ts +297 -92
  58. package/src/genErrorCodeDoc.ts +69 -0
  59. package/src/inaccessibleSpec.ts +7 -2
  60. package/src/joinSpec.ts +11 -5
  61. package/src/operations.ts +20 -18
  62. package/src/tagSpec.ts +11 -6
  63. package/src/utils.ts +49 -0
  64. package/src/values.ts +47 -5
  65. package/tsconfig.test.tsbuildinfo +1 -1
  66. package/tsconfig.tsbuildinfo +1 -1
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ExternalTester = exports.addSubgraphToError = exports.addSubgraphToASTNode = exports.Subgraph = exports.Subgraphs = exports.subgraphsFromServiceList = exports.parseFieldSetArgument = exports.isEntityType = exports.isFederationDirective = exports.isFederationField = exports.isFederationTypeName = exports.isFederationType = exports.isFederationSubgraphSchema = exports.federationBuiltIns = exports.FederationBuiltIns = exports.FEDERATION_RESERVED_SUBGRAPH_NAME = exports.entitiesFieldName = exports.serviceFieldName = exports.tagDirectiveName = exports.providesDirectiveName = exports.requiresDirectiveName = exports.externalDirectiveName = exports.extendsDirectiveName = exports.keyDirectiveName = exports.fieldSetTypeName = exports.anyTypeName = exports.serviceTypeName = exports.entityTypeName = void 0;
3
+ exports.ExternalTester = exports.addSubgraphToError = exports.addSubgraphToASTNode = exports.Subgraph = exports.Subgraphs = exports.subgraphsFromServiceList = exports.parseFieldSetArgument = exports.buildSubgraph = exports.isEntityType = exports.isFederationDirective = exports.isFederationField = exports.isFederationTypeName = exports.isFederationType = exports.isFederationSubgraphSchema = exports.federationBuiltIns = exports.FederationBuiltIns = exports.FEDERATION_RESERVED_SUBGRAPH_NAME = exports.entitiesFieldName = exports.serviceFieldName = exports.tagDirectiveName = exports.providesDirectiveName = exports.requiresDirectiveName = exports.externalDirectiveName = exports.extendsDirectiveName = exports.keyDirectiveName = exports.fieldSetTypeName = exports.anyTypeName = exports.serviceTypeName = exports.entityTypeName = void 0;
4
4
  const definitions_1 = require("./definitions");
5
5
  const utils_1 = require("./utils");
6
6
  const specifiedRules_1 = require("graphql/validation/specifiedRules");
@@ -55,21 +55,31 @@ function validateFieldSetSelections(directiveName, selectionSet, hasExternalInPa
55
55
  for (const selection of selectionSet.selections()) {
56
56
  if (selection.kind === 'FieldSelection') {
57
57
  const field = selection.element().definition;
58
- if (field.hasArguments()) {
59
- throw new graphql_1.GraphQLError(`field ${field.coordinate} cannot be included because it has arguments (fields with argument are not allowed in @${directiveName})`, field.sourceAST);
60
- }
61
- const mustBeExternal = !selection.selectionSet && !allowOnNonExternalLeafFields && !hasExternalInParents;
62
58
  const isExternal = externalTester.isExternal(field);
63
59
  if (isExternal) {
64
60
  externalFieldCoordinatesCollector.push(field.coordinate);
65
61
  }
66
- else if (mustBeExternal) {
62
+ if (field.hasArguments()) {
63
+ throw error_1.ERROR_CATEGORIES.FIELDS_HAS_ARGS.get(directiveName).err({
64
+ message: `field ${field.coordinate} cannot be included because it has arguments (fields with argument are not allowed in @${directiveName})`,
65
+ nodes: field.sourceAST
66
+ });
67
+ }
68
+ const mustBeExternal = !selection.selectionSet && !allowOnNonExternalLeafFields && !hasExternalInParents;
69
+ if (!isExternal && mustBeExternal) {
70
+ const errorCode = error_1.ERROR_CATEGORIES.DIRECTIVE_FIELDS_MISSING_EXTERNAL.get(directiveName);
67
71
  if (externalTester.isFakeExternal(field)) {
68
- throw new graphql_1.GraphQLError(`field "${field.coordinate}" should not be part of a @${directiveName} since it is already "effectively" provided by this subgraph `
69
- + `(while it is marked @${exports.externalDirectiveName}, it is a @${exports.keyDirectiveName} field of an extension type, which are not internally considered external for historical/backward compatibility reasons)`, field.sourceAST);
72
+ throw errorCode.err({
73
+ message: `field "${field.coordinate}" should not be part of a @${directiveName} since it is already "effectively" provided by this subgraph `
74
+ + `(while it is marked @${exports.externalDirectiveName}, it is a @${exports.keyDirectiveName} field of an extension type, which are not internally considered external for historical/backward compatibility reasons)`,
75
+ nodes: field.sourceAST
76
+ });
70
77
  }
71
78
  else {
72
- throw new graphql_1.GraphQLError(`field "${field.coordinate}" should not be part of a @${directiveName} since it is already provided by this subgraph (it is not marked @${exports.externalDirectiveName})`, field.sourceAST);
79
+ throw errorCode.err({
80
+ message: `field "${field.coordinate}" should not be part of a @${directiveName} since it is already provided by this subgraph (it is not marked @${exports.externalDirectiveName})`,
81
+ nodes: field.sourceAST
82
+ });
73
83
  }
74
84
  }
75
85
  if (selection.selectionSet) {
@@ -92,48 +102,74 @@ function validateFieldSetSelections(directiveName, selectionSet, hasExternalInPa
92
102
  }
93
103
  }
94
104
  }
95
- function validateFieldSet(type, directive, targetDescription, externalTester, externalFieldCoordinatesCollector, allowOnNonExternalLeafFields) {
105
+ function validateFieldSet(type, directive, externalTester, externalFieldCoordinatesCollector, allowOnNonExternalLeafFields, onFields) {
106
+ var _a;
96
107
  try {
97
- const selectionSet = parseFieldSetArgument(type, directive);
98
- selectionSet.validate();
99
- validateFieldSetSelections(directive.name, selectionSet, false, externalTester, externalFieldCoordinatesCollector, allowOnNonExternalLeafFields);
100
- return undefined;
101
- }
102
- catch (e) {
103
- if (!(e instanceof graphql_1.GraphQLError)) {
104
- throw e;
105
- }
106
- const nodes = (0, definitions_1.sourceASTs)(directive);
107
- if (e.nodes) {
108
- nodes.push(...e.nodes);
109
- }
110
- let msg = e.message.trim();
111
- if (msg.startsWith('Cannot query field')) {
112
- if (msg.endsWith('.')) {
113
- msg = msg.slice(0, msg.length - 1);
108
+ const fieldAcessor = onFields
109
+ ? (type, fieldName) => {
110
+ const field = type.field(fieldName);
111
+ if (field) {
112
+ onFields(field);
113
+ }
114
+ return field;
114
115
  }
115
- if (directive.name === exports.keyDirectiveName) {
116
- msg = msg + ' (the field should be either be added to this subgraph or, if it should not be resolved by this subgraph, you need to add it to this subgraph with @external).';
116
+ : undefined;
117
+ const selectionSet = parseFieldSetArgument(type, directive, fieldAcessor);
118
+ try {
119
+ validateFieldSetSelections(directive.name, selectionSet, false, externalTester, externalFieldCoordinatesCollector, allowOnNonExternalLeafFields);
120
+ return undefined;
121
+ }
122
+ catch (e) {
123
+ if (!(e instanceof graphql_1.GraphQLError)) {
124
+ throw e;
117
125
  }
118
- else {
119
- msg = msg + ' (if the field is defined in another subgraph, you need to add it to this subgraph with @external).';
126
+ const nodes = (0, definitions_1.sourceASTs)(directive);
127
+ if (e.nodes) {
128
+ nodes.push(...e.nodes);
120
129
  }
130
+ const codeDef = (_a = (0, error_1.errorCodeDef)(e)) !== null && _a !== void 0 ? _a : error_1.ERROR_CATEGORIES.DIRECTIVE_INVALID_FIELDS.get(directive.name);
131
+ return codeDef.err({
132
+ message: `${fieldSetErrorDescriptor(directive)}: ${e.message.trim()}`,
133
+ nodes,
134
+ originalError: e,
135
+ });
121
136
  }
122
- return new graphql_1.GraphQLError(`On ${targetDescription}, for ${directive}: ${msg}`, nodes);
123
137
  }
138
+ catch (e) {
139
+ if (e instanceof graphql_1.GraphQLError) {
140
+ return e;
141
+ }
142
+ else {
143
+ throw e;
144
+ }
145
+ }
146
+ }
147
+ function fieldSetErrorDescriptor(directive) {
148
+ return `On ${fieldSetTargetDescription(directive)}, for ${directiveStrUsingASTIfPossible(directive)}`;
149
+ }
150
+ function directiveStrUsingASTIfPossible(directive) {
151
+ return directive.sourceAST ? (0, graphql_1.print)(directive.sourceAST) : directive.toString();
152
+ }
153
+ function fieldSetTargetDescription(directive) {
154
+ var _a;
155
+ const targetKind = directive.parent instanceof definitions_1.FieldDefinition ? "field" : "type";
156
+ return `${targetKind} "${(_a = directive.parent) === null || _a === void 0 ? void 0 : _a.coordinate}"`;
124
157
  }
125
- function validateAllFieldSet(definition, targetTypeExtractor, targetDescriptionExtractor, errorCollector, externalTester, externalFieldCoordinatesCollector, isOnParentType, allowOnNonExternalLeafFields) {
158
+ function validateAllFieldSet(definition, targetTypeExtractor, errorCollector, externalTester, externalFieldCoordinatesCollector, isOnParentType, allowOnNonExternalLeafFields, onFields) {
126
159
  for (const application of definition.applications()) {
127
160
  const elt = application.parent;
128
161
  const type = targetTypeExtractor(elt);
129
- const targetDescription = targetDescriptionExtractor(elt);
130
162
  const parentType = isOnParentType ? type : elt.parent;
131
163
  if ((0, definitions_1.isInterfaceType)(parentType)) {
132
- errorCollector.push(new graphql_1.GraphQLError(isOnParentType
133
- ? `Cannot use ${definition.coordinate} on interface ${parentType.coordinate}: ${definition.coordinate} is not yet supported on interfaces`
134
- : `Cannot use ${definition.coordinate} on ${targetDescription} of parent type ${parentType}: ${definition.coordinate} is not yet supported within interfaces`, (0, definitions_1.sourceASTs)(application).concat(isOnParentType ? [] : (0, definitions_1.sourceASTs)(type))));
164
+ const code = error_1.ERROR_CATEGORIES.DIRECTIVE_UNSUPPORTED_ON_INTERFACE.get(definition.name);
165
+ errorCollector.push(code.err({
166
+ message: isOnParentType
167
+ ? `Cannot use ${definition.coordinate} on interface "${parentType.coordinate}": ${definition.coordinate} is not yet supported on interfaces`
168
+ : `Cannot use ${definition.coordinate} on ${fieldSetTargetDescription(application)} of parent type "${parentType}": ${definition.coordinate} is not yet supported within interfaces`,
169
+ nodes: (0, definitions_1.sourceASTs)(application).concat(isOnParentType ? [] : (0, definitions_1.sourceASTs)(type)),
170
+ }));
135
171
  }
136
- const error = validateFieldSet(type, application, targetDescription, externalTester, externalFieldCoordinatesCollector, allowOnNonExternalLeafFields);
172
+ const error = validateFieldSet(type, application, externalTester, externalFieldCoordinatesCollector, allowOnNonExternalLeafFields, onFields);
137
173
  if (error) {
138
174
  errorCollector.push(error);
139
175
  }
@@ -149,8 +185,11 @@ function validateAllExternalFieldsUsed(schema, externalTester, allExternalFields
149
185
  continue;
150
186
  }
151
187
  if (!isFieldSatisfyingInterface(field)) {
152
- errorCollector.push(new graphql_1.GraphQLError(`Field ${field.coordinate} is marked @external but is not used in any federation directive (@key, @provides, @requires) or to satisfy an interface;`
153
- + ' the field declaration has no use and should be removed (or the field should not be @external).', field.sourceAST));
188
+ errorCollector.push(error_1.ERRORS.EXTERNAL_UNUSED.err({
189
+ message: `Field "${field.coordinate}" is marked @external but is not used in any federation directive (@key, @provides, @requires) or to satisfy an interface;`
190
+ + ' the field declaration has no use and should be removed (or the field should not be @external).',
191
+ nodes: field.sourceAST,
192
+ }));
154
193
  }
155
194
  }
156
195
  }
@@ -158,6 +197,38 @@ function validateAllExternalFieldsUsed(schema, externalTester, allExternalFields
158
197
  function isFieldSatisfyingInterface(field) {
159
198
  return field.parent.interfaces().some(itf => itf.field(field.name));
160
199
  }
200
+ function validateInterfaceRuntimeImplementationFieldsTypes(itf, externalTester, errorCollector) {
201
+ const runtimeTypes = itf.possibleRuntimeTypes();
202
+ for (const field of itf.fields()) {
203
+ const withExternalOrRequires = [];
204
+ const typeToImplems = new utils_1.MultiMap();
205
+ const nodes = [];
206
+ for (const type of runtimeTypes) {
207
+ const implemField = type.field(field.name);
208
+ if (!implemField)
209
+ continue;
210
+ if (implemField.sourceAST) {
211
+ nodes.push(implemField.sourceAST);
212
+ }
213
+ if (externalTester.isExternal(implemField) || implemField.hasAppliedDirective(exports.requiresDirectiveName)) {
214
+ withExternalOrRequires.push(implemField);
215
+ }
216
+ const returnType = implemField.type;
217
+ typeToImplems.add(returnType.toString(), implemField);
218
+ }
219
+ if (withExternalOrRequires.length > 0 && typeToImplems.size > 1) {
220
+ const typeToImplemsArray = [...typeToImplems.entries()];
221
+ errorCollector.push(error_1.ERRORS.INTERFACE_FIELD_IMPLEM_TYPE_MISMATCH.err({
222
+ message: `Some of the runtime implementations of interface field "${field.coordinate}" are marked @external or have a @require (${withExternalOrRequires.map(printFieldCoordinate)}) so all the implementations should use the same type (a current limitation of federation; see https://github.com/apollographql/federation/issues/1257), but ${formatFieldsToReturnType(typeToImplemsArray[0])} while ${(0, utils_1.joinStrings)(typeToImplemsArray.slice(1).map(formatFieldsToReturnType), ' and ')}.`,
223
+ nodes
224
+ }));
225
+ }
226
+ }
227
+ }
228
+ const printFieldCoordinate = (f) => `"${f.coordinate}"`;
229
+ function formatFieldsToReturnType([type, implems]) {
230
+ return `${(0, utils_1.joinStrings)(implems.map(printFieldCoordinate))} ${implems.length == 1 ? 'has' : 'have'} type "${type}"`;
231
+ }
161
232
  class FederationBuiltIns extends definitions_1.BuiltIns {
162
233
  addBuiltInTypes(schema) {
163
234
  super.addBuiltInTypes(schema);
@@ -170,16 +241,16 @@ class FederationBuiltIns extends definitions_1.BuiltIns {
170
241
  super.addBuiltInDirectives(schema);
171
242
  const fieldSetType = new definitions_1.NonNullType(schema.type(exports.fieldSetTypeName));
172
243
  const keyDirective = this.addBuiltInDirective(schema, exports.keyDirectiveName)
173
- .addLocations('OBJECT', 'INTERFACE');
244
+ .addLocations(graphql_1.DirectiveLocation.OBJECT, graphql_1.DirectiveLocation.INTERFACE);
174
245
  keyDirective.repeatable = true;
175
246
  keyDirective.addArgument('fields', fieldSetType);
176
247
  this.addBuiltInDirective(schema, exports.extendsDirectiveName)
177
- .addLocations('OBJECT', 'INTERFACE');
248
+ .addLocations(graphql_1.DirectiveLocation.OBJECT, graphql_1.DirectiveLocation.INTERFACE);
178
249
  this.addBuiltInDirective(schema, exports.externalDirectiveName)
179
- .addLocations('OBJECT', 'FIELD_DEFINITION');
250
+ .addLocations(graphql_1.DirectiveLocation.OBJECT, graphql_1.DirectiveLocation.FIELD_DEFINITION);
180
251
  for (const name of [exports.requiresDirectiveName, exports.providesDirectiveName]) {
181
252
  this.addBuiltInDirective(schema, name)
182
- .addLocations('FIELD_DEFINITION')
253
+ .addLocations(graphql_1.DirectiveLocation.FIELD_DEFINITION)
183
254
  .addArgument('fields', fieldSetType);
184
255
  }
185
256
  const directive = this.addBuiltInDirective(schema, 'tag').addLocations(...tagSpec_1.tagLocations);
@@ -235,9 +306,12 @@ class FederationBuiltIns extends definitions_1.BuiltIns {
235
306
  if (type && type.name !== defaultName) {
236
307
  const existing = schema.type(defaultName);
237
308
  if (existing) {
238
- errors.push((0, error_1.error)(`ROOT_${k.toUpperCase()}_USED`, `The schema has a type named "${defaultName}" but it is not set as the ${k} root type ("${type.name}" is instead): `
239
- + 'this is not supported by federation. '
240
- + 'If a root type does not use its default name, there should be no other type with that default name.', (0, definitions_1.sourceASTs)(type, existing)));
309
+ errors.push(error_1.ERROR_CATEGORIES.ROOT_TYPE_USED.get(k).err({
310
+ message: `The schema has a type named "${defaultName}" but it is not set as the ${k} root type ("${type.name}" is instead): `
311
+ + 'this is not supported by federation. '
312
+ + 'If a root type does not use its default name, there should be no other type with that default name.',
313
+ nodes: (0, definitions_1.sourceASTs)(type, existing),
314
+ }));
241
315
  }
242
316
  type.rename(defaultName);
243
317
  }
@@ -245,18 +319,29 @@ class FederationBuiltIns extends definitions_1.BuiltIns {
245
319
  const externalTester = new ExternalTester(schema);
246
320
  const externalFieldsInFedDirectivesCoordinates = [];
247
321
  const keyDirective = this.keyDirective(schema);
248
- validateAllFieldSet(keyDirective, type => type, type => `type "${type}"`, errors, externalTester, externalFieldsInFedDirectivesCoordinates, true, true);
249
- validateAllFieldSet(this.requiresDirective(schema), field => field.parent, field => `field "${field.coordinate}"`, errors, externalTester, externalFieldsInFedDirectivesCoordinates, false, false);
322
+ validateAllFieldSet(keyDirective, type => type, errors, externalTester, externalFieldsInFedDirectivesCoordinates, true, true, field => {
323
+ if ((0, definitions_1.isListType)(field.type) || (0, definitions_1.isUnionType)(field.type) || (0, definitions_1.isInterfaceType)(field.type)) {
324
+ let kind = field.type.kind;
325
+ kind = kind.slice(0, kind.length - 'Type'.length);
326
+ throw error_1.ERRORS.KEY_FIELDS_SELECT_INVALID_TYPE.err({
327
+ message: `field "${field.coordinate}" is a ${kind} type which is not allowed in @key`
328
+ });
329
+ }
330
+ });
331
+ validateAllFieldSet(this.requiresDirective(schema), field => field.parent, errors, externalTester, externalFieldsInFedDirectivesCoordinates, false, false);
250
332
  validateAllFieldSet(this.providesDirective(schema), field => {
251
333
  if (externalTester.isExternal(field)) {
252
334
  throw new graphql_1.GraphQLError(`Cannot have both @provides and @external on field "${field.coordinate}"`, field.sourceAST);
253
335
  }
254
336
  const type = (0, definitions_1.baseType)(field.type);
255
337
  if (!(0, definitions_1.isCompositeType)(type)) {
256
- throw new graphql_1.GraphQLError(`Invalid @provides directive on field "${field.coordinate}": field has type "${field.type}" which is not a Composite Type`, field.sourceAST);
338
+ throw error_1.ERRORS.PROVIDES_ON_NON_OBJECT_FIELD.err({
339
+ message: `Invalid @provides directive on field "${field.coordinate}": field has type "${field.type}" which is not a Composite Type`,
340
+ nodes: field.sourceAST,
341
+ });
257
342
  }
258
343
  return type;
259
- }, field => `field ${field.coordinate}`, errors, externalTester, externalFieldsInFedDirectivesCoordinates, false, false);
344
+ }, errors, externalTester, externalFieldsInFedDirectivesCoordinates, false, false);
260
345
  validateAllExternalFieldsUsed(schema, externalTester, externalFieldsInFedDirectivesCoordinates, errors);
261
346
  const tagDirective = this.tagDirective(schema);
262
347
  if (!tagDirective.isBuiltIn) {
@@ -265,6 +350,9 @@ class FederationBuiltIns extends definitions_1.BuiltIns {
265
350
  errors.push(error);
266
351
  }
267
352
  }
353
+ for (const itf of schema.types('InterfaceType')) {
354
+ validateInterfaceRuntimeImplementationFieldsTypes(itf, externalTester, errors);
355
+ }
268
356
  return errors;
269
357
  }
270
358
  validationRules() {
@@ -299,7 +387,7 @@ class FederationBuiltIns extends definitions_1.BuiltIns {
299
387
  }
300
388
  }
301
389
  return {
302
- kind: 'Document',
390
+ kind: graphql_1.Kind.DOCUMENT,
303
391
  loc: document.loc,
304
392
  definitions
305
393
  };
@@ -343,21 +431,72 @@ function buildSubgraph(name, source) {
343
431
  }
344
432
  catch (e) {
345
433
  if (e instanceof graphql_1.GraphQLError) {
346
- throw addSubgraphToError(e, name);
434
+ throw addSubgraphToError(e, name, error_1.ERRORS.INVALID_GRAPHQL);
347
435
  }
348
436
  else {
349
437
  throw e;
350
438
  }
351
439
  }
352
440
  }
441
+ exports.buildSubgraph = buildSubgraph;
353
442
  function parseFieldSetArgument(parentType, directive, fieldAccessor = (type, name) => type.field(name)) {
354
- return (0, operations_1.parseSelectionSet)(parentType, validateFieldSetValue(directive), new definitions_1.VariableDefinitions(), undefined, fieldAccessor);
443
+ var _a;
444
+ try {
445
+ const selectionSet = (0, operations_1.parseSelectionSet)(parentType, validateFieldSetValue(directive), new definitions_1.VariableDefinitions(), undefined, fieldAccessor);
446
+ selectionSet.validate();
447
+ return selectionSet;
448
+ }
449
+ catch (e) {
450
+ if (!(e instanceof graphql_1.GraphQLError)) {
451
+ throw e;
452
+ }
453
+ const nodes = (0, definitions_1.sourceASTs)(directive);
454
+ if (e.nodes) {
455
+ nodes.push(...e.nodes);
456
+ }
457
+ let msg = e.message.trim();
458
+ if (msg.startsWith('Cannot query field')) {
459
+ if (msg.endsWith('.')) {
460
+ msg = msg.slice(0, msg.length - 1);
461
+ }
462
+ if (directive.name === exports.keyDirectiveName) {
463
+ msg = msg + ' (the field should be either be added to this subgraph or, if it should not be resolved by this subgraph, you need to add it to this subgraph with @external).';
464
+ }
465
+ else {
466
+ msg = msg + ' (if the field is defined in another subgraph, you need to add it to this subgraph with @external).';
467
+ }
468
+ }
469
+ const codeDef = (_a = (0, error_1.errorCodeDef)(e)) !== null && _a !== void 0 ? _a : error_1.ERROR_CATEGORIES.DIRECTIVE_INVALID_FIELDS.get(directive.name);
470
+ throw codeDef.err({
471
+ message: `${fieldSetErrorDescriptor(directive)}: ${msg}`,
472
+ nodes,
473
+ originalError: e,
474
+ });
475
+ }
355
476
  }
356
477
  exports.parseFieldSetArgument = parseFieldSetArgument;
357
478
  function validateFieldSetValue(directive) {
479
+ var _a;
358
480
  const fields = directive.arguments().fields;
481
+ const nodes = directive.sourceAST;
359
482
  if (typeof fields !== 'string') {
360
- throw new graphql_1.GraphQLError(`Invalid value for argument ${directive.definition.argument('fields').coordinate} on ${directive.parent.coordinate}: must be a string.`, directive.sourceAST);
483
+ throw error_1.ERROR_CATEGORIES.DIRECTIVE_INVALID_FIELDS_TYPE.get(directive.name).err({
484
+ message: `Invalid value for argument "${directive.definition.argument('fields').name}": must be a string.`,
485
+ nodes,
486
+ });
487
+ }
488
+ if (nodes && nodes.kind === 'Directive') {
489
+ for (const argNode of (_a = nodes.arguments) !== null && _a !== void 0 ? _a : []) {
490
+ if (argNode.name.value === 'fields') {
491
+ if (argNode.value.kind !== 'StringValue') {
492
+ throw error_1.ERROR_CATEGORIES.DIRECTIVE_INVALID_FIELDS_TYPE.get(directive.name).err({
493
+ message: `Invalid value for argument "${directive.definition.argument('fields').name}": must be a string.`,
494
+ nodes,
495
+ });
496
+ }
497
+ break;
498
+ }
499
+ }
361
500
  }
362
501
  return fields;
363
502
  }
@@ -391,7 +530,7 @@ class Subgraphs {
391
530
  ? new Subgraph(subgraphOrName, url, schema instanceof definitions_1.Schema ? schema : buildSubgraph(subgraphOrName, schema))
392
531
  : subgraphOrName;
393
532
  if (toAdd.name === exports.FEDERATION_RESERVED_SUBGRAPH_NAME) {
394
- throw new graphql_1.GraphQLError(`Invalid name ${exports.FEDERATION_RESERVED_SUBGRAPH_NAME} for a subgraph: this name is reserved`);
533
+ throw error_1.ERRORS.INVALID_SUBGRAPH_NAME.err({ message: `Invalid name ${exports.FEDERATION_RESERVED_SUBGRAPH_NAME} for a subgraph: this name is reserved` });
395
534
  }
396
535
  if (this.subgraphs.has(toAdd.name)) {
397
536
  throw new Error(`A subgraph named ${toAdd.name} already exists` + (toAdd.url ? ` (with url '${toAdd.url}')` : ''));
@@ -442,8 +581,29 @@ function addSubgraphToASTNode(node, subgraph) {
442
581
  };
443
582
  }
444
583
  exports.addSubgraphToASTNode = addSubgraphToASTNode;
445
- function addSubgraphToError(e, subgraphName) {
446
- const updatedCauses = (0, definitions_1.errorCauses)(e).map(cause => new graphql_1.GraphQLError(`[${subgraphName}] ${cause.message}`, cause.nodes ? cause.nodes.map(node => addSubgraphToASTNode(node, subgraphName)) : undefined, cause.source, cause.positions, cause.path, cause.originalError, cause.extensions));
584
+ function addSubgraphToError(e, subgraphName, errorCode) {
585
+ const updatedCauses = (0, definitions_1.errorCauses)(e).map(cause => {
586
+ var _a;
587
+ const message = `[${subgraphName}] ${cause.message}`;
588
+ const nodes = cause.nodes
589
+ ? cause.nodes.map(node => addSubgraphToASTNode(node, subgraphName))
590
+ : undefined;
591
+ const code = (_a = (0, error_1.errorCodeDef)(cause)) !== null && _a !== void 0 ? _a : errorCode;
592
+ if (code) {
593
+ return code.err({
594
+ message,
595
+ nodes,
596
+ source: cause.source,
597
+ positions: cause.positions,
598
+ path: cause.path,
599
+ originalError: cause.originalError,
600
+ extensions: cause.extensions,
601
+ });
602
+ }
603
+ else {
604
+ return new graphql_1.GraphQLError(message, nodes, cause.source, cause.positions, cause.path, cause.originalError, cause.extensions);
605
+ }
606
+ });
447
607
  return (0, definitions_1.ErrGraphQLValidationFailed)(updatedCauses);
448
608
  }
449
609
  exports.addSubgraphToError = addSubgraphToError;
@@ -482,6 +642,19 @@ class ExternalTester {
482
642
  isFakeExternal(field) {
483
643
  return this.fakeExternalFields.has(field.coordinate);
484
644
  }
645
+ selectsAnyExternalField(selectionSet) {
646
+ for (const selection of selectionSet.selections()) {
647
+ if (selection.kind === 'FieldSelection' && this.isExternal(selection.element().definition)) {
648
+ return true;
649
+ }
650
+ if (selection.selectionSet) {
651
+ if (this.selectsAnyExternalField(selection.selectionSet)) {
652
+ return true;
653
+ }
654
+ }
655
+ }
656
+ return false;
657
+ }
485
658
  }
486
659
  exports.ExternalTester = ExternalTester;
487
660
  //# sourceMappingURL=federation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"federation.js","sourceRoot":"","sources":["../src/federation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"federation.js","sourceRoot":"","sources":["../src/federation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=genErrorCodeDoc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genErrorCodeDoc.d.ts","sourceRoot":"","sources":["../src/genErrorCodeDoc.ts"],"names":[],"mappings":""}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("./utils");
4
+ const error_1 = require("./error");
5
+ const header = `---
6
+ title: Federation error codes
7
+ sidebar_title: Error codes
8
+ ---
9
+
10
+ When Apollo Gateway attempts to **compose** the schemas provided by your [subgraphs](./subgraphs/) into a **supergraph schema**, it confirms that:
11
+
12
+ * The subgraphs are valid
13
+ * The resulting supergraph schema is valid
14
+ * The gateway has all of the information it needs to execute operations against the resulting schema
15
+
16
+ If Apollo Gateway encounters an error, composition fails. This document lists subgraphs and composition error codes and their root causes.
17
+ `;
18
+ function makeMardownArray(headers, rows) {
19
+ const columns = headers.length;
20
+ let out = '| ' + headers.join(' | ') + ' |\n';
21
+ out += '|' + headers.map(_ => '---').join('|') + '|\n';
22
+ for (const row of rows) {
23
+ (0, utils_1.assert)(row.length <= columns, `Row [${row}] has too columns (expect ${columns} but got ${row.length})`);
24
+ const frow = row.length === columns
25
+ ? row
26
+ : row.concat(new Array(columns - row.length).fill(''));
27
+ out += '| ' + frow.join(' | ') + ' |\n';
28
+ }
29
+ return out;
30
+ }
31
+ const rows = Object.values(error_1.ERRORS).map(def => [
32
+ '`' + def.code + '`',
33
+ def.description,
34
+ def.metadata.addedIn,
35
+ def.metadata.replaces ? `Replaces: ${def.metadata.replaces.map(c => '`' + c + '`').join(', ')}` : ''
36
+ ]);
37
+ const sortRowsByCode = (r1, r2) => r1[0].localeCompare(r2[0]);
38
+ rows.sort(sortRowsByCode);
39
+ const errorsSection = `## Errors
40
+
41
+ The following errors may be raised by composition:
42
+
43
+ ` + makeMardownArray(['Code', 'Description', 'Since', 'Comment'], rows);
44
+ const removedErrors = error_1.REMOVED_ERRORS
45
+ .map(([code, comment]) => ['`' + code + '`', comment])
46
+ .sort(sortRowsByCode);
47
+ const removedSection = `## Removed codes
48
+
49
+ The following section lists code that have been removed and are not longer generated by the gateway version this is the documentation for.
50
+
51
+ ` + makeMardownArray(['Removed Code', 'Comment'], removedErrors);
52
+ console.log(header + '\n\n'
53
+ + errorsSection + '\n\n'
54
+ + removedSection);
55
+ //# sourceMappingURL=genErrorCodeDoc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genErrorCodeDoc.js","sourceRoot":"","sources":["../src/genErrorCodeDoc.ts"],"names":[],"mappings":";;AAAA,mCAAiC;AACjC,mCAAiD;AAEjD,MAAM,MAAM,GAAG;;;;;;;;;;;;CAYd,CAAC;AAEF,SAAS,gBAAgB,CACvB,OAAiB,EACjB,IAAgB;IAEhB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/B,IAAI,GAAG,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;IAC9C,GAAG,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACvD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,IAAA,cAAM,EAAC,GAAG,CAAC,MAAM,IAAI,OAAO,EAAE,QAAQ,GAAG,6BAA6B,OAAO,YAAY,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACxG,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,KAAK,OAAO;YACjC,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,CAAS,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,GAAG,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAA;KACxC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,cAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;IAC5C,GAAG,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG;IACpB,GAAG,CAAC,WAAW;IACf,GAAG,CAAC,QAAQ,CAAC,OAAO;IACpB,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;CACrG,CAAC,CAAC;AAEH,MAAM,cAAc,GAAG,CAAC,EAAY,EAAE,EAAY,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAElF,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAE1B,MAAM,aAAa,GAAG;;;;CAIrB,GAAG,gBAAgB,CAClB,CAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,CAAE,EAC7C,IAAI,CACL,CAAC;AAEF,MAAM,aAAa,GAAG,sBAAc;KACjC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC;KACrD,IAAI,CAAC,cAAc,CAAC,CAAC;AAExB,MAAM,cAAc,GAAG;;;;CAItB,GAAG,gBAAgB,CAAC,CAAC,cAAc,EAAE,SAAS,CAAC,EAAE,aAAa,CAAC,CAAC;AAEjE,OAAO,CAAC,GAAG,CACT,MAAM,GAAG,MAAM;MACb,aAAa,GAAG,MAAM;MACtB,cAAc,CACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"inaccessibleSpec.d.ts","sourceRoot":"","sources":["../src/inaccessibleSpec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAc,cAAc,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,EACL,mBAAmB,EAKnB,MAAM,EACP,MAAM,eAAe,CAAC;AAGvB,eAAO,MAAM,oBAAoB,0CAA0C,CAAC;AAE5E,qBAAa,0BAA2B,SAAQ,iBAAiB;gBACnD,OAAO,EAAE,cAAc;IAInC,mBAAmB,CAAC,MAAM,EAAE,MAAM;IAIlC,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAGlF;AAED,eAAO,MAAM,qBAAqB,gDAC8B,CAAC;AAEjE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,QAoDxD"}
1
+ {"version":3,"file":"inaccessibleSpec.d.ts","sourceRoot":"","sources":["../src/inaccessibleSpec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAc,cAAc,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,EACL,mBAAmB,EAKnB,MAAM,EACP,MAAM,eAAe,CAAC;AAGvB,eAAO,MAAM,oBAAoB,0CAA0C,CAAC;AAE5E,qBAAa,0BAA2B,SAAQ,iBAAiB;gBACnD,OAAO,EAAE,cAAc;IAInC,mBAAmB,CAAC,MAAM,EAAE,MAAM;IASlC,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAGlF;AAED,eAAO,MAAM,qBAAqB,gDAC8B,CAAC;AAEjE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,QAoDxD"}
@@ -10,7 +10,7 @@ class InaccessibleSpecDefinition extends coreSpec_1.FeatureDefinition {
10
10
  super(new coreSpec_1.FeatureUrl(exports.inaccessibleIdentity, 'inaccessible', version));
11
11
  }
12
12
  addElementsToSchema(schema) {
13
- this.addDirective(schema, 'inaccessible').addLocations('FIELD_DEFINITION', 'OBJECT', 'INTERFACE', 'UNION');
13
+ this.addDirective(schema, 'inaccessible').addLocations(graphql_1.DirectiveLocation.FIELD_DEFINITION, graphql_1.DirectiveLocation.OBJECT, graphql_1.DirectiveLocation.INTERFACE, graphql_1.DirectiveLocation.UNION);
14
14
  }
15
15
  inaccessibleDirective(schema) {
16
16
  return this.directive(schema, 'inaccessible');
@@ -1 +1 @@
1
- {"version":3,"file":"inaccessibleSpec.js","sourceRoot":"","sources":["../src/inaccessibleSpec.ts"],"names":[],"mappings":";;;AAAA,yCAA+F;AAC/F,+CAOuB;AACvB,qCAAuC;AAE1B,QAAA,oBAAoB,GAAG,uCAAuC,CAAC;AAE5E,MAAa,0BAA2B,SAAQ,4BAAiB;IAC/D,YAAY,OAAuB;QACjC,KAAK,CAAC,IAAI,qBAAU,CAAC,4BAAoB,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,mBAAmB,CAAC,MAAc;QAChC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,YAAY,CAAC,kBAAkB,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAC7G,CAAC;IAED,qBAAqB,CAAC,MAAc;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,CAAE,CAAC;IACjD,CAAC;CACF;AAZD,gEAYC;AAEY,QAAA,qBAAqB,GAAG,IAAI,6BAAkB,CAA6B,4BAAoB,CAAC;KAC1G,GAAG,CAAC,IAAI,0BAA0B,CAAC,IAAI,yBAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAEjE,SAAgB,0BAA0B,CAAC,MAAc;IACvD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IACzC,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO;KACR;IAED,MAAM,mBAAmB,GAAG,YAAY,CAAC,aAAa,CAAC,4BAAoB,CAAC,CAAC;IAC7E,IAAI,CAAC,mBAAmB,EAAE;QACxB,OAAO;KACR;IACD,MAAM,gBAAgB,GAAG,6BAAqB,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrF,IAAI,CAAC,gBAAgB,EAAE;QACrB,MAAM,IAAI,sBAAY,CACpB,8FAA8F,mBAAmB,CAAC,GAAG,CAAC,OAAO,yBAAyB,6BAAqB,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACzM;IAED,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC7E,IAAI,CAAC,qBAAqB,EAAE;QAC1B,MAAM,IAAI,sBAAY,CACpB,4BAA4B,gBAAgB,CAAC,GAAG,qDAAqD,CACtG,CAAC;KACH;IAED,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE;QAEjC,IAAI,CAAC,IAAA,6BAAe,EAAC,IAAI,CAAC,EAAE;YAC1B,SAAS;SACV;QAED,IAAI,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,EAAE;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACjC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;gBAGlC,IAAI,SAAS,CAAC,IAAI,KAAK,iBAAiB,EAAE;oBACxC,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,EAAE;wBACzD,MAAM,IAAI,sBAAY,CACpB,SAAS,SAAS,CAAC,UAAU,2EAA2E,EACxG,SAAS,CAAC,SAAS,CACpB,CAAC;qBACH;iBACF;aAKF;SACF;aAAM,IAAI,IAAA,0BAAY,EAAC,IAAI,CAAC,IAAI,IAAA,6BAAe,EAAC,IAAI,CAAC,EAAE;YACtD,MAAM,QAAQ,GAAI,IAAI,CAAC,MAAM,EAA6B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,CAAC,CAAC;YACrH,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;SACnC;KACF;AACH,CAAC;AApDD,gEAoDC"}
1
+ {"version":3,"file":"inaccessibleSpec.js","sourceRoot":"","sources":["../src/inaccessibleSpec.ts"],"names":[],"mappings":"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"}