July 20, 2026
@graphql-tools/batch-delegate@10.0.28
Patch Changes
@graphql-tools/delegate@12.1.0
Minor Changes
-
#2473
6f2c3b6Thanks @enisdenjo! - Automatically resolve plain merged-type references returned by local stitching resolversLocal fields introduced through
typeDefsorresolversare wrapped bystitchSchemas. When they return a partial merged type containing a usable key, stitching performs one initial delegation with type merging enabled. The existing stitching planner then handles computed fields,@requiresdependencies, batching, nested entities, and fields owned by other subschemas.
Patch Changes
-
#2473
6f2c3b6Thanks @enisdenjo! -defaultMergedResolvernow falls back to the literal field name when an external object does not have the requested response keyPlain resolver data merged into an external object is keyed by field name, so an aliased request used to resolve to
nulleven though the value was there:{ person { fullName: name } }// merged object carries resolver data by field name { id: '1', name: 'Local' }
Previously
fullNamewasnullbecause only the alias was looked up. Now it resolves to'Local'by field name, matching plain graphql-js behavior. When the response key is present (e.g. the field came from a subschema), it is still preferred.
@graphql-tools/federation@4.4.10
Patch Changes
- Updated dependencies [
6f2c3b6,6f2c3b6,6f2c3b6]:- @graphql-tools/delegate@12.1.0
- @graphql-tools/stitch@10.2.0
- @graphql-tools/wrap@11.1.20
@graphql-mesh/fusion-runtime@1.11.2
Patch Changes
-
#2473
6f2c3b6Thanks @enisdenjo! - dependencies updates:- Updated dependency
@graphql-mesh/utils@^0.104.38↗︎ (from^0.104.36, independencies)
- Updated dependency
-
#2473
6f2c3b6Thanks @enisdenjo! - Fields that are not provided by any subschema (added throughtypeDefsorresolvers) can now return partial objects of merged types; the missing fields are resolved from the owning subschema automaticallytype Query { personCreated: PersonCreated } type PersonCreated { person: Person # merged type, owned by a subschema cursor: String }
const resolvers = { Query: { // only the key of `Person` is provided locally personCreated: () => ({ person: { id: '1' }, cursor: 'c1' }), }, };
Before,
personhad to be resolved manually even though the stitched schema knowsPersonand its keys. Now the key is enough:{ person { name } }runs through the standard stitching planner, while local data (cursor) and local field resolvers onPersonkeep working as before. Computed fields,@requiresdependencies, batching, and fields from other subschemas use the same type-merging flow as regular delegated results. -
Updated dependencies [
6f2c3b6,6f2c3b6,6f2c3b6]:- @graphql-tools/delegate@12.1.0
- @graphql-tools/stitch@10.2.0
- @graphql-mesh/transport-common@1.0.18
- @graphql-tools/federation@4.4.10
- @graphql-tools/stitching-directives@4.0.26
- @graphql-tools/wrap@11.1.20
@graphql-hive/gateway@2.10.7
Patch Changes
-
#2473
6f2c3b6Thanks @enisdenjo! - dependencies updates:- Updated dependency
@graphql-mesh/utils@^0.104.38↗︎ (from^0.104.36, independencies)
- Updated dependency
-
Updated dependencies [
6f2c3b6,6f2c3b6,6f2c3b6,6f2c3b6,6f2c3b6,6f2c3b6,6f2c3b6,6f2c3b6,6f2c3b6,6f2c3b6]:- @graphql-hive/gateway-runtime@2.10.2
- @graphql-hive/plugin-opentelemetry@1.4.38
- @graphql-hive/pubsub@2.2.0
- @graphql-mesh/hmac-upstream-signature@2.0.13
- @graphql-mesh/plugin-jwt-auth@2.0.12
- @graphql-mesh/plugin-prometheus@2.1.54
- @graphql-mesh/transport-http@1.1.2
- @graphql-mesh/transport-http-callback@1.0.22
- @graphql-mesh/transport-ws@2.0.22
- @graphql-hive/plugin-aws-sigv4@2.0.56
@graphql-hive/nestjs@2.0.87
Patch Changes
- Updated dependencies [
6f2c3b6]:- @graphql-hive/gateway@2.10.7
@graphql-hive/plugin-aws-sigv4@2.0.56
Patch Changes
@graphql-hive/plugin-deduplicate-request@2.0.12
Patch Changes
-
#2473
6f2c3b6Thanks @enisdenjo! - dependencies updates:- Updated dependency
@graphql-mesh/utils@^0.104.38↗︎ (from^0.104.36, independencies)
- Updated dependency
@graphql-mesh/hmac-upstream-signature@2.0.13
Patch Changes
-
#2473
6f2c3b6Thanks @enisdenjo! - dependencies updates:- Updated dependency
@graphql-mesh/utils@^0.104.38↗︎ (from^0.104.36, independencies)
- Updated dependency
@graphql-mesh/plugin-jwt-auth@2.0.12
Patch Changes
-
#2473
6f2c3b6Thanks @enisdenjo! - dependencies updates:- Updated dependency
@graphql-mesh/utils@^0.104.38↗︎ (from^0.104.36, independencies)
- Updated dependency
@graphql-hive/plugin-opentelemetry@1.4.38
Patch Changes
-
#2473
6f2c3b6Thanks @enisdenjo! - dependencies updates:- Updated dependency
@graphql-mesh/utils@^0.104.38↗︎ (from^0.104.36, independencies)
- Updated dependency
-
Updated dependencies [
6f2c3b6]:- @graphql-hive/gateway-runtime@2.10.2
- @graphql-mesh/transport-common@1.0.18
@graphql-mesh/plugin-prometheus@2.1.54
Patch Changes
-
#2473
6f2c3b6Thanks @enisdenjo! - dependencies updates:- Updated dependency
@graphql-mesh/utils@^0.104.38↗︎ (from^0.104.36, independencies)
- Updated dependency
-
Updated dependencies [
6f2c3b6]:- @graphql-hive/gateway-runtime@2.10.2
@graphql-hive/pubsub@2.2.0
Minor Changes
-
#2473
6f2c3b6Thanks @enisdenjo! - AddNATSJetStreamPubSub, a NATS JetStream transport with optional cursor-based replaySubscribe like any other Hive PubSub, or pass subscribe options to receive each message with an opaque
cursor. Pass that cursor on a later subscription to resume right after it and recover events missed while disconnected. Without a cursor, only messages published after the subscription starts are delivered.The JetStream stream is not created or configured by this transport; it must already exist and capture the subjects used by the pubsub (
${subjectPrefix}:${topic}).import { connect } from '@nats-io/transport-node'; import { NATSJetStreamPubSub } from '@graphql-hive/pubsub/nats-jetstream'; const nats = await connect({ servers: 'localhost:4222' }); const pubsub = new NATSJetStreamPubSub(nats, { subjectPrefix: 'my-service', stream: 'EVENTS', }); // live-only: no cursor, only messages published after subscribe starts const live = pubsub.subscribe('personCreated', { cursor: undefined }); const first = await live.next(); // first.value => { data: { id: '1' }, cursor: '...' } await live.return?.(); // published while disconnected is retained by JetStream await pubsub.publish('personCreated', { id: '2' }); // resume right after the last seen cursor — gets { id: '2' }, not a repeat of '1' for await (const { data, cursor } of pubsub.subscribe('personCreated', { cursor: first.value.cursor, })) { // persist `cursor` so the next reconnect can resume again }
Patch Changes
-
#2473
6f2c3b6Thanks @enisdenjo! - dependencies updates:- Added dependency
@nats-io/jetstream@^3↗︎ (topeerDependencies)
- Added dependency
@graphql-hive/router-runtime@1.4.18
Patch Changes
-
#2473
6f2c3b6Thanks @enisdenjo! - dependencies updates:- Updated dependency
@graphql-mesh/utils@^0.104.38↗︎ (from^0.104.36, independencies)
- Updated dependency
-
Updated dependencies [
6f2c3b6,6f2c3b6,6f2c3b6,6f2c3b6]:- @graphql-mesh/fusion-runtime@1.11.2
- @graphql-tools/delegate@12.1.0
- @graphql-mesh/transport-common@1.0.18
- @graphql-tools/federation@4.4.10
@graphql-hive/gateway-runtime@2.10.2
Patch Changes
-
#2473
6f2c3b6Thanks @enisdenjo! - dependencies updates:- Updated dependency
@graphql-mesh/utils@^0.104.38↗︎ (from^0.104.36, independencies)
- Updated dependency
-
Updated dependencies [
6f2c3b6,6f2c3b6,6f2c3b6,6f2c3b6,6f2c3b6,6f2c3b6,6f2c3b6]:- @graphql-hive/pubsub@2.2.0
- @graphql-mesh/fusion-runtime@1.11.2
- @graphql-mesh/hmac-upstream-signature@2.0.13
- @graphql-tools/delegate@12.1.0
- @graphql-tools/stitch@10.2.0
- @graphql-mesh/transport-common@1.0.18
- @graphql-tools/batch-delegate@10.0.28
- @graphql-tools/federation@4.4.10
- @graphql-tools/wrap@11.1.20
@graphql-tools/stitch@10.2.0
Minor Changes
-
#2473
6f2c3b6Thanks @enisdenjo! - Automatically resolve plain merged-type references returned by local stitching resolversLocal fields introduced through
typeDefsorresolversare wrapped bystitchSchemas. When they return a partial merged type containing a usable key, stitching performs one initial delegation with type merging enabled. The existing stitching planner then handles computed fields,@requiresdependencies, batching, nested entities, and fields owned by other subschemas.
Patch Changes
-
#2473
6f2c3b6Thanks @enisdenjo! - Fields that are not provided by any subschema (added throughtypeDefsorresolvers) can now return partial objects of merged types; the missing fields are resolved from the owning subschema automaticallytype Query { personCreated: PersonCreated } type PersonCreated { person: Person # merged type, owned by a subschema cursor: String }
const resolvers = { Query: { // only the key of `Person` is provided locally personCreated: () => ({ person: { id: '1' }, cursor: 'c1' }), }, };
Before,
personhad to be resolved manually even though the stitched schema knowsPersonand its keys. Now the key is enough:{ person { name } }runs through the standard stitching planner, while local data (cursor) and local field resolvers onPersonkeep working as before. Computed fields,@requiresdependencies, batching, and fields from other subschemas use the same type-merging flow as regular delegated results. -
Updated dependencies [
6f2c3b6,6f2c3b6]:- @graphql-tools/delegate@12.1.0
- @graphql-tools/batch-delegate@10.0.28
- @graphql-tools/wrap@11.1.20
@graphql-tools/stitching-directives@4.0.26
Patch Changes
@graphql-hive/gateway-testing@9.0.2
Patch Changes
- Updated dependencies [
6f2c3b6]:- @graphql-hive/gateway-runtime@2.10.2
@graphql-mesh/transport-common@1.0.18
Patch Changes
@graphql-mesh/transport-http@1.1.2
Patch Changes
-
#2473
6f2c3b6Thanks @enisdenjo! - dependencies updates:- Updated dependency
@graphql-mesh/utils@^0.104.38↗︎ (from^0.104.36, independencies)
- Updated dependency
-
Updated dependencies []:
- @graphql-mesh/transport-common@1.0.18
@graphql-mesh/transport-http-callback@1.0.22
Patch Changes
-
#2473
6f2c3b6Thanks @enisdenjo! - dependencies updates:- Updated dependency
@graphql-mesh/utils@^0.104.38↗︎ (from^0.104.36, independencies)
- Updated dependency
-
Updated dependencies []:
- @graphql-mesh/transport-common@1.0.18
@graphql-mesh/transport-ws@2.0.22
Patch Changes
-
#2473
6f2c3b6Thanks @enisdenjo! - dependencies updates:- Updated dependency
@graphql-mesh/utils@^0.104.38↗︎ (from^0.104.36, independencies)
- Updated dependency
-
Updated dependencies []:
- @graphql-mesh/transport-common@1.0.18