This CHANGELOG pertains only to Apollo Federation packages in the 0.x
range. There is no Federation v2 equivalent for this package.
- Expand support for Node.js v18 PR #1884
- Composition will detect and error if it finds fed2 subgraphs PR #1723.
- Support for Node 17 PR #1648.
- Fixes type incompatibility issue with graphql15. PR #1585
- Fixes composition error when @provides is combined with @key which references an external field PR #1604
- Updates to transitive dependencies. No other substantial changes.
- Updates to transitive dependencies. No other substantial changes.
- BREAKING Bump graphql@15 peer to ^15.8.0. Backport
ASTVisitFn
type from graphql@16 PR #1482
- Expand graphql peer dependency to include
^16.0.0
PR #1428.
- Fix a bug that would prevent types with similar field arguments from being composed as value types PR #1298
- Print
@contact
directive inprintSubgraphSchema
PR #1096
- Fix a bug in directive merging logic during composition PR #1185
- Update graphql rule imports to support graphql@16 users PR #1202
- Updates to transitive dependencies. No other substantial changes.
- Updates to transitive dependencies. No other substantial changes.
- Updates to transitive dependencies. No other substantial changes.
- Updates to transitive dependencies. No other substantial changes.
- Refine internal types to
FieldSet
s in places where we previously usedSelectionNode[]
PR #1030 - Emit a deprecation warning for deprecated functions. We would advise to adjust the code to use the new functionality, as the deprecated functions will be removed in a future version. If needed, deprecation warnings can be muted with either the --no-deprecation or --no-warnings command-line flags for node.js. Please keep in mind in doing so will also prevent any future deprecation warnings from node.js itself as well as from any package.PR #1033.
- Add flexibility for @tag directive definition validation in subgraphs. @tag definitions are now permitted to be a subset of the spec's definition. This means that within the definition,
repeatable
is optional as are each of the directive locations. PR #1022
- BREAKING: This is a breaking change due to a
peerDependencies
update (graphql@^15.4.0
->graphql@^15.5.3
). Thisgraphql
version includes a fix which resolves an issue which prevented the correct propagation of@deprecated
usages on input type object fields into the printed subgraph schema. This can be considered a follow-up to PR #996, which previously attempted to propagate @deprecated on ALL input values. PR #1008
- Remove composition responsibilities from supergraph printer. Fix schema sorting for sub- and super-graphs. PR #1000
- Update our subgraph and supergraph schema printers to match the printSchema function from graphql-js as closely as possible. Introduce printing capabilities for the @specifiedBy directive as well as @deprecated on input values. PR #996
- Introduce
@core/v0.2
support with thefor:
directive argument which was introduced to the core specification in specs-core#9. For users ofprintSupergraphSdl
, the output of that command will now be a@core/v0.2
schema which is only compatible with@apollo/gateway0.39.0
(or newer) versions. The newly introducedfor:
argument allows a@core
directive to specify its criticality to any consumer (including, and most importantly right now, the Gateway itself). Thefor:
argument is optional - its absence means that the directive requires no additional support from the consumer. Its two available options -EXECUTION
andSECURITY
- both require explicit support from the consumer, else the consumer should fail to start / update to this unsupported schema. For more information on supergraphs see our documentation or learn how to generate them in our federation quickstart. PR #957
- DEPRECATION: Rename
buildFederatedSchema
tobuildSubgraphSchema
. The previous name will continue to be supported but is deprecated. No functional change, usages ofbuildFederatedSchema
should just be replaced withbuildSubgraphSchema
. PR #915 - BREAKING: Support @tag directive on Object, Interface, and Union types. This is a breaking change for current @tag users, as one of the validations was updated. Existing @tag definitions must now accomodate the additional locations
OBJECT | INTERFACE | UNION
. Usages of the @tag directive are rolled up indiscriminately during composition, just as they currently are with fields. For example, a @tag usage on an entity extension will end up in the supergraph alongside any other @tag usages on the same entity in other subgraphs. PR #945
- When resolving the
Query._entities
field, honor@cacheControl
directives on the object types that are members of the_Entity
union. This feature is only enabled when your subgraph is running Apollo Server 3.0.2 or later. PR #870 Related docs PR
- Narrow
graphql
peer dependency to a more fitting range^15.4.0
based on our current usage of the package. This requirement was introduced by, but not captured in, changes within the recently released@apollo/federation@0.27.0
. As such, this change will be released as apatch
since the breaking change already accidentally happened and this is a correction to that oversight. PR #913
- Skip missing types while iterating over field directive usages. It's possible to capture directive usages on fields whose types don't actually exist in the schema (due to invalid composition). See PR for more details. PR #868
- Disregard @inaccessible directive in subgraphs. This is a bit of a retrace on a previous decision. @inaccessible will now be achieved strictly through a combination of @tag and Studio usage. PR #880
- Require a @tag directive definition in subgraphs when there are @tag usages. PR #882
- Capture and propagate
@tag
and@inaccessible
directives during composition from subgraph to supergraph SDL. This unblocks upcoming work for schema construction, schema filtering (API schemas), and future Studio features. PR #756
- Sort composed schema using graphql-js's
lexicographicSortSchema
for schema ordering determinism independent of serviceList ordering. PR #824
ASTNodeWithDirectives
now includes all AST nodes with thedirectives
field on it. PR #755
- Add
repeatable
keyword to the @key directive in federation spec. PR #758
- Composition errors now include
locations
corresponding to the line number & column in the subgraph SDL. PR #686
- Expand the range of supported
node
versions in the package'sengines
specifier to include the now-tested Node.js16
. PR #713
- Remove lingering
core-js
polyfill imports, they're no longer needed (since@apollo/gateway@0.15.0
dropped support for <= Node.js v10) and their presence is problematic sincecore-js
isn't defined as a dependency within the package. Updateapollo-graphql
dependency which resolves a missing dependency (sha.js
) within that package. PR #699
- This change is mostly a set of follow-up changes for PR #622. Most of these changes are internal (renaming, etc.). Some noteworthy changes worth mentioning are: a switch to graphql-js's
stripIgnoredCharacters
during field set printing, an update to thejoin__Enum
generation algorithm, and some additional assertions. PR #656
- BREAKING - Update CSDL to the new core schema format, implementing the currently-being-introduced core and join specs.
composeAndValidate
now returnssupergraphSdl
in the new format instead ofcomposedSdl
in the previous CSDL format. PR #622
- No changes to the package itself, though there are some small changes to the way this package is compiled and the tests within this package due to the changes in PR #453
- Fix an erroneous
break
tocontinue
, follow-up fix for #478 PR #481
- Ignore thrown errors from
extendSchema
during composition (these particular errors are already validated against and returned as composition errors) PR #478
- BREAKING: Drop support for Node.js 8 and Node.js 10. This package now only targets Node.js 12+ LTS (Long-Term Support) versions, the same as
@apollo/gateway
, which first received this treatment in apollographql/apollo-server#4031. Node.js 8 has already lapsed from the Node.js Foundation's LTS schedule and Node.js 10 (in Maintenance LTS right now) is targeted to be end-of-life'd (EOL) at the end of April 2021. PR #311 - Export
GraphQLSchemaModule
type. PR #293 - BREAKING: Remove
ComposedGraphQLSchema
type as it's no longer needed. This is breaking because it was part of the public API, though we strongly believe nobody was or should have had any need for this type. UpdatecomposeAndValidate
function signature for better typing, and align thecompose
function signature with that ofcomposeAndValidate
PR #278
- Fix check for value types when having fields and arguments with the same name PR #280
- No changes, but please note that
v0.20.5
was a botched release, with no update to the@apollo/query-planner-wasm
package that was needed. If you're seeing an error similar toThis data graph is missing a valid configuration. unreachable
, please upgrade to at least this patch release.
- Apply
repeatable
keyword to CSDL schema directives@key
and `@graph. PR #285
- Only changes in the similarly versioned
@apollo/gateway
package.
- Fix warning for non-matching
@external
types when the declaration's type is non-null or a list PR #4392
- Only changes in the similarly versioned
@apollo/gateway
package.
- Only changes in the similarly versioned
@apollo/gateway
package.
- FIX: CSDL complex
@key
s shouldn't result in an unparseable document PR #4490 - FIX: Value type validations - restrict unions, scalars, enums PR #4496
- FIX: Composition - aggregate interfaces for types and interfaces in composed schema PR #4497
- FIX: Create new
@key
validations to prevent invalid compositions PR #4498 - CSDL: make
fields
directive args parseable PR #4489
- Include new directive definitions in CSDL PR #4452
- New federation composition format. Capture federation metadata in SDL PR #4405
- Only changes in the similarly versioned
@apollo/gateway
package.
- Only changes in the similarly versioned
@apollo/gateway
package.
- Only changes in the similarly versioned
@apollo/gateway
package.
- Reinstate typings for
make-fetch-happen
at theapollo-gateway
project level (and now, additionally,apollo-server-plugin-operation-registry
) PR #4333
- The default branch of the repository has been changed to
main
. As this changed a number of references in the repository'spackage.json
andREADME.md
files (e.g., for badges, links, etc.), this necessitates a release to publish those changes to npm. PR #4302 - BREAKING: Move federation metadata from custom objects on schema nodes over to the
extensions
field on schema nodes which are intended for metadata. This is a breaking change because it narrows thegraphql
peer dependency from^14.0.2
to^14.5.0
which is whenextensions
were introduced for all Type System objects. PR #4302
- Handle
@external
validation edge case for interface implementors #4284
- Only changes in the similarly versioned
@apollo/gateway
package.
- In-house
Maybe
type which was previously imported fromgraphql
and has been moved inv15.1.0
. #4230 - Remove remaining common primitives from SDL during composition. This is a follow up to #4209, and additionally removes directives which are included in a schema by default (
@skip
,@include
,@deprecated
, and@specifiedBy
) #4228
- Remove federation primitives from SDL during composition. This allows for services to report their full SDL from the
{ _service { sdl } }
query as opposed to the previously limited SDL without federation definitions. #4209
- Only changes in the similarly versioned
@apollo/gateway
package.
- Only changes in the similarly versioned
@apollo/gateway
package.
- Only changes in the similarly versioned
@apollo/gateway
package.
- Only changes in the similarly versioned
@apollo/gateway
package.
- No changes. This package was major versioned to maintain lockstep versioning with @apollo/gateway.
- Export
defaultRootOperationNameLookup
andnormalizeTypeDefs
; needed by@apollo/gateway
to normalize root operation types when reporting to Apollo Graph Manager. #4071
- Only changes in the similarly versioned
@apollo/gateway
package.
- Only changes in the similarly versioned
@apollo/gateway
package.
- Only changes in the similarly versioned
@apollo/gateway
package.
- Only changes in the similarly versioned
@apollo/gateway
package.
- Fix
v0.12.0
regression: Preserve the@deprecated
type-system directive as a special case when removing type system directives during composition, resolving an unintentional breaking change introduced by #3736. #3792
- Strip all Type System Directives during composition #3736
- Prepare for changes in upcoming
graphql@15
release. #3712
- Ignore TypeSystemDirectiveLocations during composition #3536
- Begin supporting executable directives in federation #3464
- Remove
apollo-env
dependency to eliminate circular dependency between the two packages. This circular dependency makes the tooling repo unpublishable whenapollo-env
requires a version bump. #3463
- Use reference-equality when omitting validation rules during composition. #3338
- Remove federation directives from composed schema #3272
- Do not remove Query/Mutation/Subscription types when schema is included if schema references those types #3260
- Fix value type behavior within composition and execution #3182
- Support __typenames if defined by an incoming operation #2922
- Fix bug in externalUnused validation #2919
- Allow specified directives during validation (@deprecated) #2823
- Normalize SDL in a normalization step before validation #2771