Skip to content

fix: make composeDirective argument non-nullable#3278

Merged
dariuszkuc merged 1 commit intomainfrom
compose_directive_fix
Jun 20, 2025
Merged

fix: make composeDirective argument non-nullable#3278
dariuszkuc merged 1 commit intomainfrom
compose_directive_fix

Conversation

@dariuszkuc
Copy link
Member

Per our docs, @composeDirective requires non-nullable value to be passed as an argument.

Our validations were checking for valid values (it has to be a string that starts with @), but the generated schema was incorrectly specifying that the argument was nullable.

Per our [docs](https://www.apollographql.com/docs/graphos/schema-design/federated-schemas/reference/directives#composedirective), `@composeDirective` requires non-nullable value to be passed as an argument.

Our [validations](https://github.com/apollographql/federation/blob/main/composition-js/src/composeDirectiveManager.ts#L250-L255) were checking for valid values (it has to be a string that starts with `@`), but the generated schema was incorrectly specifying that the argument was nullable.
@dariuszkuc dariuszkuc requested a review from a team as a code owner June 18, 2025 20:53
@changeset-bot
Copy link

changeset-bot bot commented Jun 18, 2025

🦋 Changeset detected

Latest commit: cdab066

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 7 packages
Name Type
@apollo/federation-internals Patch
@apollo/gateway Patch
@apollo/composition Patch
@apollo/query-planner Patch
@apollo/query-graphs Patch
@apollo/subgraph Patch
apollo-federation-integration-testsuite Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@codesandbox-ci
Copy link

This pull request is automatically built and testable in CodeSandbox.

To see build info of the built libraries, click here or the icon next to each commit SHA.

Copy link
Contributor

@duckki duckki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

@dariuszkuc dariuszkuc merged commit 7799ad1 into main Jun 20, 2025
15 checks passed
@dariuszkuc dariuszkuc deleted the compose_directive_fix branch June 20, 2025 17:46
@github-actions github-actions bot mentioned this pull request Jun 9, 2025
dariuszkuc pushed a commit that referenced this pull request Jun 24, 2025
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @apollo/composition@2.11.1

### Patch Changes

- Adding new CompositionOption `maxValidationSubgraphPaths`. This value
represents the maximum number of SubgraphPathInfo objects that may exist
in a ValidationTraversal when checking for satisfiability. Setting this
value can help composition error before running out of memory. Default
is 1,000,000.
([#3254](#3254))

- Fix bug in composition where, when a field's type in a subgraph is a
subtype of the field's type in the supergraph, the satisfiability
validation spuriously succeeds/errors.
([#3277](#3277))

- Updated dependencies
\[[`7799ad1717becf15fb0e82f89619f2ec8a24b4d4`](7799ad1),
[`b26794c5724ef23d1f0fd45a40aee3d301557489`](b26794c),
[`51bed5be49d8e87adae59f568315c9e3488a91e0`](51bed5b)]:
    -   @apollo/federation-internals@2.11.1
    -   @apollo/query-graphs@2.11.1

## @apollo/gateway@2.11.1

### Patch Changes

- Updated dependencies
\[[`7799ad1717becf15fb0e82f89619f2ec8a24b4d4`](7799ad1),
[`b26794c5724ef23d1f0fd45a40aee3d301557489`](b26794c),
[`51bed5be49d8e87adae59f568315c9e3488a91e0`](51bed5b)]:
    -   @apollo/federation-internals@2.11.1
    -   @apollo/composition@2.11.1
    -   @apollo/query-planner@2.11.1

## @apollo/federation-internals@2.11.1

### Patch Changes

- fix: make composeDirective argument non-nullable.
([#3278](#3278))

Per our
[docs](https://www.apollographql.com/docs/graphos/schema-design/federated-schemas/reference/directives#composedirective),
`@composeDirective` requires non-nullable value to be passed as an
argument.

Our
[validations](https://github.com/apollographql/federation/blob/main/composition-js/src/composeDirectiveManager.ts#L250-L255)
were checking for valid values (it has to be a string that starts with
`@`),
but the generated schema was incorrectly specifying that the argument
was nullable.

- Adding new CompositionOption `maxValidationSubgraphPaths`. This value
represents the maximum number of SubgraphPathInfo objects that may exist
in a ValidationTraversal when checking for satisfiability. Setting this
value can help composition error before running out of memory. Default
is 1,000,000.
([#3254](#3254))

## @apollo/query-graphs@2.11.1

### Patch Changes

- Fix bug in composition where, when a field's type in a subgraph is a
subtype of the field's type in the supergraph, the satisfiability
validation spuriously succeeds/errors.
([#3277](#3277))

- Updated dependencies
\[[`7799ad1717becf15fb0e82f89619f2ec8a24b4d4`](7799ad1),
[`b26794c5724ef23d1f0fd45a40aee3d301557489`](b26794c)]:
    -   @apollo/federation-internals@2.11.1

## @apollo/query-planner@2.11.1

### Patch Changes

- Updated dependencies
\[[`7799ad1717becf15fb0e82f89619f2ec8a24b4d4`](7799ad1),
[`b26794c5724ef23d1f0fd45a40aee3d301557489`](b26794c),
[`51bed5be49d8e87adae59f568315c9e3488a91e0`](51bed5b)]:
    -   @apollo/federation-internals@2.11.1
    -   @apollo/query-graphs@2.11.1

## @apollo/subgraph@2.11.1

### Patch Changes

- Updated dependencies
\[[`7799ad1717becf15fb0e82f89619f2ec8a24b4d4`](7799ad1),
[`b26794c5724ef23d1f0fd45a40aee3d301557489`](b26794c)]:
    -   @apollo/federation-internals@2.11.1

## apollo-federation-integration-testsuite@2.11.1

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
dariuszkuc added a commit that referenced this pull request Jun 25, 2025
`subgraph-js` was incorrectly declaring `@composeDirective` argument as nullable whereas it should be non-null. This was fixed in #3278 but it will cause composition failures when trying to compose subgraphs that use older versions of subgraph-js that provide incorrect definitions.
dariuszkuc added a commit that referenced this pull request Jun 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants