@apollo/federation-internals 2.8.0-connectors.5 → 2.8.1

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 (81) hide show
  1. package/dist/definitions.d.ts +1 -0
  2. package/dist/definitions.d.ts.map +1 -1
  3. package/dist/definitions.js +5 -1
  4. package/dist/definitions.js.map +1 -1
  5. package/dist/directiveAndTypeSpecification.d.ts +13 -1
  6. package/dist/directiveAndTypeSpecification.d.ts.map +1 -1
  7. package/dist/directiveAndTypeSpecification.js +2 -2
  8. package/dist/directiveAndTypeSpecification.js.map +1 -1
  9. package/dist/error.d.ts +25 -0
  10. package/dist/error.d.ts.map +1 -1
  11. package/dist/error.js +50 -0
  12. package/dist/error.js.map +1 -1
  13. package/dist/extractSubgraphsFromSupergraph.d.ts +1 -1
  14. package/dist/extractSubgraphsFromSupergraph.d.ts.map +1 -1
  15. package/dist/extractSubgraphsFromSupergraph.js +62 -7
  16. package/dist/extractSubgraphsFromSupergraph.js.map +1 -1
  17. package/dist/federation.d.ts +19 -2
  18. package/dist/federation.d.ts.map +1 -1
  19. package/dist/federation.js +420 -7
  20. package/dist/federation.js.map +1 -1
  21. package/dist/index.d.ts +2 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +2 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/knownCoreFeatures.d.ts +3 -0
  26. package/dist/knownCoreFeatures.d.ts.map +1 -1
  27. package/dist/knownCoreFeatures.js +12 -1
  28. package/dist/knownCoreFeatures.js.map +1 -1
  29. package/dist/operations.d.ts +10 -8
  30. package/dist/operations.d.ts.map +1 -1
  31. package/dist/operations.js +48 -16
  32. package/dist/operations.js.map +1 -1
  33. package/dist/specs/contextSpec.d.ts +20 -0
  34. package/dist/specs/contextSpec.d.ts.map +1 -0
  35. package/dist/specs/contextSpec.js +62 -0
  36. package/dist/specs/contextSpec.js.map +1 -0
  37. package/dist/specs/coreSpec.d.ts +1 -0
  38. package/dist/specs/coreSpec.d.ts.map +1 -1
  39. package/dist/specs/coreSpec.js +3 -0
  40. package/dist/specs/coreSpec.js.map +1 -1
  41. package/dist/specs/federationSpec.d.ts +8 -2
  42. package/dist/specs/federationSpec.d.ts.map +1 -1
  43. package/dist/specs/federationSpec.js +16 -1
  44. package/dist/specs/federationSpec.js.map +1 -1
  45. package/dist/specs/joinSpec.d.ts +6 -0
  46. package/dist/specs/joinSpec.d.ts.map +1 -1
  47. package/dist/specs/joinSpec.js +11 -1
  48. package/dist/specs/joinSpec.js.map +1 -1
  49. package/dist/specs/sourceSpec.d.ts +69 -0
  50. package/dist/specs/sourceSpec.d.ts.map +1 -0
  51. package/dist/specs/sourceSpec.js +345 -0
  52. package/dist/specs/sourceSpec.js.map +1 -0
  53. package/dist/supergraphs.d.ts +4 -0
  54. package/dist/supergraphs.d.ts.map +1 -1
  55. package/dist/supergraphs.js +35 -2
  56. package/dist/supergraphs.js.map +1 -1
  57. package/dist/utils.d.ts +3 -0
  58. package/dist/utils.d.ts.map +1 -1
  59. package/dist/utils.js +39 -1
  60. package/dist/utils.js.map +1 -1
  61. package/package.json +1 -1
  62. package/src/definitions.ts +4 -0
  63. package/src/directiveAndTypeSpecification.ts +8 -1
  64. package/src/error.ts +175 -0
  65. package/src/extractSubgraphsFromSupergraph.ts +76 -14
  66. package/src/federation.ts +636 -15
  67. package/src/index.ts +2 -1
  68. package/src/knownCoreFeatures.ts +15 -0
  69. package/src/operations.ts +63 -23
  70. package/src/specs/contextSpec.ts +87 -0
  71. package/src/specs/coreSpec.ts +5 -0
  72. package/src/specs/federationSpec.ts +18 -1
  73. package/src/specs/joinSpec.ts +27 -3
  74. package/src/specs/sourceSpec.ts +607 -0
  75. package/src/supergraphs.ts +37 -1
  76. package/src/utils.ts +38 -0
  77. package/dist/specs/connectSpec.d.ts +0 -42
  78. package/dist/specs/connectSpec.d.ts.map +0 -1
  79. package/dist/specs/connectSpec.js +0 -82
  80. package/dist/specs/connectSpec.js.map +0 -1
  81. package/src/specs/connectSpec.ts +0 -181
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apollo/federation-internals",
3
- "version": "2.8.0-connectors.5",
3
+ "version": "2.8.1",
4
4
  "description": "Apollo Federation internal utilities",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -3786,3 +3786,7 @@ function copyDirectiveDefinitionInner(
3786
3786
  dest.sourceAST = source.sourceAST;
3787
3787
  dest.description = source.description;
3788
3788
  }
3789
+
3790
+ export function isFieldDefinition(elem: SchemaElement<any, any>): elem is FieldDefinition<any> {
3791
+ return elem instanceof FieldDefinition;
3792
+ }
@@ -24,6 +24,7 @@ import { sameType } from "./types";
24
24
  import { arrayEquals, assert } from "./utils";
25
25
  import { ArgumentCompositionStrategy } from "./argumentCompositionStrategies";
26
26
  import { FeatureDefinition, FeatureVersion } from "./specs/coreSpec";
27
+ import { Subgraph } from '.';
27
28
 
28
29
  export type DirectiveSpecification = {
29
30
  name: string,
@@ -34,8 +35,11 @@ export type DirectiveSpecification = {
34
35
  export type DirectiveCompositionSpecification = {
35
36
  supergraphSpecification: (federationVersion: FeatureVersion) => FeatureDefinition,
36
37
  argumentsMerger?: (schema: Schema, feature: CoreFeature) => ArgumentMerger | GraphQLError,
38
+ staticArgumentTransform?: StaticArgumentsTransform,
37
39
  }
38
40
 
41
+ export type StaticArgumentsTransform = (subgraph: Subgraph, args: Readonly<{[key: string]: any}>) => Readonly<{[key: string]: any}>;
42
+
39
43
  export type ArgumentMerger = {
40
44
  merge: (argName: string, values: any[]) => any,
41
45
  toString: () => string,
@@ -75,6 +79,7 @@ export function createDirectiveSpecification({
75
79
  args = [],
76
80
  composes = false,
77
81
  supergraphSpecification = undefined,
82
+ staticArgumentTransform = undefined,
78
83
  }: {
79
84
  name: string,
80
85
  locations: DirectiveLocation[],
@@ -82,6 +87,7 @@ export function createDirectiveSpecification({
82
87
  args?: DirectiveArgumentSpecification[],
83
88
  composes?: boolean,
84
89
  supergraphSpecification?: (fedVersion: FeatureVersion) => FeatureDefinition,
90
+ staticArgumentTransform?: (subgraph: Subgraph, args: {[key: string]: any}) => {[key: string]: any},
85
91
  }): DirectiveSpecification {
86
92
  let composition: DirectiveCompositionSpecification | undefined = undefined;
87
93
  if (composes) {
@@ -109,7 +115,7 @@ export function createDirectiveSpecification({
109
115
  + `${strategy.name} only supports ${supportedMsg}`
110
116
  );
111
117
  }
112
- };
118
+ }
113
119
  return {
114
120
  merge: (argName, values) => {
115
121
  const strategy = argStrategies.get(argName);
@@ -128,6 +134,7 @@ export function createDirectiveSpecification({
128
134
  composition = {
129
135
  supergraphSpecification,
130
136
  argumentsMerger,
137
+ staticArgumentTransform,
131
138
  };
132
139
  }
133
140
 
package/src/error.ts CHANGED
@@ -325,6 +325,36 @@ const TYPE_KIND_MISMATCH = makeCodeDefinition(
325
325
  { ...DEFAULT_METADATA, replaces: ['VALUE_TYPE_KIND_MISMATCH', 'EXTENSION_OF_WRONG_KIND', 'ENUM_MISMATCH_TYPE'] },
326
326
  );
327
327
 
328
+ const CONTEXT_NOT_SET = makeCodeDefinition(
329
+ 'CONTEXT_NOT_SET',
330
+ 'Context is never set for context trying to be used.',
331
+ { addedIn: '2.8.0' },
332
+ );
333
+
334
+ const CONTEXT_INVALID_SELECTION= makeCodeDefinition(
335
+ 'CONTEXT_INVALID_SELECTION',
336
+ 'Selection within @fromContext must resolve to a single field.',
337
+ { addedIn: '2.8.0' },
338
+ );
339
+
340
+ const NO_CONTEXT_IN_SELECTION = makeCodeDefinition(
341
+ 'NO_CONTEXT_IN_SELECTION',
342
+ 'Selection in @fromContext field argument does not reference a context.',
343
+ { addedIn: '2.8.0' },
344
+ );
345
+
346
+ const CONTEXT_NO_RESOLVABLE_KEY = makeCodeDefinition(
347
+ 'CONTEXT_NO_RESOLVABLE_KEY',
348
+ 'If an ObjectType uses a @fromContext, at least one of its keys must be resolvable.',
349
+ { addedIn: '2.8.0' },
350
+ );
351
+
352
+ const CONTEXT_NAME_INVALID = makeCodeDefinition(
353
+ 'CONTEXT_NAME_INVALID',
354
+ 'Context name is invalid.',
355
+ { addedIn: '2.8.0' },
356
+ );
357
+
328
358
  const EXTERNAL_TYPE_MISMATCH = makeCodeDefinition(
329
359
  'EXTERNAL_TYPE_MISMATCH',
330
360
  'An `@external` field has a type that is incompatible with the declaration(s) of that field in other subgraphs.',
@@ -561,6 +591,125 @@ const INTERFACE_KEY_MISSING_IMPLEMENTATION_TYPE = makeCodeDefinition(
561
591
  { addedIn: '2.3.0' },
562
592
  )
563
593
 
594
+ const SOURCE_FEDERATION_VERSION_REQUIRED = makeCodeDefinition(
595
+ 'SOURCE_FEDERATION_VERSION_REQUIRED',
596
+ 'Schemas using `@source{API,Type,Field}` directives must @link-import v2.7 or later of federation',
597
+ { addedIn: '2.7.1' },
598
+ );
599
+
600
+ const SOURCE_API_NAME_INVALID = makeCodeDefinition(
601
+ 'SOURCE_API_NAME_INVALID',
602
+ 'Each `@sourceAPI` directive must take a unique and valid name as an argument',
603
+ { addedIn: '2.7.0' },
604
+ );
605
+
606
+ const SOURCE_API_PROTOCOL_INVALID = makeCodeDefinition(
607
+ 'SOURCE_API_PROTOCOL_INVALID',
608
+ 'Each `@sourceAPI` directive must specify exactly one of the known protocols',
609
+ { addedIn: '2.7.0' },
610
+ );
611
+
612
+ const SOURCE_API_HTTP_BASE_URL_INVALID = makeCodeDefinition(
613
+ 'SOURCE_API_HTTP_BASE_URL_INVALID',
614
+ 'The `@sourceAPI` directive must specify a valid http.baseURL',
615
+ { addedIn: '2.7.0' },
616
+ );
617
+
618
+ const SOURCE_HTTP_HEADERS_INVALID = makeCodeDefinition(
619
+ 'SOURCE_HTTP_HEADERS_INVALID',
620
+ 'The `http.headers` argument of `@source*` directives must specify valid HTTP headers',
621
+ { addedIn: '2.7.0' },
622
+ );
623
+
624
+ const SOURCE_TYPE_API_ERROR = makeCodeDefinition(
625
+ 'SOURCE_TYPE_API_ERROR',
626
+ 'The `api` argument of the `@sourceType` directive must match a valid `@sourceAPI` name',
627
+ { addedIn: '2.7.0' },
628
+ );
629
+
630
+ const SOURCE_TYPE_PROTOCOL_INVALID = makeCodeDefinition(
631
+ 'SOURCE_TYPE_PROTOCOL_INVALID',
632
+ 'The `@sourceType` directive must specify the same protocol as its corresponding `@sourceAPI`',
633
+ { addedIn: '2.7.0' },
634
+ );
635
+
636
+ const SOURCE_TYPE_HTTP_METHOD_INVALID = makeCodeDefinition(
637
+ 'SOURCE_TYPE_HTTP_METHOD_INVALID',
638
+ 'The `@sourceType` directive must specify exactly one of `http.GET` or `http.POST`',
639
+ { addedIn: '2.7.0' },
640
+ );
641
+
642
+ const SOURCE_TYPE_HTTP_PATH_INVALID = makeCodeDefinition(
643
+ 'SOURCE_TYPE_HTTP_PATH_INVALID',
644
+ 'The `@sourceType` directive must specify a valid URL template for `http.GET` or `http.POST`',
645
+ { addedIn: '2.7.0' },
646
+ );
647
+
648
+ const SOURCE_TYPE_HTTP_BODY_INVALID = makeCodeDefinition(
649
+ 'SOURCE_TYPE_HTTP_BODY_INVALID',
650
+ 'If the `@sourceType` specifies `http.body`, it must be a valid `JSONSelection`',
651
+ { addedIn: '2.7.0' },
652
+ );
653
+
654
+ const SOURCE_TYPE_ON_NON_OBJECT_OR_NON_ENTITY = makeCodeDefinition(
655
+ 'SOURCE_TYPE_ON_NON_OBJECT_OR_NON_ENTITY',
656
+ 'The `@sourceType` directive must be applied to an object or interface type that also has `@key`',
657
+ { addedIn: '2.7.0' },
658
+ );
659
+
660
+ const SOURCE_TYPE_SELECTION_INVALID = makeCodeDefinition(
661
+ 'SOURCE_TYPE_SELECTION_INVALID',
662
+ 'The `selection` argument of the `@sourceType` directive must be a valid `JSONSelection` that outputs fields of the GraphQL type',
663
+ );
664
+
665
+ const SOURCE_FIELD_API_ERROR = makeCodeDefinition(
666
+ 'SOURCE_FIELD_API_ERROR',
667
+ 'The `api` argument of the `@sourceField` directive must match a valid `@sourceAPI` name',
668
+ { addedIn: '2.7.0' },
669
+ );
670
+
671
+ const SOURCE_FIELD_PROTOCOL_INVALID = makeCodeDefinition(
672
+ 'SOURCE_FIELD_PROTOCOL_INVALID',
673
+ 'If `@sourceField` specifies a protocol, it must match the corresponding `@sourceAPI` protocol',
674
+ { addedIn: '2.7.0' },
675
+ );
676
+
677
+ const SOURCE_FIELD_HTTP_METHOD_INVALID = makeCodeDefinition(
678
+ 'SOURCE_FIELD_HTTP_METHOD_INVALID',
679
+ 'The `@sourceField` directive must specify at most one of `http.{GET,POST,PUT,PATCH,DELETE}`',
680
+ { addedIn: '2.7.0' },
681
+ );
682
+
683
+ const SOURCE_FIELD_HTTP_PATH_INVALID = makeCodeDefinition(
684
+ 'SOURCE_FIELD_HTTP_PATH_INVALID',
685
+ 'The `@sourceField` directive must specify a valid URL template for `http.{GET,POST,PUT,PATCH,DELETE}`',
686
+ { addedIn: '2.7.0' },
687
+ );
688
+
689
+ const SOURCE_FIELD_HTTP_BODY_INVALID = makeCodeDefinition(
690
+ 'SOURCE_FIELD_HTTP_BODY_INVALID',
691
+ 'If `@sourceField` specifies http.body, it must be a valid `JSONSelection` matching available arguments and fields',
692
+ { addedIn: '2.7.0' },
693
+ );
694
+
695
+ const SOURCE_FIELD_SELECTION_INVALID = makeCodeDefinition(
696
+ 'SOURCE_FIELD_SELECTION_INVALID',
697
+ 'The `selection` argument of the `@sourceField` directive must be a valid `JSONSelection` that outputs fields of the GraphQL type',
698
+ { addedIn: '2.7.0' },
699
+ );
700
+
701
+ const SOURCE_FIELD_NOT_ON_ROOT_OR_ENTITY_FIELD = makeCodeDefinition(
702
+ 'SOURCE_FIELD_NOT_ON_ROOT_OR_ENTITY_FIELD',
703
+ 'The `@sourceField` directive must be applied to a field of the `Query` or `Mutation` types, or of an entity type',
704
+ { addedIn: '2.7.0' },
705
+ );
706
+
707
+ const CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS = makeCodeDefinition(
708
+ 'CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS',
709
+ 'Argument on field is marked contextual in only some subgraphs',
710
+ { addedIn: '2.7.0' },
711
+ );
712
+
564
713
  export const ERROR_CATEGORIES = {
565
714
  DIRECTIVE_FIELDS_MISSING_EXTERNAL,
566
715
  DIRECTIVE_UNSUPPORTED_ON_INTERFACE,
@@ -603,6 +752,11 @@ export const ERRORS = {
603
752
  NO_QUERIES,
604
753
  INTERFACE_FIELD_NO_IMPLEM,
605
754
  TYPE_KIND_MISMATCH,
755
+ CONTEXT_NOT_SET,
756
+ CONTEXT_INVALID_SELECTION,
757
+ NO_CONTEXT_IN_SELECTION,
758
+ CONTEXT_NO_RESOLVABLE_KEY,
759
+ CONTEXT_NAME_INVALID,
606
760
  EXTERNAL_TYPE_MISMATCH,
607
761
  EXTERNAL_ARGUMENT_MISSING,
608
762
  EXTERNAL_ARGUMENT_TYPE_MISMATCH,
@@ -649,6 +803,27 @@ export const ERRORS = {
649
803
  INTERFACE_OBJECT_USAGE_ERROR,
650
804
  INTERFACE_KEY_NOT_ON_IMPLEMENTATION,
651
805
  INTERFACE_KEY_MISSING_IMPLEMENTATION_TYPE,
806
+ // Errors related to @sourceAPI, @sourceType, and/or @sourceField
807
+ SOURCE_FEDERATION_VERSION_REQUIRED,
808
+ SOURCE_API_NAME_INVALID,
809
+ SOURCE_API_PROTOCOL_INVALID,
810
+ SOURCE_API_HTTP_BASE_URL_INVALID,
811
+ SOURCE_HTTP_HEADERS_INVALID,
812
+ SOURCE_TYPE_API_ERROR,
813
+ SOURCE_TYPE_PROTOCOL_INVALID,
814
+ SOURCE_TYPE_HTTP_METHOD_INVALID,
815
+ SOURCE_TYPE_HTTP_PATH_INVALID,
816
+ SOURCE_TYPE_HTTP_BODY_INVALID,
817
+ SOURCE_TYPE_ON_NON_OBJECT_OR_NON_ENTITY,
818
+ SOURCE_TYPE_SELECTION_INVALID,
819
+ SOURCE_FIELD_API_ERROR,
820
+ SOURCE_FIELD_PROTOCOL_INVALID,
821
+ SOURCE_FIELD_HTTP_METHOD_INVALID,
822
+ SOURCE_FIELD_HTTP_PATH_INVALID,
823
+ SOURCE_FIELD_HTTP_BODY_INVALID,
824
+ SOURCE_FIELD_SELECTION_INVALID,
825
+ SOURCE_FIELD_NOT_ON_ROOT_OR_ENTITY_FIELD,
826
+ CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS,
652
827
  };
653
828
 
654
829
  const codeDefByCode = Object.values(ERRORS).reduce((obj: {[code: string]: ErrorCodeDefinition}, codeDef: ErrorCodeDefinition) => { obj[codeDef.code] = codeDef; return obj; }, {});
@@ -40,7 +40,7 @@ import { parseSelectionSet } from "./operations";
40
40
  import fs from 'fs';
41
41
  import path from 'path';
42
42
  import { validateStringContainsBoolean } from "./utils";
43
- import { errorCauses, printErrors } from ".";
43
+ import { CONTEXT_VERSIONS, ContextSpecDefinition, DirectiveDefinition, errorCauses, isFederationDirectiveDefinedInSchema, printErrors } from ".";
44
44
 
45
45
  function filteredTypes(
46
46
  supergraph: Schema,
@@ -193,7 +193,7 @@ function typesUsedInFederationDirective(fieldSet: string | undefined, parentType
193
193
  return usedTypes;
194
194
  }
195
195
 
196
- export function extractSubgraphsFromSupergraph(supergraph: Schema, validateExtractedSubgraphs: boolean = true): Subgraphs {
196
+ export function extractSubgraphsFromSupergraph(supergraph: Schema, validateExtractedSubgraphs: boolean = true): [Subgraphs, Map<string, string>] {
197
197
  const [coreFeatures, joinSpec] = validateSupergraph(supergraph);
198
198
  const isFed1 = joinSpec.version.equals(new FeatureVersion(0, 1));
199
199
  try {
@@ -212,6 +212,17 @@ export function extractSubgraphsFromSupergraph(supergraph: Schema, validateExtra
212
212
  return subgraph;
213
213
  };
214
214
 
215
+ const subgraphNameToGraphEnumValue = new Map<string, string>();
216
+ for (const [k, v] of graphEnumNameToSubgraphName.entries()) {
217
+ subgraphNameToGraphEnumValue.set(v, k);
218
+ }
219
+
220
+ const getSubgraphEnumValue = (subgraphName: string): string => {
221
+ const enumValue = subgraphNameToGraphEnumValue.get(subgraphName);
222
+ assert(enumValue, () => `Invalid subgraph name ${subgraphName} found: does not match a subgraph defined in the @join__Graph enum`);
223
+ return enumValue;
224
+ }
225
+
215
226
  const types = filteredTypes(supergraph, joinSpec, coreFeatures.coreDefinition);
216
227
  const args: ExtractArguments = {
217
228
  supergraph,
@@ -219,6 +230,7 @@ export function extractSubgraphsFromSupergraph(supergraph: Schema, validateExtra
219
230
  joinSpec,
220
231
  filteredTypes: types,
221
232
  getSubgraph,
233
+ getSubgraphEnumValue,
222
234
  };
223
235
  if (isFed1) {
224
236
  extractSubgraphsFromFed1Supergraph(args);
@@ -241,7 +253,7 @@ export function extractSubgraphsFromSupergraph(supergraph: Schema, validateExtra
241
253
  }
242
254
  }
243
255
 
244
- return subgraphs;
256
+ return [subgraphs, subgraphNameToGraphEnumValue];
245
257
  } catch (e) {
246
258
  let error = e;
247
259
  let subgraph: Subgraph | undefined = undefined;
@@ -281,6 +293,7 @@ type ExtractArguments = {
281
293
  joinSpec: JoinSpecDefinition,
282
294
  filteredTypes: NamedType[],
283
295
  getSubgraph: (application: Directive<any, { graph?: string }>) => Subgraph | undefined,
296
+ getSubgraphEnumValue: (subgraphName: string) => string
284
297
  }
285
298
 
286
299
  type SubgraphTypeInfo<T extends NamedType> = Map<string, { type: T, subgraph: Subgraph }>;
@@ -297,12 +310,13 @@ type TypesInfo = {
297
310
  unionTypes: TypeInfo<UnionType>[],
298
311
  };
299
312
 
300
- function addAllEmptySubgraphTypes({
301
- supergraph,
302
- joinSpec,
303
- filteredTypes,
304
- getSubgraph,
305
- }: ExtractArguments): TypesInfo {
313
+ function addAllEmptySubgraphTypes(args: ExtractArguments): TypesInfo {
314
+ const {
315
+ supergraph,
316
+ joinSpec,
317
+ filteredTypes,
318
+ getSubgraph,
319
+ } = args;
306
320
  const typeDirective = joinSpec.typeDirective(supergraph);
307
321
 
308
322
  const objOrItfTypes: TypeInfo<ObjectType | InterfaceType>[] = [];
@@ -316,16 +330,16 @@ function addAllEmptySubgraphTypes({
316
330
  // (on top of it making sense code-wise since both type behave exactly the same for most of what we're doing here).
317
331
  case 'InterfaceType':
318
332
  case 'ObjectType':
319
- objOrItfTypes.push({ type, subgraphsInfo: addEmptyType(type, type.appliedDirectivesOf(typeDirective), getSubgraph) });
333
+ objOrItfTypes.push({ type, subgraphsInfo: addEmptyType(type, type.appliedDirectivesOf(typeDirective), args) });
320
334
  break;
321
335
  case 'InputObjectType':
322
- inputObjTypes.push({ type, subgraphsInfo: addEmptyType(type, type.appliedDirectivesOf(typeDirective), getSubgraph) });
336
+ inputObjTypes.push({ type, subgraphsInfo: addEmptyType(type, type.appliedDirectivesOf(typeDirective), args) });
323
337
  break;
324
338
  case 'EnumType':
325
- enumTypes.push({ type, subgraphsInfo: addEmptyType(type, type.appliedDirectivesOf(typeDirective), getSubgraph) });
339
+ enumTypes.push({ type, subgraphsInfo: addEmptyType(type, type.appliedDirectivesOf(typeDirective), args) });
326
340
  break;
327
341
  case 'UnionType':
328
- unionTypes.push({ type, subgraphsInfo: addEmptyType(type, type.appliedDirectivesOf(typeDirective), getSubgraph) });
342
+ unionTypes.push({ type, subgraphsInfo: addEmptyType(type, type.appliedDirectivesOf(typeDirective), args) });
329
343
  break;
330
344
  case 'ScalarType':
331
345
  // Scalar are a bit special in that they don't have any sub-component, so we don't track them beyond adding them to the
@@ -350,8 +364,9 @@ function addAllEmptySubgraphTypes({
350
364
  function addEmptyType<T extends NamedType>(
351
365
  type: T,
352
366
  typeApplications: Directive<T, JoinTypeDirectiveArguments>[],
353
- getSubgraph: (application: Directive<any, { graph?: string }>) => Subgraph | undefined,
367
+ args: ExtractArguments,
354
368
  ): SubgraphTypeInfo<T> {
369
+ const { supergraph, getSubgraph, getSubgraphEnumValue } = args;
355
370
  // In fed2, we always mark all types with `@join__type` but making sure.
356
371
  assert(typeApplications.length > 0, `Missing @join__type on ${type}`)
357
372
  const subgraphsInfo: SubgraphTypeInfo<T> = new Map<string, { type: T, subgraph: Subgraph }>();
@@ -382,6 +397,33 @@ function addEmptyType<T extends NamedType>(
382
397
  }
383
398
  }
384
399
  }
400
+
401
+ const coreFeatures = supergraph.coreFeatures;
402
+ assert(coreFeatures, 'Should have core features');
403
+ const contextFeature = coreFeatures.getByIdentity(ContextSpecDefinition.identity);
404
+ let supergraphContextDirective: DirectiveDefinition<{ name: string}> | undefined;
405
+ if (contextFeature) {
406
+ const contextSpec = CONTEXT_VERSIONS.find(contextFeature.url.version);
407
+ assert(contextSpec, 'Should have context spec');
408
+ supergraphContextDirective = contextSpec.contextDirective(supergraph);
409
+ }
410
+
411
+ if (supergraphContextDirective) {
412
+ const contextApplications = type.appliedDirectivesOf(supergraphContextDirective);
413
+ // for every application, apply the context directive to the correct subgraph
414
+ for (const application of contextApplications) {
415
+ const { name } = application.arguments();
416
+ const match = name.match(/^(.*)__([A-Za-z]\w*)$/);
417
+ const graph = match ? match[1] : undefined;
418
+ const context = match ? match[2] : undefined;
419
+ assert(graph, `Invalid context name ${name} found in ${application} on ${application.parent}: does not match the expected pattern`);
420
+ const subgraphInfo = subgraphsInfo.get(getSubgraphEnumValue(graph));
421
+ const contextDirective = subgraphInfo?.subgraph.metadata().contextDirective();
422
+ if (subgraphInfo && contextDirective && isFederationDirectiveDefinedInSchema(contextDirective)) {
423
+ subgraphInfo.type.applyDirective(contextDirective, {name: context});
424
+ }
425
+ }
426
+ }
385
427
  return subgraphsInfo;
386
428
  }
387
429
 
@@ -610,6 +652,26 @@ function addSubgraphField({
610
652
  if (joinFieldArgs?.provides) {
611
653
  subgraphField.applyDirective(subgraph.metadata().providesDirective(), {'fields': joinFieldArgs.provides});
612
654
  }
655
+ if (joinFieldArgs?.contextArguments) {
656
+ const fromContextDirective = subgraph.metadata().fromContextDirective();
657
+ if (!isFederationDirectiveDefinedInSchema(fromContextDirective)) {
658
+ throw new Error(`@fromContext directive is not defined in the subgraph schema: ${subgraph.name}`);
659
+ } else {
660
+ for (const arg of joinFieldArgs.contextArguments) {
661
+ // this code will remove the subgraph name from the context
662
+ const match = arg.context.match(/^.*__([A-Za-z]\w*)$/);
663
+ if (!match) {
664
+ throw new Error(`Invalid context argument: ${arg.context}`);
665
+ }
666
+
667
+ subgraphField.addArgument(arg.name, decodeType(arg.type, subgraph.schema, subgraph.name));
668
+ const argOnField = subgraphField.argument(arg.name);
669
+ argOnField?.applyDirective(fromContextDirective, {
670
+ field: `\$${match[1]} ${arg.selection}`,
671
+ });
672
+ }
673
+ }
674
+ }
613
675
  const external = !!joinFieldArgs?.external;
614
676
  if (external) {
615
677
  subgraphField.applyDirective(subgraph.metadata().externalDirective());