-
-
Notifications
You must be signed in to change notification settings - Fork 809
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Federation: handle shared root fields in optimal way (#6188)
* chore(dependencies): updated changesets for modified dependencies * chore(dependencies): updated changesets for modified dependencies * Federation: handle shared root fields in optimal way --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
- Loading branch information
1 parent
dfccfbf
commit e10c13a
Showing
10 changed files
with
271 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
"@graphql-tools/delegate": patch | ||
--- | ||
|
||
Add `subtractSelectionSets` to get the diff of two selection sets |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
"@graphql-tools/utils": patch | ||
--- | ||
|
||
Add `respectArrayLength` flag to `mergeDeep` so instead of concatenating the arrays, elements of them will be merged if they have the same length |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
"@graphql-tools/stitch": patch | ||
--- | ||
|
||
Handle nested selections in `calculateSelectionScore` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
"@graphql-tools/federation": patch | ||
--- | ||
|
||
If two different subschemas have the root field, use the same field to resolve missing fields instead of applying a type merging in advance |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
61 changes: 61 additions & 0 deletions
61
packages/federation/test/fixtures/federation-compatibility/shared-root/supergraph.graphql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
schema | ||
@link(url: "https://specs.apollo.dev/link/v1.0") | ||
@link(url: "https://specs.apollo.dev/join/v0.3", for: EXECUTION) | ||
{ | ||
query: Query | ||
} | ||
|
||
directive @join__enumValue(graph: join__Graph!) repeatable on ENUM_VALUE | ||
|
||
directive @join__field(graph: join__Graph, requires: join__FieldSet, provides: join__FieldSet, type: String, external: Boolean, override: String, usedOverridden: Boolean) repeatable on FIELD_DEFINITION | INPUT_FIELD_DEFINITION | ||
|
||
directive @join__graph(name: String!, url: String!) on ENUM_VALUE | ||
|
||
directive @join__implements(graph: join__Graph!, interface: String!) repeatable on OBJECT | INTERFACE | ||
|
||
directive @join__type(graph: join__Graph!, key: join__FieldSet, extension: Boolean! = false, resolvable: Boolean! = true, isInterfaceObject: Boolean! = false) repeatable on OBJECT | INTERFACE | UNION | ENUM | INPUT_OBJECT | SCALAR | ||
|
||
directive @join__unionMember(graph: join__Graph!, member: String!) repeatable on UNION | ||
|
||
directive @link(url: String, as: String, for: link__Purpose, import: [link__Import]) repeatable on SCHEMA | ||
|
||
scalar join__FieldSet | ||
|
||
enum join__Graph { | ||
CATEGORY @join__graph(name: "category", url: "https://federation-compatibility.the-guild.dev/shared-root/category") | ||
NAME @join__graph(name: "name", url: "https://federation-compatibility.the-guild.dev/shared-root/name") | ||
PRICE @join__graph(name: "price", url: "https://federation-compatibility.the-guild.dev/shared-root/price") | ||
} | ||
|
||
scalar link__Import | ||
|
||
enum link__Purpose { | ||
""" | ||
`SECURITY` features provide metadata necessary to securely resolve fields. | ||
""" | ||
SECURITY | ||
|
||
""" | ||
`EXECUTION` features provide metadata necessary for operation execution. | ||
""" | ||
EXECUTION | ||
} | ||
|
||
type Product | ||
@join__type(graph: CATEGORY, key: "id") | ||
@join__type(graph: NAME, key: "id") | ||
@join__type(graph: PRICE, key: "id") | ||
{ | ||
id: ID! | ||
category: String @join__field(graph: CATEGORY) | ||
name: String @join__field(graph: NAME) | ||
price: Float @join__field(graph: PRICE) | ||
} | ||
|
||
type Query | ||
@join__type(graph: CATEGORY) | ||
@join__type(graph: NAME) | ||
@join__type(graph: PRICE) | ||
{ | ||
product: Product | ||
} |
15 changes: 15 additions & 0 deletions
15
packages/federation/test/fixtures/federation-compatibility/shared-root/tests.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
[ | ||
{ | ||
"query": "\n query {\n product {\n id\n name\n category\n price\n }\n }\n ", | ||
"expected": { | ||
"data": { | ||
"product": { | ||
"id": "1", | ||
"name": "Product 1", | ||
"price": 100, | ||
"category": "Category 1" | ||
} | ||
} | ||
} | ||
} | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters