This CHANGELOG pertains only to Apollo Federation packages in the 2.x range. The Federation v0.x equivalent for this package can be found here on the version-0.x branch of this repo.
vNEXT
The changes noted within this vNEXT section have not been released yet. New PRs and commits which introduce changes should include an entry in this vNEXT section as part of their development. When a release is being prepared, a new header will be (manually) created below and the appropriate changes within that release will be moved into the new section.
Use specific error classes when throwing errors due Apollo Uplink being unreacheable or returning an invalid response [PR #1473](apollographql/federation#1473)
Reject mismatching types for interface field implementation if some of those implementations are @external, since this can lead to invalid subgraph queries at runtime [PR #1318](apollographql/federation#1318). This limitation should be lifted in the future once the root cause (the invalid runtime queries) is fixed by issue #1257.
BREAKING: This change improves the supergraphSdl configuration option to provide a clean and flexible interface for updating gateway schema on load and at runtime. This PR brings a number of updates and deprecations to the gateway. Previous options for loading the gateway's supergraph (serviceList, localServiceList, experimental_updateServiceDefinitions, experimental_supergraphSdl) are all deprecated going forward. The migration paths all point to the updated supergraphSdl configuration option.
The most notable change here is the introduction of the concept of a SupergraphManager (one new possible type of supergraphSdl). This interface (when implemented) provides a means for userland code to update the gateway supergraph dynamically, perform subgraph healthchecks, and access subgraph datasources. All of the mentioned deprecated configurations now either use an implementation of a SupergraphManager internally or export one to be configured by the user (IntrospectAndCompose and LocalCompose).
For now: all of the mentioned deprecated configurations will still continue to work as expected. Their usage will come with deprecation warnings advising a switch to supergraphSdl.
serviceList users should switch to the now-exported IntrospectAndCompose class.
localServiceList users should switch to the similar LocalCompose class.
experimental_{updateServiceDefinitions|supergraphSdl} users should migrate their implementation to a custom SupergraphSdlHook or SupergraphManager.
Since the gateway itself is no longer responsible for composition:
experimental_didUpdateComposition has been renamed more appropriately to experimental_didUpdateSupergraph (no signature change)
experimental_compositionDidFail hook is removed
experimental_pollInterval is deprecated and will issue a warning. Its renamed equivalent is pollIntervalInMs.
Some defensive code around gateway shutdown has been removed which was only relevant to users who are running the gateway within ApolloServer before v2.18. If you are still running one of these versions, server shutdown may not happen as smoothly.
NOOP: Fix OOB testing w.r.t. nock hygiene. Pushed error reporting endpoint responsibilities up into the gateway class, but there should be no effect on the runtime at all. [PR #1309](apollographql/federation#1309)
Multi-cloud Uplink capability [PR #1283](apollographql/federation#1283): now, by default two separate Uplink services will be used for schema fetching, the system will round-robin and if one service fails, a retry will occur and the other service will be called.
The Uplink URLs are https://uplink.api.apollographql.com/ (GCP) and https://aws.uplink.api.apollographql.com/ (AWS).
To override these defaults and configure what Uplink services, there are two options:
Option #1: use the existing environment variable APOLLO_SCHEMA_CONFIG_DELIVERY_ENDPOINT which will now be treated as a comma-separated list of URLs.
Option #2: use the new uplinkEndpoints, which must be single URL or a comma-separated list of URLs for the Uplink End-points to be used, and uplinkMaxRetries which is how many times the Uplink URLs should be retried.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps @apollo/gateway from 0.37.0 to 0.48.1.
Changelog
Sourced from
@apollo/gateway
's changelog.... (truncated)
Commits
50e54e6
Releasedea4f47
fix(gateway): Resolve gateway retry issues (`UplinkFetcher failed to update.....2948312
fix(subgraph): FixGraphQLResolverMap
types - allowargs
fields to be typ...68f25ff
Merge pull request #1497 from apollographql/trevor/backport-147387449e1
Releaseed4f152
Fix TS / runtime errors while usinggraphql@15
(#1482)55189c4
Releaseea27a48
Add note to changelogs pointing to v2 versions0f1a1a9
Update changelogs072a03c
Renovate/version-0.x-graphql-16.x (#1428)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)