@graphql-tools/federation 4.3.0 → 4.3.1-alpha-bcdf6a1333a84f3ead114d676e66e609c350e084

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @graphql-tools/federation
2
2
 
3
+ ## 4.3.1-alpha-bcdf6a1333a84f3ead114d676e66e609c350e084
4
+ ### Patch Changes
5
+
6
+
7
+
8
+ - [#2106](https://github.com/graphql-hive/gateway/pull/2106) [`bcdf6a1`](https://github.com/graphql-hive/gateway/commit/bcdf6a1333a84f3ead114d676e66e609c350e084) Thanks [@ardatan](https://github.com/ardatan)! - - Optimizations to select ONLY required fields when fetching the missing fields from other subgraphs
9
+ - Do not try to resolve types from the subschemas which only have the stub types, for example if a subgraph only has `id` field as a stub, do not use that subgraph as a target subgraph for resolving the type, because it will not have any other fields than `id`.
10
+ - Updated dependencies [[`bcdf6a1`](https://github.com/graphql-hive/gateway/commit/bcdf6a1333a84f3ead114d676e66e609c350e084)]:
11
+ - @graphql-tools/delegate@12.0.12-alpha-bcdf6a1333a84f3ead114d676e66e609c350e084
12
+ - @graphql-tools/stitch@10.1.16-alpha-bcdf6a1333a84f3ead114d676e66e609c350e084
13
+ - @graphql-tools/wrap@11.1.12-alpha-bcdf6a1333a84f3ead114d676e66e609c350e084
14
+
3
15
  ## 4.3.0
4
16
  ### Minor Changes
5
17
 
package/dist/index.cjs CHANGED
@@ -447,27 +447,6 @@ function getStitchingOptionsFromSupergraphSdl(opts) {
447
447
  );
448
448
  if (joinTypeGraphArgNode?.value?.kind === graphql.Kind.ENUM) {
449
449
  const graphName = joinTypeGraphArgNode.value.value;
450
- if (typeNode.kind === graphql.Kind.OBJECT_TYPE_DEFINITION || typeNode.kind === graphql.Kind.INTERFACE_TYPE_DEFINITION) {
451
- const keyArgumentNode = directiveNode.arguments?.find(
452
- (argumentNode) => argumentNode.name.value === "key"
453
- );
454
- const isResolvable = !directiveNode.arguments?.some(
455
- (argumentNode) => argumentNode.name.value === "resolvable" && argumentNode.value?.kind === graphql.Kind.BOOLEAN && argumentNode.value.value === false
456
- );
457
- if (isResolvable && keyArgumentNode?.value?.kind === graphql.Kind.STRING) {
458
- let typeNameKeysMap = typeNameKeysBySubgraphMap.get(graphName);
459
- if (!typeNameKeysMap) {
460
- typeNameKeysMap = /* @__PURE__ */ new Map();
461
- typeNameKeysBySubgraphMap.set(graphName, typeNameKeysMap);
462
- }
463
- let keys = typeNameKeysMap.get(typeNode.name.value);
464
- if (!keys) {
465
- keys = [];
466
- typeNameKeysMap.set(typeNode.name.value, keys);
467
- }
468
- keys.push(keyArgumentNode.value.value);
469
- }
470
- }
471
450
  const fieldDefinitionNodesOfSubgraph = [];
472
451
  typeNode.fields?.forEach((fieldNode) => {
473
452
  const joinFieldDirectives = fieldNode.directives?.filter(
@@ -721,6 +700,34 @@ function getStitchingOptionsFromSupergraphSdl(opts) {
721
700
  graphName,
722
701
  fieldDefinitionNodesOfSubgraph
723
702
  );
703
+ if (typeNode.kind === graphql.Kind.OBJECT_TYPE_DEFINITION || typeNode.kind === graphql.Kind.INTERFACE_TYPE_DEFINITION) {
704
+ const keyArgumentNode = directiveNode.arguments?.find(
705
+ (argumentNode) => argumentNode.name.value === "key"
706
+ );
707
+ const isResolvable = !directiveNode.arguments?.some(
708
+ (argumentNode) => argumentNode.name.value === "resolvable" && argumentNode.value?.kind === graphql.Kind.BOOLEAN && argumentNode.value.value === false
709
+ );
710
+ if (keyArgumentNode?.value?.kind === graphql.Kind.STRING) {
711
+ const keyArgVal = keyArgumentNode.value.value;
712
+ if (isResolvable) {
713
+ if (typeNode.kind !== graphql.Kind.OBJECT_TYPE_DEFINITION || !fieldDefinitionNodesOfSubgraph.every(
714
+ (fieldDefNode) => keyArgVal.includes(fieldDefNode.name.value)
715
+ )) {
716
+ let typeNameKeysMap = typeNameKeysBySubgraphMap.get(graphName);
717
+ if (!typeNameKeysMap) {
718
+ typeNameKeysMap = /* @__PURE__ */ new Map();
719
+ typeNameKeysBySubgraphMap.set(graphName, typeNameKeysMap);
720
+ }
721
+ let keys = typeNameKeysMap.get(typeNode.name.value);
722
+ if (!keys) {
723
+ keys = [];
724
+ typeNameKeysMap.set(typeNode.name.value, keys);
725
+ }
726
+ keys.push(keyArgVal);
727
+ }
728
+ }
729
+ }
730
+ }
724
731
  }
725
732
  }
726
733
  });
package/dist/index.js CHANGED
@@ -445,27 +445,6 @@ function getStitchingOptionsFromSupergraphSdl(opts) {
445
445
  );
446
446
  if (joinTypeGraphArgNode?.value?.kind === Kind.ENUM) {
447
447
  const graphName = joinTypeGraphArgNode.value.value;
448
- if (typeNode.kind === Kind.OBJECT_TYPE_DEFINITION || typeNode.kind === Kind.INTERFACE_TYPE_DEFINITION) {
449
- const keyArgumentNode = directiveNode.arguments?.find(
450
- (argumentNode) => argumentNode.name.value === "key"
451
- );
452
- const isResolvable = !directiveNode.arguments?.some(
453
- (argumentNode) => argumentNode.name.value === "resolvable" && argumentNode.value?.kind === Kind.BOOLEAN && argumentNode.value.value === false
454
- );
455
- if (isResolvable && keyArgumentNode?.value?.kind === Kind.STRING) {
456
- let typeNameKeysMap = typeNameKeysBySubgraphMap.get(graphName);
457
- if (!typeNameKeysMap) {
458
- typeNameKeysMap = /* @__PURE__ */ new Map();
459
- typeNameKeysBySubgraphMap.set(graphName, typeNameKeysMap);
460
- }
461
- let keys = typeNameKeysMap.get(typeNode.name.value);
462
- if (!keys) {
463
- keys = [];
464
- typeNameKeysMap.set(typeNode.name.value, keys);
465
- }
466
- keys.push(keyArgumentNode.value.value);
467
- }
468
- }
469
448
  const fieldDefinitionNodesOfSubgraph = [];
470
449
  typeNode.fields?.forEach((fieldNode) => {
471
450
  const joinFieldDirectives = fieldNode.directives?.filter(
@@ -719,6 +698,34 @@ function getStitchingOptionsFromSupergraphSdl(opts) {
719
698
  graphName,
720
699
  fieldDefinitionNodesOfSubgraph
721
700
  );
701
+ if (typeNode.kind === Kind.OBJECT_TYPE_DEFINITION || typeNode.kind === Kind.INTERFACE_TYPE_DEFINITION) {
702
+ const keyArgumentNode = directiveNode.arguments?.find(
703
+ (argumentNode) => argumentNode.name.value === "key"
704
+ );
705
+ const isResolvable = !directiveNode.arguments?.some(
706
+ (argumentNode) => argumentNode.name.value === "resolvable" && argumentNode.value?.kind === Kind.BOOLEAN && argumentNode.value.value === false
707
+ );
708
+ if (keyArgumentNode?.value?.kind === Kind.STRING) {
709
+ const keyArgVal = keyArgumentNode.value.value;
710
+ if (isResolvable) {
711
+ if (typeNode.kind !== Kind.OBJECT_TYPE_DEFINITION || !fieldDefinitionNodesOfSubgraph.every(
712
+ (fieldDefNode) => keyArgVal.includes(fieldDefNode.name.value)
713
+ )) {
714
+ let typeNameKeysMap = typeNameKeysBySubgraphMap.get(graphName);
715
+ if (!typeNameKeysMap) {
716
+ typeNameKeysMap = /* @__PURE__ */ new Map();
717
+ typeNameKeysBySubgraphMap.set(graphName, typeNameKeysMap);
718
+ }
719
+ let keys = typeNameKeysMap.get(typeNode.name.value);
720
+ if (!keys) {
721
+ keys = [];
722
+ typeNameKeysMap.set(typeNode.name.value, keys);
723
+ }
724
+ keys.push(keyArgVal);
725
+ }
726
+ }
727
+ }
728
+ }
722
729
  }
723
730
  }
724
731
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@graphql-tools/federation",
3
- "version": "4.3.0",
3
+ "version": "4.3.1-alpha-bcdf6a1333a84f3ead114d676e66e609c350e084",
4
4
  "type": "module",
5
5
  "description": "Useful tools to create and manipulate GraphQL schemas.",
6
6
  "repository": {
@@ -38,14 +38,14 @@
38
38
  "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
39
39
  },
40
40
  "dependencies": {
41
- "@graphql-tools/delegate": "^12.0.11",
41
+ "@graphql-tools/delegate": "12.0.12-alpha-bcdf6a1333a84f3ead114d676e66e609c350e084",
42
42
  "@graphql-tools/executor": "^1.4.13",
43
43
  "@graphql-tools/executor-http": "^3.1.1",
44
44
  "@graphql-tools/merge": "^9.1.5",
45
45
  "@graphql-tools/schema": "^10.0.29",
46
- "@graphql-tools/stitch": "^10.1.15",
46
+ "@graphql-tools/stitch": "10.1.16-alpha-bcdf6a1333a84f3ead114d676e66e609c350e084",
47
47
  "@graphql-tools/utils": "^11.0.0",
48
- "@graphql-tools/wrap": "^11.1.11",
48
+ "@graphql-tools/wrap": "11.1.12-alpha-bcdf6a1333a84f3ead114d676e66e609c350e084",
49
49
  "@graphql-yoga/typed-event-target": "^3.0.2",
50
50
  "@whatwg-node/disposablestack": "^0.0.6",
51
51
  "@whatwg-node/events": "^0.1.2",