From c14a59d6af037a8d9b23bc96491f79f9244eaea1 Mon Sep 17 00:00:00 2001 From: Arda TANRIKULU Date: Wed, 18 Dec 2024 13:46:43 +0300 Subject: [PATCH 01/13] `@cacheControl` support --- .changeset/tricky-paws-walk.md | 5 + .../src/composeLocalSchemasWithApollo.ts | 30 +++ internal/testing/src/index.ts | 1 + packages/federation/src/supergraph.ts | 5 + packages/runtime/tests/cache-control.test.ts | 244 ++++++++++++++++++ 5 files changed, 285 insertions(+) create mode 100644 .changeset/tricky-paws-walk.md create mode 100644 internal/testing/src/composeLocalSchemasWithApollo.ts create mode 100644 packages/runtime/tests/cache-control.test.ts diff --git a/.changeset/tricky-paws-walk.md b/.changeset/tricky-paws-walk.md new file mode 100644 index 000000000..dc1faf725 --- /dev/null +++ b/.changeset/tricky-paws-walk.md @@ -0,0 +1,5 @@ +--- +'@graphql-tools/federation': patch +--- + +Keep the custom directives(using @composeDirective) from the supergraph, in the unified schema served by the gateway should keep it. diff --git a/internal/testing/src/composeLocalSchemasWithApollo.ts b/internal/testing/src/composeLocalSchemasWithApollo.ts new file mode 100644 index 000000000..a0a1977d3 --- /dev/null +++ b/internal/testing/src/composeLocalSchemasWithApollo.ts @@ -0,0 +1,30 @@ +import { IntrospectAndCompose, LocalGraphQLDataSource } from '@apollo/gateway'; +import { GraphQLSchema } from 'graphql'; + +export interface ComposeLocalSchemaWithApolloSubgraphOpts { + name: string; + schema: GraphQLSchema; + url?: string; +} + +export async function composeLocalSchemasWithApollo( + subgraphs: ComposeLocalSchemaWithApolloSubgraphOpts[], +) { + let { supergraphSdl, cleanup } = await new IntrospectAndCompose({ + subgraphs, + }).initialize({ + update(updatedSupergraphSdl: string) { + supergraphSdl = updatedSupergraphSdl; + }, + healthCheck: async () => {}, + getDataSource({ name }) { + const subgraph = subgraphs.find((subgraph) => subgraph.name === name); + if (!subgraph) { + throw new Error(`Subgraph ${name} not found`); + } + return new LocalGraphQLDataSource(subgraph.schema); + }, + }); + await cleanup(); + return supergraphSdl; +} diff --git a/internal/testing/src/index.ts b/internal/testing/src/index.ts index ba42ddcf7..77c31431e 100644 --- a/internal/testing/src/index.ts +++ b/internal/testing/src/index.ts @@ -5,3 +5,4 @@ export * from './opts'; export * from './assertions'; export * from './benchConfig'; export * from './trimError'; +export * from './composeLocalSchemasWithApollo'; diff --git a/packages/federation/src/supergraph.ts b/packages/federation/src/supergraph.ts index 24d8c0c1b..6eb021b76 100644 --- a/packages/federation/src/supergraph.ts +++ b/packages/federation/src/supergraph.ts @@ -1433,6 +1433,11 @@ export function getStitchingOptionsFromSupergraphSdl( } } } + } else if ( + definition.kind === Kind.DIRECTIVE_DEFINITION && + !definition.name.value.startsWith('join__') + ) { + extraDefinitions.push(definition); } } const additionalTypeDefs: DocumentNode = { diff --git a/packages/runtime/tests/cache-control.test.ts b/packages/runtime/tests/cache-control.test.ts new file mode 100644 index 000000000..1d2f442da --- /dev/null +++ b/packages/runtime/tests/cache-control.test.ts @@ -0,0 +1,244 @@ +import { createServer, Server } from 'http'; +import { AddressInfo, Socket } from 'net'; +import { ApolloServer } from '@apollo/server'; +import { expressMiddleware } from '@apollo/server/express4'; +import { buildSubgraphSchema } from '@apollo/subgraph'; +import { createGatewayRuntime } from '@graphql-hive/gateway-runtime'; +import InmemoryLRUCache from '@graphql-mesh/cache-inmemory-lru'; +import useHttpCache from '@graphql-mesh/plugin-http-cache'; +import { composeLocalSchemasWithApollo } from '@internal/testing'; +import express from 'express'; +import { parse } from 'graphql'; +import { afterEach, beforeEach, describe, expect, it, Mock, vi } from 'vitest'; + +describe('Cache Control directives w/ Apollo Server subgraph', () => { + vi.useFakeTimers(); + const products = [ + { id: '1', name: 'Product 1', price: 100 }, + { id: '2', name: 'Product 2', price: 200 }, + { id: '3', name: 'Product 3', price: 300 }, + ]; + const productsSchema = buildSubgraphSchema({ + typeDefs: parse(/* GraphQL */ ` + enum CacheControlScope { + PUBLIC + PRIVATE + } + + directive @cacheControl( + maxAge: Int + scope: CacheControlScope + inheritMaxAge: Boolean + ) on FIELD_DEFINITION | OBJECT | INTERFACE | UNION + + type Product @key(fields: "id") @cacheControl(maxAge: 30) { + id: ID! + name: String! + price: Int! + } + + extend type Query { + products: [Product!]! + product(id: ID!): Product + } + + extend schema + @link( + url: "https://specs.apollo.dev/federation/v2.6" + import: ["@key", "@composeDirective"] + ) + @link(url: "https://the-guild.dev/mesh/v1.0", import: ["@cacheControl"]) + @composeDirective(name: "@cacheControl") { + query: Query + } + `), + resolvers: { + Query: { + product(_root, { id }) { + return products.find((product) => product.id === id); + }, + products() { + return products; + }, + }, + }, + }); + let supergraph: string; + let productsServer: Server; + let requestDidStart: Mock; + const sockets = new Set(); + beforeEach(async () => { + requestDidStart = vi.fn(); + const app = express(); + productsServer = createServer(app); + const apolloServer = new ApolloServer({ + schema: productsSchema, + plugins: [ + { + requestDidStart, + }, + ], + }); + await apolloServer.start(); + app.use( + // @ts-expect-error - Express typings are wrong + express.json(), + expressMiddleware(apolloServer), + ); + await new Promise((resolve, reject) => { + productsServer.once('error', reject); + productsServer.listen(0, () => { + resolve(); + }); + }); + productsServer.on('connection', (socket) => { + sockets.add(socket); + socket.once('close', () => { + sockets.delete(socket); + }); + }); + supergraph = await composeLocalSchemasWithApollo([ + { + schema: productsSchema, + name: 'products', + url: `http://localhost:${(productsServer.address() as AddressInfo).port}/graphql`, + }, + ]); + }); + afterEach( + () => + new Promise((resolve, reject) => { + productsServer.closeAllConnections(); + productsServer.close((err) => { + if (err) { + reject(err); + } else { + resolve(); + } + }); + }), + ); + it('response caching plugin respect @cacheControl(maxAge:) w/ @composeDirective', async () => { + await using cache = new InmemoryLRUCache(); + await using gw = createGatewayRuntime({ + supergraph, + cache, + responseCaching: { + session: () => null, + includeExtensionMetadata: true, + }, + }); + async function makeRequest() { + const res = await gw.fetch('http://localhost:4000/graphql', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + query: /* GraphQL */ ` + query { + products { + id + name + price + } + } + `, + }), + }); + return res.json(); + } + await expect(makeRequest()).resolves.toEqual({ + data: { + products, + }, + extensions: { + responseCache: { + didCache: true, + hit: false, + ttl: 30_000, + }, + }, + }); + // 15 seconds later + await vi.advanceTimersByTimeAsync(15_000); + await expect(makeRequest()).resolves.toEqual({ + data: { + products, + }, + extensions: { + responseCache: { + hit: true, + }, + }, + }); + // 15 seconds later but the cache is expired + await vi.advanceTimersByTimeAsync(15_000); + await expect(makeRequest()).resolves.toEqual({ + data: { + products, + }, + extensions: { + responseCache: { + didCache: true, + hit: false, + ttl: 30_000, + }, + }, + }); + // GW received 3 requests but only 2 were forwarded to the subgraph + expect(requestDidStart).toHaveBeenCalledTimes(2); + }); + it('http caching plugin should respect cache control headers', async () => { + await using cache = new InmemoryLRUCache(); + await using gw = createGatewayRuntime({ + supergraph, + cache, + plugins: (ctx) => [ + // @ts-expect-error - we need to fix the types + useHttpCache(ctx), + ], + }); + async function makeRequest() { + const res = await gw.fetch('http://localhost:4000/graphql', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + query: /* GraphQL */ ` + query { + products { + id + name + price + } + } + `, + }), + }); + return res.json(); + } + await expect(makeRequest()).resolves.toEqual({ + data: { + products, + }, + }); + // 15 seconds later + await vi.advanceTimersByTimeAsync(15_000); + await expect(makeRequest()).resolves.toEqual({ + data: { + products, + }, + }); + // 15 seconds later but the cache is expired + await vi.advanceTimersByTimeAsync(15_000); + await expect(makeRequest()).resolves.toEqual({ + data: { + products, + }, + }); + // GW received 3 requests but only 2 were forwarded to the subgraph + expect(requestDidStart).toHaveBeenCalledTimes(2); + }); +}); From 44578bdda2241545b79538e080d8cf85f5d88881 Mon Sep 17 00:00:00 2001 From: Arda TANRIKULU Date: Wed, 18 Dec 2024 14:08:15 +0300 Subject: [PATCH 02/13] Fix tests --- packages/federation/src/supergraph.ts | 3 ++- packages/federation/tests/supergraphs.test.ts | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/federation/src/supergraph.ts b/packages/federation/src/supergraph.ts index 6eb021b76..61aaa504f 100644 --- a/packages/federation/src/supergraph.ts +++ b/packages/federation/src/supergraph.ts @@ -1435,7 +1435,8 @@ export function getStitchingOptionsFromSupergraphSdl( } } else if ( definition.kind === Kind.DIRECTIVE_DEFINITION && - !definition.name.value.startsWith('join__') + !definition.name.value.startsWith('join__') && + !definition.name.value.startsWith('core') ) { extraDefinitions.push(definition); } diff --git a/packages/federation/tests/supergraphs.test.ts b/packages/federation/tests/supergraphs.test.ts index 1d78bf71d..76bdee6ff 100644 --- a/packages/federation/tests/supergraphs.test.ts +++ b/packages/federation/tests/supergraphs.test.ts @@ -29,7 +29,13 @@ describe('Supergraphs', () => { fieldFilter: (_, __, fieldConfig) => !getDirective(sortedInputSchema, fieldConfig, 'inaccessible') ?.length, - directiveFilter: () => false, + directiveFilter: typeName => + !typeName.startsWith('link__') && + !typeName.startsWith('join__') && + !typeName.startsWith('core__') && + typeName !== 'core' && + typeName !== 'link' && + typeName !== 'inaccessible', enumValueFilter: (_, __, enumValueConfig) => !getDirective(sortedInputSchema, enumValueConfig, 'inaccessible') ?.length, From a1196c4394c0862e037362886e6493e4a24458ed Mon Sep 17 00:00:00 2001 From: Arda TANRIKULU Date: Wed, 18 Dec 2024 14:08:39 +0300 Subject: [PATCH 03/13] Format --- packages/federation/tests/supergraphs.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/federation/tests/supergraphs.test.ts b/packages/federation/tests/supergraphs.test.ts index 76bdee6ff..721985ea6 100644 --- a/packages/federation/tests/supergraphs.test.ts +++ b/packages/federation/tests/supergraphs.test.ts @@ -29,7 +29,7 @@ describe('Supergraphs', () => { fieldFilter: (_, __, fieldConfig) => !getDirective(sortedInputSchema, fieldConfig, 'inaccessible') ?.length, - directiveFilter: typeName => + directiveFilter: (typeName) => !typeName.startsWith('link__') && !typeName.startsWith('join__') && !typeName.startsWith('core__') && From 34b554f614eb3eefd9600c54ab96e9d805ac6832 Mon Sep 17 00:00:00 2001 From: Arda TANRIKULU Date: Wed, 18 Dec 2024 15:22:09 +0300 Subject: [PATCH 04/13] Fix tests --- packages/runtime/tests/cache-control.test.ts | 411 +++++++++---------- vitest-jest.js | 15 + vitest.config.ts | 6 +- 3 files changed, 211 insertions(+), 221 deletions(-) diff --git a/packages/runtime/tests/cache-control.test.ts b/packages/runtime/tests/cache-control.test.ts index 1d2f442da..35c6b354d 100644 --- a/packages/runtime/tests/cache-control.test.ts +++ b/packages/runtime/tests/cache-control.test.ts @@ -1,244 +1,223 @@ -import { createServer, Server } from 'http'; -import { AddressInfo, Socket } from 'net'; +import { setTimeout } from 'timers/promises'; import { ApolloServer } from '@apollo/server'; -import { expressMiddleware } from '@apollo/server/express4'; +import { startStandaloneServer } from '@apollo/server/standalone'; import { buildSubgraphSchema } from '@apollo/subgraph'; import { createGatewayRuntime } from '@graphql-hive/gateway-runtime'; import InmemoryLRUCache from '@graphql-mesh/cache-inmemory-lru'; import useHttpCache from '@graphql-mesh/plugin-http-cache'; import { composeLocalSchemasWithApollo } from '@internal/testing'; -import express from 'express'; import { parse } from 'graphql'; -import { afterEach, beforeEach, describe, expect, it, Mock, vi } from 'vitest'; +import { beforeEach, describe, expect, it, Mock, vi } from 'vitest'; -describe('Cache Control directives w/ Apollo Server subgraph', () => { - vi.useFakeTimers(); - const products = [ - { id: '1', name: 'Product 1', price: 100 }, - { id: '2', name: 'Product 2', price: 200 }, - { id: '3', name: 'Product 3', price: 300 }, - ]; - const productsSchema = buildSubgraphSchema({ - typeDefs: parse(/* GraphQL */ ` - enum CacheControlScope { - PUBLIC - PRIVATE - } +// ApolloServer is not playing nice with Leak Tests +describe.skipIf(process.env['LEAK_TEST'])( + 'Cache Control directives w/ Apollo Server subgraph', + () => { + vi.useFakeTimers?.(); + const advanceTimersByTimeAsync = vi.advanceTimersByTimeAsync || setTimeout; + const products = [ + { id: '1', name: 'Product 1', price: 100 }, + { id: '2', name: 'Product 2', price: 200 }, + { id: '3', name: 'Product 3', price: 300 }, + ]; + const productsSchema = buildSubgraphSchema({ + typeDefs: parse(/* GraphQL */ ` + enum CacheControlScope { + PUBLIC + PRIVATE + } - directive @cacheControl( - maxAge: Int - scope: CacheControlScope - inheritMaxAge: Boolean - ) on FIELD_DEFINITION | OBJECT | INTERFACE | UNION + directive @cacheControl( + maxAge: Int + scope: CacheControlScope + inheritMaxAge: Boolean + ) on FIELD_DEFINITION | OBJECT | INTERFACE | UNION - type Product @key(fields: "id") @cacheControl(maxAge: 30) { - id: ID! - name: String! - price: Int! - } + type Product @key(fields: "id") @cacheControl(maxAge: 3) { + id: ID! + name: String! + price: Int! + } - extend type Query { - products: [Product!]! - product(id: ID!): Product - } + extend type Query { + products: [Product!]! + product(id: ID!): Product + } - extend schema - @link( - url: "https://specs.apollo.dev/federation/v2.6" - import: ["@key", "@composeDirective"] - ) - @link(url: "https://the-guild.dev/mesh/v1.0", import: ["@cacheControl"]) - @composeDirective(name: "@cacheControl") { - query: Query - } - `), - resolvers: { - Query: { - product(_root, { id }) { - return products.find((product) => product.id === id); - }, - products() { - return products; + extend schema + @link( + url: "https://specs.apollo.dev/federation/v2.6" + import: ["@key", "@composeDirective"] + ) + @link( + url: "https://the-guild.dev/mesh/v1.0" + import: ["@cacheControl"] + ) + @composeDirective(name: "@cacheControl") { + query: Query + } + `), + resolvers: { + Query: { + product(_root, { id }) { + return products.find((product) => product.id === id); + }, + products() { + return products; + }, }, }, - }, - }); - let supergraph: string; - let productsServer: Server; - let requestDidStart: Mock; - const sockets = new Set(); - beforeEach(async () => { - requestDidStart = vi.fn(); - const app = express(); - productsServer = createServer(app); - const apolloServer = new ApolloServer({ - schema: productsSchema, - plugins: [ - { - requestDidStart, - }, - ], }); - await apolloServer.start(); - app.use( - // @ts-expect-error - Express typings are wrong - express.json(), - expressMiddleware(apolloServer), - ); - await new Promise((resolve, reject) => { - productsServer.once('error', reject); - productsServer.listen(0, () => { - resolve(); + let supergraph: string; + let apolloServer: ApolloServer; + let requestDidStart: Mock; + beforeEach(async () => { + requestDidStart = vi.fn(); + apolloServer = new ApolloServer({ + schema: productsSchema, + plugins: [ + { + requestDidStart, + }, + ], }); - }); - productsServer.on('connection', (socket) => { - sockets.add(socket); - socket.once('close', () => { - sockets.delete(socket); + const { url } = await startStandaloneServer(apolloServer, { + listen: { port: 0 }, }); + supergraph = await composeLocalSchemasWithApollo([ + { + schema: productsSchema, + name: 'products', + url, + }, + ]); }); - supergraph = await composeLocalSchemasWithApollo([ - { - schema: productsSchema, - name: 'products', - url: `http://localhost:${(productsServer.address() as AddressInfo).port}/graphql`, - }, - ]); - }); - afterEach( - () => - new Promise((resolve, reject) => { - productsServer.closeAllConnections(); - productsServer.close((err) => { - if (err) { - reject(err); - } else { - resolve(); - } - }); - }), - ); - it('response caching plugin respect @cacheControl(maxAge:) w/ @composeDirective', async () => { - await using cache = new InmemoryLRUCache(); - await using gw = createGatewayRuntime({ - supergraph, - cache, - responseCaching: { - session: () => null, - includeExtensionMetadata: true, - }, - }); - async function makeRequest() { - const res = await gw.fetch('http://localhost:4000/graphql', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', + it('response caching plugin respect @cacheControl(maxAge:) w/ @composeDirective', async () => { + await using cache = new InmemoryLRUCache(); + await using gw = createGatewayRuntime({ + supergraph, + cache, + responseCaching: { + session: () => null, + includeExtensionMetadata: true, }, - body: JSON.stringify({ - query: /* GraphQL */ ` - query { - products { - id - name - price + }); + async function makeRequest() { + const res = await gw.fetch('http://localhost:4000/graphql', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + query: /* GraphQL */ ` + query { + products { + id + name + price + } } - } - `, - }), + `, + }), + }); + return res.json(); + } + await expect(makeRequest()).resolves.toEqual({ + data: { + products, + }, + extensions: { + responseCache: { + didCache: true, + hit: false, + ttl: 3_000, + }, + }, }); - return res.json(); - } - await expect(makeRequest()).resolves.toEqual({ - data: { - products, - }, - extensions: { - responseCache: { - didCache: true, - hit: false, - ttl: 30_000, + // 15 seconds later + await advanceTimersByTimeAsync(1_000); + await expect(makeRequest()).resolves.toEqual({ + data: { + products, }, - }, - }); - // 15 seconds later - await vi.advanceTimersByTimeAsync(15_000); - await expect(makeRequest()).resolves.toEqual({ - data: { - products, - }, - extensions: { - responseCache: { - hit: true, + extensions: { + responseCache: { + hit: true, + }, }, - }, - }); - // 15 seconds later but the cache is expired - await vi.advanceTimersByTimeAsync(15_000); - await expect(makeRequest()).resolves.toEqual({ - data: { - products, - }, - extensions: { - responseCache: { - didCache: true, - hit: false, - ttl: 30_000, + }); + // 15 seconds later but the cache is expired + await advanceTimersByTimeAsync(2_000); + await expect(makeRequest()).resolves.toEqual({ + data: { + products, }, - }, - }); - // GW received 3 requests but only 2 were forwarded to the subgraph - expect(requestDidStart).toHaveBeenCalledTimes(2); - }); - it('http caching plugin should respect cache control headers', async () => { - await using cache = new InmemoryLRUCache(); - await using gw = createGatewayRuntime({ - supergraph, - cache, - plugins: (ctx) => [ - // @ts-expect-error - we need to fix the types - useHttpCache(ctx), - ], - }); - async function makeRequest() { - const res = await gw.fetch('http://localhost:4000/graphql', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', + extensions: { + responseCache: { + didCache: true, + hit: false, + ttl: 3_000, + }, }, - body: JSON.stringify({ - query: /* GraphQL */ ` - query { - products { - id - name - price - } - } - `, - }), }); - return res.json(); - } - await expect(makeRequest()).resolves.toEqual({ - data: { - products, - }, + // GW received 3 requests but only 2 were forwarded to the subgraph + expect(requestDidStart).toHaveBeenCalledTimes(2); }); - // 15 seconds later - await vi.advanceTimersByTimeAsync(15_000); - await expect(makeRequest()).resolves.toEqual({ - data: { - products, - }, - }); - // 15 seconds later but the cache is expired - await vi.advanceTimersByTimeAsync(15_000); - await expect(makeRequest()).resolves.toEqual({ - data: { - products, + // TODO: HTTP Cache plugin has issues with Bun + it.skipIf(globalThis.Bun)( + 'http caching plugin should respect cache control headers', + async () => { + await using cache = new InmemoryLRUCache(); + await using gw = createGatewayRuntime({ + supergraph, + cache, + plugins: (ctx) => [ + // @ts-expect-error - we need to fix the types + useHttpCache(ctx), + ], + }); + async function makeRequest() { + const res = await gw.fetch('http://localhost:4000/graphql', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + query: /* GraphQL */ ` + query { + products { + id + name + price + } + } + `, + }), + }); + return res.json(); + } + await expect(makeRequest()).resolves.toEqual({ + data: { + products, + }, + }); + // 15 seconds later + await advanceTimersByTimeAsync(1_000); + await expect(makeRequest()).resolves.toEqual({ + data: { + products, + }, + }); + // 15 seconds later but the cache is expired + await advanceTimersByTimeAsync(2_000); + await expect(makeRequest()).resolves.toEqual({ + data: { + products, + }, + }); + // GW received 3 requests but only 2 were forwarded to the subgraph + expect(requestDidStart).toHaveBeenCalledTimes(2); }, - }); - // GW received 3 requests but only 2 were forwarded to the subgraph - expect(requestDidStart).toHaveBeenCalledTimes(2); - }); -}); + ); + }, +); diff --git a/vitest-jest.js b/vitest-jest.js index f47b02b02..c887e5e2e 100644 --- a/vitest-jest.js +++ b/vitest-jest.js @@ -21,6 +21,21 @@ module.exports = new Proxy(require('@jest/globals'), { }; return describeFn; } + if (prop === 'it') { + const itFn = function it(name, ...args) { + return jestGlobals.it(name, ...args); + }; + itFn.skipIf = function itSkipIf(condition) { + return condition ? itFn.skip : itFn; + }; + itFn.skip = function itSkip(name, ...args) { + return jestGlobals.it.skip(name, ...args); + }; + itFn.only = function itOnly(name, ...args) { + return jestGlobals.it.only(name, ...args); + }; + return itFn; + } return Reflect.get(jestGlobals, prop, receiver); }, }); diff --git a/vitest.config.ts b/vitest.config.ts index e6e8a4be1..5ab4af4fa 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -7,11 +7,7 @@ import { defineConfig } from 'vitest/config'; // // Vite will process inlined modules. const inline = [ - /@graphql-mesh\/utils/, - /@graphql-mesh\/runtime/, - /@graphql-mesh\/fusion-composition/, - /@graphql-mesh\/plugin-hive/, - /@graphql-mesh\/transport-rest/, + /@graphql-mesh\/.*/, /@omnigraph\/.*/, ]; From f0364535dc3e101cedc62f23ada10fb2e2608529 Mon Sep 17 00:00:00 2001 From: Arda TANRIKULU Date: Wed, 18 Dec 2024 15:23:41 +0300 Subject: [PATCH 05/13] Fix tests --- vitest.config.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/vitest.config.ts b/vitest.config.ts index 5ab4af4fa..01e74086f 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -6,10 +6,7 @@ import { defineConfig } from 'vitest/config'; // packages as per the Node resolution spec. // // Vite will process inlined modules. -const inline = [ - /@graphql-mesh\/.*/, - /@omnigraph\/.*/, -]; +const inline = [/@graphql-mesh\/.*/, /@omnigraph\/.*/]; export default defineConfig({ plugins: [tsconfigPaths()], From 4d9d2547f52892c70c9a1761e8a038926ecd6437 Mon Sep 17 00:00:00 2001 From: Arda TANRIKULU Date: Wed, 18 Dec 2024 15:30:56 +0300 Subject: [PATCH 06/13] Patch `.each` --- vitest-jest.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/vitest-jest.js b/vitest-jest.js index c887e5e2e..2d5e261cb 100644 --- a/vitest-jest.js +++ b/vitest-jest.js @@ -19,6 +19,9 @@ module.exports = new Proxy(require('@jest/globals'), { describeFn.only = function describeOnly(name, ...args) { return jestGlobals.describe.only(name, ...args); }; + describeFn.each = function describeEach(table) { + return jestGlobals.describe.each(table); + } return describeFn; } if (prop === 'it') { @@ -34,6 +37,9 @@ module.exports = new Proxy(require('@jest/globals'), { itFn.only = function itOnly(name, ...args) { return jestGlobals.it.only(name, ...args); }; + itFn.each = function itEach(table) { + return jestGlobals.it.each(table); + } return itFn; } return Reflect.get(jestGlobals, prop, receiver); From e50eff7cbd07d50e95b7b1e2be43641ab9af7dfc Mon Sep 17 00:00:00 2001 From: Arda TANRIKULU Date: Wed, 18 Dec 2024 15:31:11 +0300 Subject: [PATCH 07/13] Patch `.each` --- vitest-jest.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vitest-jest.js b/vitest-jest.js index 2d5e261cb..ede18b8d0 100644 --- a/vitest-jest.js +++ b/vitest-jest.js @@ -21,7 +21,7 @@ module.exports = new Proxy(require('@jest/globals'), { }; describeFn.each = function describeEach(table) { return jestGlobals.describe.each(table); - } + }; return describeFn; } if (prop === 'it') { @@ -39,7 +39,7 @@ module.exports = new Proxy(require('@jest/globals'), { }; itFn.each = function itEach(table) { return jestGlobals.it.each(table); - } + }; return itFn; } return Reflect.get(jestGlobals, prop, receiver); From efa498b7ee456cc25ff98728502341c8e3ab50c8 Mon Sep 17 00:00:00 2001 From: Arda TANRIKULU Date: Tue, 24 Dec 2024 11:51:32 +0300 Subject: [PATCH 08/13] More --- .../src/composeLocalSchemasWithApollo.ts | 7 +- .../federation/tests/defer-stream.test.ts | 20 +- .../federation/tests/error-handling.test.ts | 36 ++-- .../tests/fixtures/gateway/supergraph.ts | 21 +-- .../getStitchedSchemaFromLocalSchemas.ts | 33 +--- .../federation/tests/optimizations.test.ts | 178 +++++++----------- .../federation/tests/subscription.test.ts | 36 +--- 7 files changed, 111 insertions(+), 220 deletions(-) diff --git a/internal/testing/src/composeLocalSchemasWithApollo.ts b/internal/testing/src/composeLocalSchemasWithApollo.ts index a0a1977d3..931f798e3 100644 --- a/internal/testing/src/composeLocalSchemasWithApollo.ts +++ b/internal/testing/src/composeLocalSchemasWithApollo.ts @@ -1,4 +1,3 @@ -import { IntrospectAndCompose, LocalGraphQLDataSource } from '@apollo/gateway'; import { GraphQLSchema } from 'graphql'; export interface ComposeLocalSchemaWithApolloSubgraphOpts { @@ -10,8 +9,12 @@ export interface ComposeLocalSchemaWithApolloSubgraphOpts { export async function composeLocalSchemasWithApollo( subgraphs: ComposeLocalSchemaWithApolloSubgraphOpts[], ) { + const { IntrospectAndCompose, LocalGraphQLDataSource } = await import('@apollo/gateway'); let { supergraphSdl, cleanup } = await new IntrospectAndCompose({ - subgraphs, + subgraphs: subgraphs.map(({ name, url = `http://localhost/${name}` }) => ({ + name, + url, + })) }).initialize({ update(updatedSupergraphSdl: string) { supergraphSdl = updatedSupergraphSdl; diff --git a/packages/federation/tests/defer-stream.test.ts b/packages/federation/tests/defer-stream.test.ts index 7432877d4..493414f4f 100644 --- a/packages/federation/tests/defer-stream.test.ts +++ b/packages/federation/tests/defer-stream.test.ts @@ -11,7 +11,7 @@ import { mergeDeep, } from '@graphql-tools/utils'; import { useDeferStream } from '@graphql-yoga/plugin-defer-stream'; -import { assertAsyncIterable } from '@internal/testing'; +import { assertAsyncIterable, composeLocalSchemasWithApollo } from '@internal/testing'; import { GraphQLSchema, parse, print } from 'graphql'; import { createYoga } from 'graphql-yoga'; import _ from 'lodash'; @@ -173,20 +173,10 @@ describe('Defer/Stream', () => { let schema: GraphQLSchema; let finalResult: ExecutionResult; beforeAll(async () => { - const { supergraphSdl } = await new IntrospectAndCompose({ - subgraphs: [ - { name: 'users', url: 'http://localhost:4001/graphql' }, - { name: 'posts', url: 'http://localhost:4002/graphql' }, - ], - }).initialize({ - update() {}, - healthCheck: () => fakePromise(undefined), - getDataSource({ name }) { - if (name === 'users') return new LocalGraphQLDataSource(usersSubgraph); - if (name === 'posts') return new LocalGraphQLDataSource(postsSubgraph); - throw new Error(`Unknown subgraph: ${name}`); - }, - }); + const supergraphSdl = await composeLocalSchemasWithApollo([ + { name: 'users', schema: usersSubgraph }, + { name: 'posts', schema: postsSubgraph }, + ]) schema = getStitchedSchemaFromSupergraphSdl({ supergraphSdl, onSubschemaConfig(subschemaConfig) { diff --git a/packages/federation/tests/error-handling.test.ts b/packages/federation/tests/error-handling.test.ts index 79a3ff0ef..fd755c454 100644 --- a/packages/federation/tests/error-handling.test.ts +++ b/packages/federation/tests/error-handling.test.ts @@ -1,8 +1,8 @@ -import { IntrospectAndCompose, LocalGraphQLDataSource } from '@apollo/gateway'; import { buildSubgraphSchema } from '@apollo/subgraph'; import { createDefaultExecutor } from '@graphql-tools/delegate'; import { normalizedExecutor } from '@graphql-tools/executor'; -import { fakePromise, isAsyncIterable } from '@graphql-tools/utils'; +import { isAsyncIterable } from '@graphql-tools/utils'; +import { composeLocalSchemasWithApollo } from '@internal/testing'; import { GraphQLSchema, parse } from 'graphql'; import { beforeAll, describe, expect, it } from 'vitest'; import { getStitchedSchemaFromSupergraphSdl } from '../src/supergraph'; @@ -66,30 +66,16 @@ describe('Error handling', () => { }); let supergraph: GraphQLSchema; beforeAll(async () => { - const { supergraphSdl } = await new IntrospectAndCompose({ - subgraphs: [ - { - name: 'A', - url: 'http://localhost:4001/graphql', - }, - { - name: 'B', - url: 'http://localhost:4002/graphql', - }, - ], - }).initialize({ - getDataSource({ name }) { - if (name === 'A') { - return new LocalGraphQLDataSource(subgraphA); - } - if (name === 'B') { - return new LocalGraphQLDataSource(subgraphB); - } - throw new Error(`Unknown subgraph: ${name}`); + const supergraphSdl = await composeLocalSchemasWithApollo([ + { + name: 'A', + schema: subgraphA, }, - healthCheck: () => fakePromise(undefined), - update() {}, - }); + { + name: 'B', + schema: subgraphB, + }, + ]); supergraph = getStitchedSchemaFromSupergraphSdl({ supergraphSdl, onSubschemaConfig(subschemaConfig) { diff --git a/packages/federation/tests/fixtures/gateway/supergraph.ts b/packages/federation/tests/fixtures/gateway/supergraph.ts index d3c456204..879fdbd4a 100644 --- a/packages/federation/tests/fixtures/gateway/supergraph.ts +++ b/packages/federation/tests/fixtures/gateway/supergraph.ts @@ -2,6 +2,7 @@ import { IntrospectAndCompose, LocalGraphQLDataSource } from '@apollo/gateway'; import { buildSubgraphSchema } from '@apollo/subgraph'; import { fakePromise } from '@graphql-tools/utils'; import { accounts, inventory, products, reviews } from '@internal/e2e'; +import { composeLocalSchemasWithApollo } from '@internal/testing'; import { DocumentNode, GraphQLSchema } from 'graphql'; const services = { @@ -26,23 +27,5 @@ export function getServiceInputs() { } export async function getSupergraph() { - const serviceInputs = getServiceInputs(); - const { supergraphSdl, cleanup } = await new IntrospectAndCompose({ - subgraphs: serviceInputs.map(({ name }) => ({ - name, - url: `http://localhost/${name}`, - })), - }).initialize({ - update() {}, - healthCheck: () => fakePromise(undefined), - getDataSource({ name }) { - const serviceInput = serviceInputs.find((input) => input.name === name); - if (!serviceInput) { - throw new Error(`Service ${name} not found`); - } - return new LocalGraphQLDataSource(serviceInput.schema); - }, - }); - await cleanup(); - return supergraphSdl; + return composeLocalSchemasWithApollo(getServiceInputs()); } diff --git a/packages/federation/tests/getStitchedSchemaFromLocalSchemas.ts b/packages/federation/tests/getStitchedSchemaFromLocalSchemas.ts index abd339203..3f3b9253f 100644 --- a/packages/federation/tests/getStitchedSchemaFromLocalSchemas.ts +++ b/packages/federation/tests/getStitchedSchemaFromLocalSchemas.ts @@ -2,12 +2,12 @@ import { createDefaultExecutor } from '@graphql-tools/delegate'; import { ExecutionRequest, ExecutionResult, - fakePromise, mapMaybePromise, } from '@graphql-tools/utils'; import { GraphQLSchema } from 'graphql'; import { kebabCase } from 'lodash'; import { getStitchedSchemaFromSupergraphSdl } from '../src/supergraph'; +import { composeLocalSchemasWithApollo } from '@internal/testing'; export interface LocalSchemaItem { name: string; @@ -22,30 +22,11 @@ export async function getStitchedSchemaFromLocalSchemas( result: ExecutionResult | AsyncIterable, ) => void, ): Promise { - const { IntrospectAndCompose, LocalGraphQLDataSource } = await import( - '@apollo/gateway' - ); - const introspectAndCompose = await new IntrospectAndCompose({ - subgraphs: Object.keys(localSchemas).map((name) => ({ - name, - url: 'http://localhost/' + name, - })), - }).initialize({ - healthCheck() { - return fakePromise(undefined); - }, - update() {}, - getDataSource({ name }) { - const [, localSchema] = - Object.entries(localSchemas).find( - ([key]) => kebabCase(key) === kebabCase(name), - ) || []; - if (localSchema) { - return new LocalGraphQLDataSource(localSchema); - } - throw new Error(`Unknown subgraph ${name}`); - }, - }); + const supergraphSdl = await composeLocalSchemasWithApollo(Object.entries(localSchemas).map(([name, schema]) => ({ + name, + schema, + url: `http://localhost/${name}`, + }))); function createTracedExecutor(name: string, schema: GraphQLSchema) { const executor = createDefaultExecutor(schema); return function tracedExecutor(request: ExecutionRequest) { @@ -60,7 +41,7 @@ export async function getStitchedSchemaFromLocalSchemas( }; } return getStitchedSchemaFromSupergraphSdl({ - supergraphSdl: introspectAndCompose.supergraphSdl, + supergraphSdl, onSubschemaConfig(subschemaConfig) { const [name, localSchema] = Object.entries(localSchemas).find( diff --git a/packages/federation/tests/optimizations.test.ts b/packages/federation/tests/optimizations.test.ts index 36837c0bc..255fb6a48 100644 --- a/packages/federation/tests/optimizations.test.ts +++ b/packages/federation/tests/optimizations.test.ts @@ -1,7 +1,7 @@ import { buildSubgraphSchema } from '@apollo/subgraph'; import { createDefaultExecutor } from '@graphql-tools/delegate'; import { normalizedExecutor } from '@graphql-tools/executor'; -import { ExecutionRequest, Executor, fakePromise } from '@graphql-tools/utils'; +import { ExecutionRequest, Executor } from '@graphql-tools/utils'; import { GraphQLSchema, parse, print, versionInfo } from 'graphql'; import { kebabCase } from 'lodash'; import { afterEach, beforeAll, beforeEach, describe, expect, it } from 'vitest'; @@ -15,6 +15,7 @@ import { Eschema, } from './fixtures/optimizations/awareness-of-other-fields'; import { getStitchedSchemaFromLocalSchemas } from './getStitchedSchemaFromLocalSchemas'; +import { composeLocalSchemasWithApollo } from '@internal/testing'; describe('Optimizations', () => { let serviceCallCnt: Record; @@ -160,86 +161,63 @@ describe('awareness-of-other-fields', () => { subgraphCalls = {}; }); beforeAll(async () => { - const { IntrospectAndCompose, LocalGraphQLDataSource } = await import( - '@apollo/gateway' - ); - return new IntrospectAndCompose({ - subgraphs: [ - { name: 'A', url: 'A' }, - { name: 'B', url: 'B' }, - { name: 'C', url: 'C' }, - { name: 'D', url: 'D' }, - { name: 'E', url: 'E' }, - ], - }) - .initialize({ - healthCheck() { - return fakePromise(undefined); - }, - update(updatedSupergraphSdl) { - supergraphSdl = updatedSupergraphSdl; - }, - getDataSource({ name }) { - switch (name) { - case 'A': - return new LocalGraphQLDataSource(Aschema); - case 'B': - return new LocalGraphQLDataSource(Bschema); - case 'C': - return new LocalGraphQLDataSource(Cschema); - case 'D': - return new LocalGraphQLDataSource(Dschema); - case 'E': - return new LocalGraphQLDataSource(Eschema); - } - throw new Error(`Unknown subgraph ${name}`); - }, - }) - .then((result) => { - supergraphSdl = result.supergraphSdl; - }) - .then(() => { - gwSchema = getStitchedSchemaFromSupergraphSdl({ - supergraphSdl, - onSubschemaConfig(subschemaConfig) { - const subgraphName = subschemaConfig.name; - switch (subgraphName) { - case 'A': - subschemaConfig.executor = getTracedExecutor( - subgraphName, - Aschema, - ); - break; - case 'B': - subschemaConfig.executor = getTracedExecutor( - subgraphName, - Bschema, - ); - break; - case 'C': - subschemaConfig.executor = getTracedExecutor( - subgraphName, - Cschema, - ); - break; - case 'D': - subschemaConfig.executor = getTracedExecutor( - subgraphName, - Dschema, - ); - break; - case 'E': - subschemaConfig.executor = getTracedExecutor( - subgraphName, - Eschema, - ); - break; - default: - throw new Error(`Unknown subgraph ${subgraphName}`); - } - }, - }); - }); + supergraphSdl = await composeLocalSchemasWithApollo([ + { + name: 'A', + schema: Aschema, + }, + { + name: 'B', + schema: Bschema, + }, + { + name: 'C', + schema: Cschema, + }, + { + name: 'D', + schema: Dschema, + }, + { + name: 'E', + schema: Eschema, + }, + ]); + gwSchema = getStitchedSchemaFromSupergraphSdl({ + supergraphSdl, + onSubschemaConfig(subschemaConfig) { + const subgraphName = subschemaConfig.name; + switch (subgraphName) { + case 'A': + subschemaConfig.executor = getTracedExecutor( + subgraphName, + Aschema); + break; + case 'B': + subschemaConfig.executor = getTracedExecutor( + subgraphName, + Bschema); + break; + case 'C': + subschemaConfig.executor = getTracedExecutor( + subgraphName, + Cschema); + break; + case 'D': + subschemaConfig.executor = getTracedExecutor( + subgraphName, + Dschema); + break; + case 'E': + subschemaConfig.executor = getTracedExecutor( + subgraphName, + Eschema); + break; + default: + throw new Error(`Unknown subgraph ${subgraphName}`); + } + }, + }); }); it('do not call A subgraph as an extra', async () => { const result = await normalizedExecutor({ @@ -433,34 +411,20 @@ it('prevents recursively depending fields in case of multiple keys', async () => }, }); - const { IntrospectAndCompose, LocalGraphQLDataSource } = await import( - '@apollo/gateway' - ); - const introspectAndCompose = await new IntrospectAndCompose({ - subgraphs: [ - { name: 'books', url: 'books' }, - { name: 'other-service', url: 'other-service' }, - { name: 'authors', url: 'authors' }, - ], - }).initialize({ - healthCheck() { - return fakePromise(undefined); + const supergraphSdl = await composeLocalSchemasWithApollo([ + { + name: 'books', + schema: booksSchema, }, - update() {}, - getDataSource({ name }) { - switch (kebabCase(name)) { - case 'books': - return new LocalGraphQLDataSource(booksSchema); - case 'other-service': - return new LocalGraphQLDataSource(multiLocationMgmt); - case 'authors': - return new LocalGraphQLDataSource(authorsSchema); - } - throw new Error(`Unknown subgraph ${name}`); + { + name: 'authors', + schema: authorsSchema, }, - }); - const supergraphSdl = introspectAndCompose.supergraphSdl; - await introspectAndCompose.cleanup(); + { + name: 'other-service', + schema: multiLocationMgmt, + }, + ]) let subgraphCallsMap: Record< string, { diff --git a/packages/federation/tests/subscription.test.ts b/packages/federation/tests/subscription.test.ts index 270d2890e..236df4c69 100644 --- a/packages/federation/tests/subscription.test.ts +++ b/packages/federation/tests/subscription.test.ts @@ -1,12 +1,11 @@ -import { IntrospectAndCompose, LocalGraphQLDataSource } from '@apollo/gateway'; import { buildSubgraphSchema } from '@apollo/subgraph'; import { createDefaultExecutor } from '@graphql-tools/delegate'; import { normalizedExecutor } from '@graphql-tools/executor'; -import { fakePromise } from '@graphql-tools/utils'; import { createPubSub } from '@graphql-yoga/subscription'; import { assertAsyncIterable, assertSingleExecutionValue, + composeLocalSchemasWithApollo, } from '@internal/testing'; import { parse } from 'graphql'; import { describe, expect, it } from 'vitest'; @@ -96,31 +95,16 @@ describe('Subscriptions in Federation', () => { }, }, }); - const { supergraphSdl, cleanup } = await new IntrospectAndCompose({ - subgraphs: [ - { - name: 'posts', - url: 'http://localhost:4001', - }, - { - name: 'comments', - url: 'http://localhost:4002', - }, - ], - }).initialize({ - update() {}, - healthCheck: () => fakePromise(undefined), - getDataSource({ name }) { - if (name === 'posts') { - return new LocalGraphQLDataSource(postsSchema); - } - if (name === 'comments') { - return new LocalGraphQLDataSource(commentsSchema); - } - throw new Error(`Unknown subgraph: ${name}`); + const supergraphSdl = await composeLocalSchemasWithApollo([ + { + name: 'posts', + schema: postsSchema, }, - }); - await cleanup(); + { + name: 'comments', + schema: commentsSchema, + }, + ]) const schema = getStitchedSchemaFromSupergraphSdl({ supergraphSdl, onSubschemaConfig(subschemaConfig) { From 9f62a3ff45f5158e15d1411b47dbdaea476b79f1 Mon Sep 17 00:00:00 2001 From: Arda TANRIKULU Date: Tue, 24 Dec 2024 11:54:06 +0300 Subject: [PATCH 09/13] Fix typings --- .../src/composeLocalSchemasWithApollo.ts | 6 +++-- .../federation/tests/defer-stream.test.ts | 9 +++---- .../tests/fixtures/gateway/supergraph.ts | 2 -- .../getStitchedSchemaFromLocalSchemas.ts | 14 ++++++----- .../federation/tests/optimizations.test.ts | 24 ++++++------------- .../federation/tests/subscription.test.ts | 2 +- 6 files changed, 25 insertions(+), 32 deletions(-) diff --git a/internal/testing/src/composeLocalSchemasWithApollo.ts b/internal/testing/src/composeLocalSchemasWithApollo.ts index 931f798e3..57b8d663b 100644 --- a/internal/testing/src/composeLocalSchemasWithApollo.ts +++ b/internal/testing/src/composeLocalSchemasWithApollo.ts @@ -9,12 +9,14 @@ export interface ComposeLocalSchemaWithApolloSubgraphOpts { export async function composeLocalSchemasWithApollo( subgraphs: ComposeLocalSchemaWithApolloSubgraphOpts[], ) { - const { IntrospectAndCompose, LocalGraphQLDataSource } = await import('@apollo/gateway'); + const { IntrospectAndCompose, LocalGraphQLDataSource } = await import( + '@apollo/gateway' + ); let { supergraphSdl, cleanup } = await new IntrospectAndCompose({ subgraphs: subgraphs.map(({ name, url = `http://localhost/${name}` }) => ({ name, url, - })) + })), }).initialize({ update(updatedSupergraphSdl: string) { supergraphSdl = updatedSupergraphSdl; diff --git a/packages/federation/tests/defer-stream.test.ts b/packages/federation/tests/defer-stream.test.ts index 493414f4f..829e8fdd4 100644 --- a/packages/federation/tests/defer-stream.test.ts +++ b/packages/federation/tests/defer-stream.test.ts @@ -1,17 +1,18 @@ import { setTimeout } from 'timers/promises'; import { inspect } from 'util'; -import { IntrospectAndCompose, LocalGraphQLDataSource } from '@apollo/gateway'; import { buildSubgraphSchema } from '@apollo/subgraph'; import { normalizedExecutor } from '@graphql-tools/executor'; import { buildHTTPExecutor } from '@graphql-tools/executor-http'; import { asArray, ExecutionResult, - fakePromise, mergeDeep, } from '@graphql-tools/utils'; import { useDeferStream } from '@graphql-yoga/plugin-defer-stream'; -import { assertAsyncIterable, composeLocalSchemasWithApollo } from '@internal/testing'; +import { + assertAsyncIterable, + composeLocalSchemasWithApollo, +} from '@internal/testing'; import { GraphQLSchema, parse, print } from 'graphql'; import { createYoga } from 'graphql-yoga'; import _ from 'lodash'; @@ -176,7 +177,7 @@ describe('Defer/Stream', () => { const supergraphSdl = await composeLocalSchemasWithApollo([ { name: 'users', schema: usersSubgraph }, { name: 'posts', schema: postsSubgraph }, - ]) + ]); schema = getStitchedSchemaFromSupergraphSdl({ supergraphSdl, onSubschemaConfig(subschemaConfig) { diff --git a/packages/federation/tests/fixtures/gateway/supergraph.ts b/packages/federation/tests/fixtures/gateway/supergraph.ts index 879fdbd4a..a2ef2c678 100644 --- a/packages/federation/tests/fixtures/gateway/supergraph.ts +++ b/packages/federation/tests/fixtures/gateway/supergraph.ts @@ -1,6 +1,4 @@ -import { IntrospectAndCompose, LocalGraphQLDataSource } from '@apollo/gateway'; import { buildSubgraphSchema } from '@apollo/subgraph'; -import { fakePromise } from '@graphql-tools/utils'; import { accounts, inventory, products, reviews } from '@internal/e2e'; import { composeLocalSchemasWithApollo } from '@internal/testing'; import { DocumentNode, GraphQLSchema } from 'graphql'; diff --git a/packages/federation/tests/getStitchedSchemaFromLocalSchemas.ts b/packages/federation/tests/getStitchedSchemaFromLocalSchemas.ts index 3f3b9253f..b29895b31 100644 --- a/packages/federation/tests/getStitchedSchemaFromLocalSchemas.ts +++ b/packages/federation/tests/getStitchedSchemaFromLocalSchemas.ts @@ -4,10 +4,10 @@ import { ExecutionResult, mapMaybePromise, } from '@graphql-tools/utils'; +import { composeLocalSchemasWithApollo } from '@internal/testing'; import { GraphQLSchema } from 'graphql'; import { kebabCase } from 'lodash'; import { getStitchedSchemaFromSupergraphSdl } from '../src/supergraph'; -import { composeLocalSchemasWithApollo } from '@internal/testing'; export interface LocalSchemaItem { name: string; @@ -22,11 +22,13 @@ export async function getStitchedSchemaFromLocalSchemas( result: ExecutionResult | AsyncIterable, ) => void, ): Promise { - const supergraphSdl = await composeLocalSchemasWithApollo(Object.entries(localSchemas).map(([name, schema]) => ({ - name, - schema, - url: `http://localhost/${name}`, - }))); + const supergraphSdl = await composeLocalSchemasWithApollo( + Object.entries(localSchemas).map(([name, schema]) => ({ + name, + schema, + url: `http://localhost/${name}`, + })), + ); function createTracedExecutor(name: string, schema: GraphQLSchema) { const executor = createDefaultExecutor(schema); return function tracedExecutor(request: ExecutionRequest) { diff --git a/packages/federation/tests/optimizations.test.ts b/packages/federation/tests/optimizations.test.ts index 255fb6a48..e6adde137 100644 --- a/packages/federation/tests/optimizations.test.ts +++ b/packages/federation/tests/optimizations.test.ts @@ -2,6 +2,7 @@ import { buildSubgraphSchema } from '@apollo/subgraph'; import { createDefaultExecutor } from '@graphql-tools/delegate'; import { normalizedExecutor } from '@graphql-tools/executor'; import { ExecutionRequest, Executor } from '@graphql-tools/utils'; +import { composeLocalSchemasWithApollo } from '@internal/testing'; import { GraphQLSchema, parse, print, versionInfo } from 'graphql'; import { kebabCase } from 'lodash'; import { afterEach, beforeAll, beforeEach, describe, expect, it } from 'vitest'; @@ -15,7 +16,6 @@ import { Eschema, } from './fixtures/optimizations/awareness-of-other-fields'; import { getStitchedSchemaFromLocalSchemas } from './getStitchedSchemaFromLocalSchemas'; -import { composeLocalSchemasWithApollo } from '@internal/testing'; describe('Optimizations', () => { let serviceCallCnt: Record; @@ -189,29 +189,19 @@ describe('awareness-of-other-fields', () => { const subgraphName = subschemaConfig.name; switch (subgraphName) { case 'A': - subschemaConfig.executor = getTracedExecutor( - subgraphName, - Aschema); + subschemaConfig.executor = getTracedExecutor(subgraphName, Aschema); break; case 'B': - subschemaConfig.executor = getTracedExecutor( - subgraphName, - Bschema); + subschemaConfig.executor = getTracedExecutor(subgraphName, Bschema); break; case 'C': - subschemaConfig.executor = getTracedExecutor( - subgraphName, - Cschema); + subschemaConfig.executor = getTracedExecutor(subgraphName, Cschema); break; case 'D': - subschemaConfig.executor = getTracedExecutor( - subgraphName, - Dschema); + subschemaConfig.executor = getTracedExecutor(subgraphName, Dschema); break; case 'E': - subschemaConfig.executor = getTracedExecutor( - subgraphName, - Eschema); + subschemaConfig.executor = getTracedExecutor(subgraphName, Eschema); break; default: throw new Error(`Unknown subgraph ${subgraphName}`); @@ -424,7 +414,7 @@ it('prevents recursively depending fields in case of multiple keys', async () => name: 'other-service', schema: multiLocationMgmt, }, - ]) + ]); let subgraphCallsMap: Record< string, { diff --git a/packages/federation/tests/subscription.test.ts b/packages/federation/tests/subscription.test.ts index 236df4c69..13ac97052 100644 --- a/packages/federation/tests/subscription.test.ts +++ b/packages/federation/tests/subscription.test.ts @@ -104,7 +104,7 @@ describe('Subscriptions in Federation', () => { name: 'comments', schema: commentsSchema, }, - ]) + ]); const schema = getStitchedSchemaFromSupergraphSdl({ supergraphSdl, onSubschemaConfig(subschemaConfig) { From 810c9eab62184c88e7cb54d9918b387a87c73e44 Mon Sep 17 00:00:00 2001 From: Arda TANRIKULU Date: Tue, 24 Dec 2024 11:54:28 +0300 Subject: [PATCH 10/13] Format --- packages/federation/tests/defer-stream.test.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/federation/tests/defer-stream.test.ts b/packages/federation/tests/defer-stream.test.ts index 829e8fdd4..d35832963 100644 --- a/packages/federation/tests/defer-stream.test.ts +++ b/packages/federation/tests/defer-stream.test.ts @@ -3,11 +3,7 @@ import { inspect } from 'util'; import { buildSubgraphSchema } from '@apollo/subgraph'; import { normalizedExecutor } from '@graphql-tools/executor'; import { buildHTTPExecutor } from '@graphql-tools/executor-http'; -import { - asArray, - ExecutionResult, - mergeDeep, -} from '@graphql-tools/utils'; +import { asArray, ExecutionResult, mergeDeep } from '@graphql-tools/utils'; import { useDeferStream } from '@graphql-yoga/plugin-defer-stream'; import { assertAsyncIterable, From d586de2f127862cd898cd450457fdfea6b31535a Mon Sep 17 00:00:00 2001 From: Arda TANRIKULU Date: Tue, 7 Jan 2025 19:12:28 +0300 Subject: [PATCH 11/13] Types are fixed --- packages/runtime/tests/cache-control.test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/runtime/tests/cache-control.test.ts b/packages/runtime/tests/cache-control.test.ts index 35c6b354d..adb91b238 100644 --- a/packages/runtime/tests/cache-control.test.ts +++ b/packages/runtime/tests/cache-control.test.ts @@ -172,7 +172,6 @@ describe.skipIf(process.env['LEAK_TEST'])( supergraph, cache, plugins: (ctx) => [ - // @ts-expect-error - we need to fix the types useHttpCache(ctx), ], }); From 2437bbfce5a7781661eeb660184c3068d37446cd Mon Sep 17 00:00:00 2001 From: Arda TANRIKULU Date: Tue, 7 Jan 2025 19:12:54 +0300 Subject: [PATCH 12/13] Format --- packages/runtime/tests/cache-control.test.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/runtime/tests/cache-control.test.ts b/packages/runtime/tests/cache-control.test.ts index adb91b238..bb84d666c 100644 --- a/packages/runtime/tests/cache-control.test.ts +++ b/packages/runtime/tests/cache-control.test.ts @@ -171,9 +171,7 @@ describe.skipIf(process.env['LEAK_TEST'])( await using gw = createGatewayRuntime({ supergraph, cache, - plugins: (ctx) => [ - useHttpCache(ctx), - ], + plugins: (ctx) => [useHttpCache(ctx)], }); async function makeRequest() { const res = await gw.fetch('http://localhost:4000/graphql', { From e6ebc25d923b7c9c6e303ebd452302e1459062a6 Mon Sep 17 00:00:00 2001 From: theguild-bot Date: Tue, 7 Jan 2025 16:16:20 +0000 Subject: [PATCH 13/13] docs(examples): converted from e2es --- examples/apq-subgraphs/package-lock.json | 14 +++++++------- examples/apq-subgraphs/package.json | 2 +- examples/extra-fields/package-lock.json | 14 +++++++------- examples/extra-fields/package.json | 2 +- examples/federation-example/package-lock.json | 14 +++++++------- examples/federation-example/package.json | 2 +- examples/federation-mixed/package-lock.json | 14 +++++++------- examples/federation-mixed/package.json | 2 +- .../package-lock.json | 14 +++++++------- .../package.json | 2 +- examples/file-upload/package-lock.json | 14 +++++++------- examples/file-upload/package.json | 2 +- examples/hmac-auth-https/package-lock.json | 14 +++++++------- examples/hmac-auth-https/package.json | 2 +- .../package-lock.json | 14 +++++++------- .../interface-additional-resolvers/package.json | 2 +- .../json-schema-subscriptions/package-lock.json | 14 +++++++------- examples/json-schema-subscriptions/package.json | 2 +- .../openapi-additional-resolvers/package-lock.json | 14 +++++++------- examples/openapi-additional-resolvers/package.json | 2 +- examples/openapi-arg-rename/package-lock.json | 14 +++++++------- examples/openapi-arg-rename/package.json | 2 +- examples/openapi-javascript-wiki/package-lock.json | 14 +++++++------- examples/openapi-javascript-wiki/package.json | 2 +- examples/openapi-subscriptions/package-lock.json | 14 +++++++------- examples/openapi-subscriptions/package.json | 2 +- .../operation-field-permissions/package-lock.json | 14 +++++++------- examples/operation-field-permissions/package.json | 2 +- examples/programmatic-batching/package-lock.json | 14 +++++++------- examples/programmatic-batching/package.json | 2 +- .../package-lock.json | 14 +++++++------- .../subscriptions-with-transforms/package.json | 2 +- examples/type-merging-batching/package-lock.json | 14 +++++++------- examples/type-merging-batching/package.json | 2 +- 34 files changed, 136 insertions(+), 136 deletions(-) diff --git a/examples/apq-subgraphs/package-lock.json b/examples/apq-subgraphs/package-lock.json index b375d838a..fdf52afc4 100644 --- a/examples/apq-subgraphs/package-lock.json +++ b/examples/apq-subgraphs/package-lock.json @@ -7,7 +7,7 @@ "name": "@example/apq-subgraphs", "dependencies": { "@apollo/server": "^4.11.2", - "@graphql-hive/gateway": "^1.7.6", + "@graphql-hive/gateway": "^1.7.7", "@graphql-mesh/compose-cli": "^1.2.13", "graphql": "^16.9.0", "tslib": "^2.8.1" @@ -1301,9 +1301,9 @@ } }, "node_modules/@graphql-hive/gateway": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.6.tgz", - "integrity": "sha512-9/ccq8muJU/zL8a+R2eZjBhKhUZ+V+2j1JVA8BLam9lEmKKwp0DfPK8R4jHSiFLZG8te+jtw1UoyxKrtzMiQDA==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.7.tgz", + "integrity": "sha512-NokJnWFePO69B9LahCbVtIrUD+pDmsU3lgBdBK8vA6VDzPRO23YJOa2S1IpT3jtC5wNaUC/kc8Xbs4QpMtuvTQ==", "license": "MIT", "dependencies": { "@commander-js/extra-typings": "^13.0.0", @@ -4816,9 +4816,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "version": "1.5.78", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.78.tgz", + "integrity": "sha512-UmwIt7HRKN1rsJfddG5UG7rCTCTAKoS9JeOy/R0zSenAyaZ8SU3RuXlwcratxhdxGRNpk03iq8O7BA3W7ibLVw==", "license": "ISC" }, "node_modules/emoji-regex": { diff --git a/examples/apq-subgraphs/package.json b/examples/apq-subgraphs/package.json index a4e80ee46..6f40a45ad 100644 --- a/examples/apq-subgraphs/package.json +++ b/examples/apq-subgraphs/package.json @@ -9,7 +9,7 @@ "@graphql-mesh/compose-cli": "^1.2.13", "graphql": "^16.9.0", "tslib": "^2.8.1", - "@graphql-hive/gateway": "^1.7.6" + "@graphql-hive/gateway": "^1.7.7" }, "scripts": { "service:greetings": "tsx services/greetings.ts", diff --git a/examples/extra-fields/package-lock.json b/examples/extra-fields/package-lock.json index 3406dea79..e19eed4cf 100644 --- a/examples/extra-fields/package-lock.json +++ b/examples/extra-fields/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "@example/extra-fields", "dependencies": { - "@graphql-hive/gateway": "^1.7.6", + "@graphql-hive/gateway": "^1.7.7", "@graphql-mesh/compose-cli": "^1.2.13", "graphql": "^16.9.0", "graphql-yoga": "^5.10.6", @@ -1088,9 +1088,9 @@ } }, "node_modules/@graphql-hive/gateway": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.6.tgz", - "integrity": "sha512-9/ccq8muJU/zL8a+R2eZjBhKhUZ+V+2j1JVA8BLam9lEmKKwp0DfPK8R4jHSiFLZG8te+jtw1UoyxKrtzMiQDA==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.7.tgz", + "integrity": "sha512-NokJnWFePO69B9LahCbVtIrUD+pDmsU3lgBdBK8vA6VDzPRO23YJOa2S1IpT3jtC5wNaUC/kc8Xbs4QpMtuvTQ==", "license": "MIT", "dependencies": { "@commander-js/extra-typings": "^13.0.0", @@ -4231,9 +4231,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "version": "1.5.78", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.78.tgz", + "integrity": "sha512-UmwIt7HRKN1rsJfddG5UG7rCTCTAKoS9JeOy/R0zSenAyaZ8SU3RuXlwcratxhdxGRNpk03iq8O7BA3W7ibLVw==", "license": "ISC" }, "node_modules/emoji-regex": { diff --git a/examples/extra-fields/package.json b/examples/extra-fields/package.json index 6a0b1de2c..c45b2804c 100644 --- a/examples/extra-fields/package.json +++ b/examples/extra-fields/package.json @@ -6,7 +6,7 @@ "graphql": "^16.9.0", "graphql-yoga": "^5.10.6", "tslib": "^2.8.1", - "@graphql-hive/gateway": "^1.7.6" + "@graphql-hive/gateway": "^1.7.7" }, "devDependencies": { "tsx": "^4.19.2" diff --git a/examples/federation-example/package-lock.json b/examples/federation-example/package-lock.json index eac8a3b88..7c0e2b877 100644 --- a/examples/federation-example/package-lock.json +++ b/examples/federation-example/package-lock.json @@ -8,7 +8,7 @@ "dependencies": { "@apollo/server": "^4.10.3", "@apollo/subgraph": "^2.7.2", - "@graphql-hive/gateway": "^1.7.6", + "@graphql-hive/gateway": "^1.7.7", "graphql": "^16.9.0" }, "devDependencies": { @@ -1363,9 +1363,9 @@ } }, "node_modules/@graphql-hive/gateway": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.6.tgz", - "integrity": "sha512-9/ccq8muJU/zL8a+R2eZjBhKhUZ+V+2j1JVA8BLam9lEmKKwp0DfPK8R4jHSiFLZG8te+jtw1UoyxKrtzMiQDA==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.7.tgz", + "integrity": "sha512-NokJnWFePO69B9LahCbVtIrUD+pDmsU3lgBdBK8vA6VDzPRO23YJOa2S1IpT3jtC5wNaUC/kc8Xbs4QpMtuvTQ==", "license": "MIT", "dependencies": { "@commander-js/extra-typings": "^13.0.0", @@ -4788,9 +4788,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "version": "1.5.78", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.78.tgz", + "integrity": "sha512-UmwIt7HRKN1rsJfddG5UG7rCTCTAKoS9JeOy/R0zSenAyaZ8SU3RuXlwcratxhdxGRNpk03iq8O7BA3W7ibLVw==", "license": "ISC" }, "node_modules/emoji-regex": { diff --git a/examples/federation-example/package.json b/examples/federation-example/package.json index c2d503b48..24485c9ac 100644 --- a/examples/federation-example/package.json +++ b/examples/federation-example/package.json @@ -9,7 +9,7 @@ "@apollo/server": "^4.10.3", "@apollo/subgraph": "^2.7.2", "graphql": "^16.9.0", - "@graphql-hive/gateway": "^1.7.6" + "@graphql-hive/gateway": "^1.7.7" }, "scripts": { "service:accounts": "tsx services/accounts/index.ts", diff --git a/examples/federation-mixed/package-lock.json b/examples/federation-mixed/package-lock.json index 05305aeed..d0445bb98 100644 --- a/examples/federation-mixed/package-lock.json +++ b/examples/federation-mixed/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "@example/federation-mixed", "dependencies": { - "@graphql-hive/gateway": "^1.7.6", + "@graphql-hive/gateway": "^1.7.7", "@graphql-mesh/compose-cli": "^1.2.13", "@omnigraph/openapi": "^0.108.6", "graphql": "^16.9.0", @@ -1117,9 +1117,9 @@ } }, "node_modules/@graphql-hive/gateway": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.6.tgz", - "integrity": "sha512-9/ccq8muJU/zL8a+R2eZjBhKhUZ+V+2j1JVA8BLam9lEmKKwp0DfPK8R4jHSiFLZG8te+jtw1UoyxKrtzMiQDA==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.7.tgz", + "integrity": "sha512-NokJnWFePO69B9LahCbVtIrUD+pDmsU3lgBdBK8vA6VDzPRO23YJOa2S1IpT3jtC5wNaUC/kc8Xbs4QpMtuvTQ==", "license": "MIT", "dependencies": { "@commander-js/extra-typings": "^13.0.0", @@ -4500,9 +4500,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "version": "1.5.78", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.78.tgz", + "integrity": "sha512-UmwIt7HRKN1rsJfddG5UG7rCTCTAKoS9JeOy/R0zSenAyaZ8SU3RuXlwcratxhdxGRNpk03iq8O7BA3W7ibLVw==", "license": "ISC" }, "node_modules/emoji-regex": { diff --git a/examples/federation-mixed/package.json b/examples/federation-mixed/package.json index f605881d2..45fb0bdc0 100644 --- a/examples/federation-mixed/package.json +++ b/examples/federation-mixed/package.json @@ -6,7 +6,7 @@ "@omnigraph/openapi": "^0.108.6", "graphql": "^16.9.0", "tslib": "^2.8.1", - "@graphql-hive/gateway": "^1.7.6" + "@graphql-hive/gateway": "^1.7.7" }, "devDependencies": { "tsx": "^4.19.2", diff --git a/examples/federation-subscriptions-passthrough/package-lock.json b/examples/federation-subscriptions-passthrough/package-lock.json index 22d0f29e2..105f8814a 100644 --- a/examples/federation-subscriptions-passthrough/package-lock.json +++ b/examples/federation-subscriptions-passthrough/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "@example/federation-subscriptions-passthrough", "dependencies": { - "@graphql-hive/gateway": "^1.7.6", + "@graphql-hive/gateway": "^1.7.7", "@graphql-mesh/transport-ws": "^0.4.15", "@whatwg-node/fetch": "^0.10.1", "graphql": "^16.9.0", @@ -1116,9 +1116,9 @@ } }, "node_modules/@graphql-hive/gateway": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.6.tgz", - "integrity": "sha512-9/ccq8muJU/zL8a+R2eZjBhKhUZ+V+2j1JVA8BLam9lEmKKwp0DfPK8R4jHSiFLZG8te+jtw1UoyxKrtzMiQDA==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.7.tgz", + "integrity": "sha512-NokJnWFePO69B9LahCbVtIrUD+pDmsU3lgBdBK8vA6VDzPRO23YJOa2S1IpT3jtC5wNaUC/kc8Xbs4QpMtuvTQ==", "license": "MIT", "dependencies": { "@commander-js/extra-typings": "^13.0.0", @@ -3992,9 +3992,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "version": "1.5.78", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.78.tgz", + "integrity": "sha512-UmwIt7HRKN1rsJfddG5UG7rCTCTAKoS9JeOy/R0zSenAyaZ8SU3RuXlwcratxhdxGRNpk03iq8O7BA3W7ibLVw==", "license": "ISC" }, "node_modules/emoji-regex": { diff --git a/examples/federation-subscriptions-passthrough/package.json b/examples/federation-subscriptions-passthrough/package.json index c6b02ad81..a55b8c0cf 100644 --- a/examples/federation-subscriptions-passthrough/package.json +++ b/examples/federation-subscriptions-passthrough/package.json @@ -6,7 +6,7 @@ "@whatwg-node/fetch": "^0.10.1", "graphql": "^16.9.0", "tslib": "^2.8.1", - "@graphql-hive/gateway": "^1.7.6" + "@graphql-hive/gateway": "^1.7.7" }, "devDependencies": { "tsx": "^4.19.2", diff --git a/examples/file-upload/package-lock.json b/examples/file-upload/package-lock.json index 44b21196b..d3a698a8e 100644 --- a/examples/file-upload/package-lock.json +++ b/examples/file-upload/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "@example/file-upload", "dependencies": { - "@graphql-hive/gateway": "^1.7.6", + "@graphql-hive/gateway": "^1.7.7", "@graphql-mesh/compose-cli": "^1.2.13", "graphql": "^16.9.0", "tslib": "^2.8.1" @@ -1087,9 +1087,9 @@ } }, "node_modules/@graphql-hive/gateway": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.6.tgz", - "integrity": "sha512-9/ccq8muJU/zL8a+R2eZjBhKhUZ+V+2j1JVA8BLam9lEmKKwp0DfPK8R4jHSiFLZG8te+jtw1UoyxKrtzMiQDA==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.7.tgz", + "integrity": "sha512-NokJnWFePO69B9LahCbVtIrUD+pDmsU3lgBdBK8vA6VDzPRO23YJOa2S1IpT3jtC5wNaUC/kc8Xbs4QpMtuvTQ==", "license": "MIT", "dependencies": { "@commander-js/extra-typings": "^13.0.0", @@ -4230,9 +4230,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "version": "1.5.78", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.78.tgz", + "integrity": "sha512-UmwIt7HRKN1rsJfddG5UG7rCTCTAKoS9JeOy/R0zSenAyaZ8SU3RuXlwcratxhdxGRNpk03iq8O7BA3W7ibLVw==", "license": "ISC" }, "node_modules/emoji-regex": { diff --git a/examples/file-upload/package.json b/examples/file-upload/package.json index bebff5a7b..2b5f801f2 100644 --- a/examples/file-upload/package.json +++ b/examples/file-upload/package.json @@ -5,7 +5,7 @@ "@graphql-mesh/compose-cli": "^1.2.13", "graphql": "^16.9.0", "tslib": "^2.8.1", - "@graphql-hive/gateway": "^1.7.6" + "@graphql-hive/gateway": "^1.7.7" }, "devDependencies": { "tsx": "^4.19.2" diff --git a/examples/hmac-auth-https/package-lock.json b/examples/hmac-auth-https/package-lock.json index 1fbeabfe0..6a10dc9a3 100644 --- a/examples/hmac-auth-https/package-lock.json +++ b/examples/hmac-auth-https/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "@apollo/server": "^4.10.3", "@apollo/subgraph": "^2.9.3", - "@graphql-hive/gateway": "^1.7.6", + "@graphql-hive/gateway": "^1.7.7", "@graphql-mesh/compose-cli": "^1.3.3", "@graphql-mesh/hmac-upstream-signature": "^1.2.19", "@graphql-mesh/plugin-jwt-auth": "^1.4.0", @@ -1340,9 +1340,9 @@ } }, "node_modules/@graphql-hive/gateway": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.6.tgz", - "integrity": "sha512-9/ccq8muJU/zL8a+R2eZjBhKhUZ+V+2j1JVA8BLam9lEmKKwp0DfPK8R4jHSiFLZG8te+jtw1UoyxKrtzMiQDA==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.7.tgz", + "integrity": "sha512-NokJnWFePO69B9LahCbVtIrUD+pDmsU3lgBdBK8vA6VDzPRO23YJOa2S1IpT3jtC5wNaUC/kc8Xbs4QpMtuvTQ==", "license": "MIT", "dependencies": { "@commander-js/extra-typings": "^13.0.0", @@ -4865,9 +4865,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "version": "1.5.78", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.78.tgz", + "integrity": "sha512-UmwIt7HRKN1rsJfddG5UG7rCTCTAKoS9JeOy/R0zSenAyaZ8SU3RuXlwcratxhdxGRNpk03iq8O7BA3W7ibLVw==", "license": "ISC" }, "node_modules/emoji-regex": { diff --git a/examples/hmac-auth-https/package.json b/examples/hmac-auth-https/package.json index 88b8774e2..8c4353370 100644 --- a/examples/hmac-auth-https/package.json +++ b/examples/hmac-auth-https/package.json @@ -12,7 +12,7 @@ "dependencies": { "@apollo/server": "^4.10.3", "@apollo/subgraph": "^2.9.3", - "@graphql-hive/gateway": "^1.7.6", + "@graphql-hive/gateway": "^1.7.7", "@graphql-mesh/compose-cli": "^1.3.3", "@graphql-mesh/hmac-upstream-signature": "^1.2.19", "@graphql-mesh/plugin-jwt-auth": "^1.4.0", diff --git a/examples/interface-additional-resolvers/package-lock.json b/examples/interface-additional-resolvers/package-lock.json index becee90f1..9ebe9d743 100644 --- a/examples/interface-additional-resolvers/package-lock.json +++ b/examples/interface-additional-resolvers/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "@example/interface-additional-resolvers", "dependencies": { - "@graphql-hive/gateway": "^1.7.6", + "@graphql-hive/gateway": "^1.7.7", "@graphql-mesh/compose-cli": "^1.2.13", "graphql": "^16.9.0", "graphql-yoga": "^5.10.6", @@ -1088,9 +1088,9 @@ } }, "node_modules/@graphql-hive/gateway": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.6.tgz", - "integrity": "sha512-9/ccq8muJU/zL8a+R2eZjBhKhUZ+V+2j1JVA8BLam9lEmKKwp0DfPK8R4jHSiFLZG8te+jtw1UoyxKrtzMiQDA==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.7.tgz", + "integrity": "sha512-NokJnWFePO69B9LahCbVtIrUD+pDmsU3lgBdBK8vA6VDzPRO23YJOa2S1IpT3jtC5wNaUC/kc8Xbs4QpMtuvTQ==", "license": "MIT", "dependencies": { "@commander-js/extra-typings": "^13.0.0", @@ -4231,9 +4231,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "version": "1.5.78", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.78.tgz", + "integrity": "sha512-UmwIt7HRKN1rsJfddG5UG7rCTCTAKoS9JeOy/R0zSenAyaZ8SU3RuXlwcratxhdxGRNpk03iq8O7BA3W7ibLVw==", "license": "ISC" }, "node_modules/emoji-regex": { diff --git a/examples/interface-additional-resolvers/package.json b/examples/interface-additional-resolvers/package.json index 16895c123..b03244af0 100644 --- a/examples/interface-additional-resolvers/package.json +++ b/examples/interface-additional-resolvers/package.json @@ -6,7 +6,7 @@ "graphql": "^16.9.0", "graphql-yoga": "^5.10.6", "tslib": "^2.8.1", - "@graphql-hive/gateway": "^1.7.6" + "@graphql-hive/gateway": "^1.7.7" }, "devDependencies": { "tsx": "^4.19.2" diff --git a/examples/json-schema-subscriptions/package-lock.json b/examples/json-schema-subscriptions/package-lock.json index 0f24aeb47..d74d38917 100644 --- a/examples/json-schema-subscriptions/package-lock.json +++ b/examples/json-schema-subscriptions/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "@example/json-schema-subscriptions", "dependencies": { - "@graphql-hive/gateway": "^1.7.6", + "@graphql-hive/gateway": "^1.7.7", "@graphql-mesh/compose-cli": "^1.2.13", "@graphql-mesh/cross-helpers": "^0.4.9", "@graphql-mesh/plugin-live-query": "^0.103.0", @@ -1112,9 +1112,9 @@ } }, "node_modules/@graphql-hive/gateway": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.6.tgz", - "integrity": "sha512-9/ccq8muJU/zL8a+R2eZjBhKhUZ+V+2j1JVA8BLam9lEmKKwp0DfPK8R4jHSiFLZG8te+jtw1UoyxKrtzMiQDA==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.7.tgz", + "integrity": "sha512-NokJnWFePO69B9LahCbVtIrUD+pDmsU3lgBdBK8vA6VDzPRO23YJOa2S1IpT3jtC5wNaUC/kc8Xbs4QpMtuvTQ==", "license": "MIT", "dependencies": { "@commander-js/extra-typings": "^13.0.0", @@ -4412,9 +4412,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "version": "1.5.78", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.78.tgz", + "integrity": "sha512-UmwIt7HRKN1rsJfddG5UG7rCTCTAKoS9JeOy/R0zSenAyaZ8SU3RuXlwcratxhdxGRNpk03iq8O7BA3W7ibLVw==", "license": "ISC" }, "node_modules/emoji-regex": { diff --git a/examples/json-schema-subscriptions/package.json b/examples/json-schema-subscriptions/package.json index ce7d8e7c0..ce718cbfe 100644 --- a/examples/json-schema-subscriptions/package.json +++ b/examples/json-schema-subscriptions/package.json @@ -10,7 +10,7 @@ "graphql": "^16.9.0", "graphql-sse": "^2.5.3", "tslib": "^2.8.1", - "@graphql-hive/gateway": "^1.7.6" + "@graphql-hive/gateway": "^1.7.7" }, "devDependencies": { "tsx": "^4.19.2" diff --git a/examples/openapi-additional-resolvers/package-lock.json b/examples/openapi-additional-resolvers/package-lock.json index 447501181..07ef885a4 100644 --- a/examples/openapi-additional-resolvers/package-lock.json +++ b/examples/openapi-additional-resolvers/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "@example/openapi-additional-resolvers", "dependencies": { - "@graphql-hive/gateway": "^1.7.6", + "@graphql-hive/gateway": "^1.7.7", "@graphql-mesh/compose-cli": "^1.2.13", "@omnigraph/openapi": "^0.108.6", "graphql": "^16.9.0", @@ -678,9 +678,9 @@ } }, "node_modules/@graphql-hive/gateway": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.6.tgz", - "integrity": "sha512-9/ccq8muJU/zL8a+R2eZjBhKhUZ+V+2j1JVA8BLam9lEmKKwp0DfPK8R4jHSiFLZG8te+jtw1UoyxKrtzMiQDA==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.7.tgz", + "integrity": "sha512-NokJnWFePO69B9LahCbVtIrUD+pDmsU3lgBdBK8vA6VDzPRO23YJOa2S1IpT3jtC5wNaUC/kc8Xbs4QpMtuvTQ==", "license": "MIT", "dependencies": { "@commander-js/extra-typings": "^13.0.0", @@ -3928,9 +3928,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "version": "1.5.78", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.78.tgz", + "integrity": "sha512-UmwIt7HRKN1rsJfddG5UG7rCTCTAKoS9JeOy/R0zSenAyaZ8SU3RuXlwcratxhdxGRNpk03iq8O7BA3W7ibLVw==", "license": "ISC" }, "node_modules/emoji-regex": { diff --git a/examples/openapi-additional-resolvers/package.json b/examples/openapi-additional-resolvers/package.json index 71d6001c4..52646719a 100644 --- a/examples/openapi-additional-resolvers/package.json +++ b/examples/openapi-additional-resolvers/package.json @@ -7,7 +7,7 @@ "graphql": "^16.9.0", "moment": "^2.30.1", "tslib": "^2.8.1", - "@graphql-hive/gateway": "^1.7.6" + "@graphql-hive/gateway": "^1.7.7" }, "scripts": { "compose": "mesh-compose -o supergraph.graphql", diff --git a/examples/openapi-arg-rename/package-lock.json b/examples/openapi-arg-rename/package-lock.json index 1d8fe80ca..45a0b9825 100644 --- a/examples/openapi-arg-rename/package-lock.json +++ b/examples/openapi-arg-rename/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "@example/openapi-arg-rename", "dependencies": { - "@graphql-hive/gateway": "^1.7.6", + "@graphql-hive/gateway": "^1.7.7", "@graphql-mesh/compose-cli": "^1.2.13", "@omnigraph/openapi": "^0.108.6", "graphql": "16.10.0", @@ -1089,9 +1089,9 @@ } }, "node_modules/@graphql-hive/gateway": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.6.tgz", - "integrity": "sha512-9/ccq8muJU/zL8a+R2eZjBhKhUZ+V+2j1JVA8BLam9lEmKKwp0DfPK8R4jHSiFLZG8te+jtw1UoyxKrtzMiQDA==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.7.tgz", + "integrity": "sha512-NokJnWFePO69B9LahCbVtIrUD+pDmsU3lgBdBK8vA6VDzPRO23YJOa2S1IpT3jtC5wNaUC/kc8Xbs4QpMtuvTQ==", "license": "MIT", "dependencies": { "@commander-js/extra-typings": "^13.0.0", @@ -4339,9 +4339,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "version": "1.5.78", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.78.tgz", + "integrity": "sha512-UmwIt7HRKN1rsJfddG5UG7rCTCTAKoS9JeOy/R0zSenAyaZ8SU3RuXlwcratxhdxGRNpk03iq8O7BA3W7ibLVw==", "license": "ISC" }, "node_modules/emoji-regex": { diff --git a/examples/openapi-arg-rename/package.json b/examples/openapi-arg-rename/package.json index dcc8b7748..0be11c537 100644 --- a/examples/openapi-arg-rename/package.json +++ b/examples/openapi-arg-rename/package.json @@ -7,7 +7,7 @@ "graphql": "16.10.0", "moment": "2.30.1", "tslib": "^2.8.1", - "@graphql-hive/gateway": "^1.7.6" + "@graphql-hive/gateway": "^1.7.7" }, "devDependencies": { "tsx": "^4.19.2" diff --git a/examples/openapi-javascript-wiki/package-lock.json b/examples/openapi-javascript-wiki/package-lock.json index 7d1773779..015859fea 100644 --- a/examples/openapi-javascript-wiki/package-lock.json +++ b/examples/openapi-javascript-wiki/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "@example/openapi-javascript-wiki", "dependencies": { - "@graphql-hive/gateway": "^1.7.6", + "@graphql-hive/gateway": "^1.7.7", "@graphql-mesh/compose-cli": "^1.2.13", "@omnigraph/openapi": "^0.108.6", "graphql": "^16.9.0", @@ -678,9 +678,9 @@ } }, "node_modules/@graphql-hive/gateway": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.6.tgz", - "integrity": "sha512-9/ccq8muJU/zL8a+R2eZjBhKhUZ+V+2j1JVA8BLam9lEmKKwp0DfPK8R4jHSiFLZG8te+jtw1UoyxKrtzMiQDA==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.7.tgz", + "integrity": "sha512-NokJnWFePO69B9LahCbVtIrUD+pDmsU3lgBdBK8vA6VDzPRO23YJOa2S1IpT3jtC5wNaUC/kc8Xbs4QpMtuvTQ==", "license": "MIT", "dependencies": { "@commander-js/extra-typings": "^13.0.0", @@ -3928,9 +3928,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "version": "1.5.78", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.78.tgz", + "integrity": "sha512-UmwIt7HRKN1rsJfddG5UG7rCTCTAKoS9JeOy/R0zSenAyaZ8SU3RuXlwcratxhdxGRNpk03iq8O7BA3W7ibLVw==", "license": "ISC" }, "node_modules/emoji-regex": { diff --git a/examples/openapi-javascript-wiki/package.json b/examples/openapi-javascript-wiki/package.json index 8d84f1a59..f97eac180 100644 --- a/examples/openapi-javascript-wiki/package.json +++ b/examples/openapi-javascript-wiki/package.json @@ -7,7 +7,7 @@ "graphql": "^16.9.0", "moment": "^2.30.1", "tslib": "^2.8.1", - "@graphql-hive/gateway": "^1.7.6" + "@graphql-hive/gateway": "^1.7.7" }, "scripts": { "compose": "mesh-compose -o supergraph.graphql", diff --git a/examples/openapi-subscriptions/package-lock.json b/examples/openapi-subscriptions/package-lock.json index 36f4992f7..0a8116c4a 100644 --- a/examples/openapi-subscriptions/package-lock.json +++ b/examples/openapi-subscriptions/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "@example/openapi-subscriptions", "dependencies": { - "@graphql-hive/gateway": "^1.7.6", + "@graphql-hive/gateway": "^1.7.7", "@graphql-mesh/compose-cli": "^1.2.13", "@omnigraph/openapi": "^0.108.6", "fets": "^0.8.4", @@ -1091,9 +1091,9 @@ } }, "node_modules/@graphql-hive/gateway": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.6.tgz", - "integrity": "sha512-9/ccq8muJU/zL8a+R2eZjBhKhUZ+V+2j1JVA8BLam9lEmKKwp0DfPK8R4jHSiFLZG8te+jtw1UoyxKrtzMiQDA==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.7.tgz", + "integrity": "sha512-NokJnWFePO69B9LahCbVtIrUD+pDmsU3lgBdBK8vA6VDzPRO23YJOa2S1IpT3jtC5wNaUC/kc8Xbs4QpMtuvTQ==", "license": "MIT", "dependencies": { "@commander-js/extra-typings": "^13.0.0", @@ -4359,9 +4359,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "version": "1.5.78", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.78.tgz", + "integrity": "sha512-UmwIt7HRKN1rsJfddG5UG7rCTCTAKoS9JeOy/R0zSenAyaZ8SU3RuXlwcratxhdxGRNpk03iq8O7BA3W7ibLVw==", "license": "ISC" }, "node_modules/emoji-regex": { diff --git a/examples/openapi-subscriptions/package.json b/examples/openapi-subscriptions/package.json index ec0dcb64c..2a5628697 100644 --- a/examples/openapi-subscriptions/package.json +++ b/examples/openapi-subscriptions/package.json @@ -9,7 +9,7 @@ "graphql-sse": "^2.5.3", "tslib": "^2.8.1", "url-join": "^5.0.0", - "@graphql-hive/gateway": "^1.7.6" + "@graphql-hive/gateway": "^1.7.7" }, "devDependencies": { "tsx": "^4.19.2" diff --git a/examples/operation-field-permissions/package-lock.json b/examples/operation-field-permissions/package-lock.json index 28b003948..c1bdf352e 100644 --- a/examples/operation-field-permissions/package-lock.json +++ b/examples/operation-field-permissions/package-lock.json @@ -8,7 +8,7 @@ "dependencies": { "@envelop/core": "^5.0.2", "@envelop/operation-field-permissions": "^6.0.0", - "@graphql-hive/gateway": "^1.7.6", + "@graphql-hive/gateway": "^1.7.7", "@graphql-mesh/compose-cli": "^1.2.13", "graphql": "^16.10.0" }, @@ -1105,9 +1105,9 @@ } }, "node_modules/@graphql-hive/gateway": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.6.tgz", - "integrity": "sha512-9/ccq8muJU/zL8a+R2eZjBhKhUZ+V+2j1JVA8BLam9lEmKKwp0DfPK8R4jHSiFLZG8te+jtw1UoyxKrtzMiQDA==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.7.tgz", + "integrity": "sha512-NokJnWFePO69B9LahCbVtIrUD+pDmsU3lgBdBK8vA6VDzPRO23YJOa2S1IpT3jtC5wNaUC/kc8Xbs4QpMtuvTQ==", "license": "MIT", "dependencies": { "@commander-js/extra-typings": "^13.0.0", @@ -4248,9 +4248,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "version": "1.5.78", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.78.tgz", + "integrity": "sha512-UmwIt7HRKN1rsJfddG5UG7rCTCTAKoS9JeOy/R0zSenAyaZ8SU3RuXlwcratxhdxGRNpk03iq8O7BA3W7ibLVw==", "license": "ISC" }, "node_modules/emoji-regex": { diff --git a/examples/operation-field-permissions/package.json b/examples/operation-field-permissions/package.json index 018ead7ad..911fb4ad3 100644 --- a/examples/operation-field-permissions/package.json +++ b/examples/operation-field-permissions/package.json @@ -6,7 +6,7 @@ "@envelop/operation-field-permissions": "^6.0.0", "@graphql-mesh/compose-cli": "^1.2.13", "graphql": "^16.10.0", - "@graphql-hive/gateway": "^1.7.6" + "@graphql-hive/gateway": "^1.7.7" }, "devDependencies": { "tsx": "^4.19.2" diff --git a/examples/programmatic-batching/package-lock.json b/examples/programmatic-batching/package-lock.json index 3aea2583c..b3691b6ad 100644 --- a/examples/programmatic-batching/package-lock.json +++ b/examples/programmatic-batching/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "@example/programmatic-batching", "dependencies": { - "@graphql-hive/gateway": "^1.7.6", + "@graphql-hive/gateway": "^1.7.7", "@graphql-mesh/compose-cli": "^1.2.13", "@omnigraph/openapi": "^0.108.6", "fets": "^0.8.4", @@ -1089,9 +1089,9 @@ } }, "node_modules/@graphql-hive/gateway": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.6.tgz", - "integrity": "sha512-9/ccq8muJU/zL8a+R2eZjBhKhUZ+V+2j1JVA8BLam9lEmKKwp0DfPK8R4jHSiFLZG8te+jtw1UoyxKrtzMiQDA==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.7.tgz", + "integrity": "sha512-NokJnWFePO69B9LahCbVtIrUD+pDmsU3lgBdBK8vA6VDzPRO23YJOa2S1IpT3jtC5wNaUC/kc8Xbs4QpMtuvTQ==", "license": "MIT", "dependencies": { "@commander-js/extra-typings": "^13.0.0", @@ -4345,9 +4345,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "version": "1.5.78", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.78.tgz", + "integrity": "sha512-UmwIt7HRKN1rsJfddG5UG7rCTCTAKoS9JeOy/R0zSenAyaZ8SU3RuXlwcratxhdxGRNpk03iq8O7BA3W7ibLVw==", "license": "ISC" }, "node_modules/emoji-regex": { diff --git a/examples/programmatic-batching/package.json b/examples/programmatic-batching/package.json index ac3205247..985387f6d 100644 --- a/examples/programmatic-batching/package.json +++ b/examples/programmatic-batching/package.json @@ -7,7 +7,7 @@ "fets": "^0.8.4", "graphql": "16.10.0", "tslib": "^2.8.1", - "@graphql-hive/gateway": "^1.7.6" + "@graphql-hive/gateway": "^1.7.7" }, "devDependencies": { "tsx": "^4.19.2" diff --git a/examples/subscriptions-with-transforms/package-lock.json b/examples/subscriptions-with-transforms/package-lock.json index da88c976c..adfeb82e9 100644 --- a/examples/subscriptions-with-transforms/package-lock.json +++ b/examples/subscriptions-with-transforms/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "@example/subscriptions-with-transforms", "dependencies": { - "@graphql-hive/gateway": "^1.7.6", + "@graphql-hive/gateway": "^1.7.7", "@graphql-mesh/compose-cli": "^1.2.13", "graphql": "16.10.0", "graphql-sse": "^2.5.3", @@ -1089,9 +1089,9 @@ } }, "node_modules/@graphql-hive/gateway": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.6.tgz", - "integrity": "sha512-9/ccq8muJU/zL8a+R2eZjBhKhUZ+V+2j1JVA8BLam9lEmKKwp0DfPK8R4jHSiFLZG8te+jtw1UoyxKrtzMiQDA==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.7.tgz", + "integrity": "sha512-NokJnWFePO69B9LahCbVtIrUD+pDmsU3lgBdBK8vA6VDzPRO23YJOa2S1IpT3jtC5wNaUC/kc8Xbs4QpMtuvTQ==", "license": "MIT", "dependencies": { "@commander-js/extra-typings": "^13.0.0", @@ -4232,9 +4232,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "version": "1.5.78", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.78.tgz", + "integrity": "sha512-UmwIt7HRKN1rsJfddG5UG7rCTCTAKoS9JeOy/R0zSenAyaZ8SU3RuXlwcratxhdxGRNpk03iq8O7BA3W7ibLVw==", "license": "ISC" }, "node_modules/emoji-regex": { diff --git a/examples/subscriptions-with-transforms/package.json b/examples/subscriptions-with-transforms/package.json index afad2a04e..3ac65d9e8 100644 --- a/examples/subscriptions-with-transforms/package.json +++ b/examples/subscriptions-with-transforms/package.json @@ -7,7 +7,7 @@ "graphql-sse": "^2.5.3", "graphql-yoga": "^5.10.6", "tslib": "^2.8.1", - "@graphql-hive/gateway": "^1.7.6" + "@graphql-hive/gateway": "^1.7.7" }, "devDependencies": { "tsx": "^4.19.2" diff --git a/examples/type-merging-batching/package-lock.json b/examples/type-merging-batching/package-lock.json index badf31be3..481f86abd 100644 --- a/examples/type-merging-batching/package-lock.json +++ b/examples/type-merging-batching/package-lock.json @@ -6,7 +6,7 @@ "": { "name": "@example/type-merging-batching", "dependencies": { - "@graphql-hive/gateway": "^1.7.6", + "@graphql-hive/gateway": "^1.7.7", "@graphql-mesh/compose-cli": "^1.2.13", "graphql": "^16.9.0", "graphql-yoga": "^5.10.6", @@ -1088,9 +1088,9 @@ } }, "node_modules/@graphql-hive/gateway": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.6.tgz", - "integrity": "sha512-9/ccq8muJU/zL8a+R2eZjBhKhUZ+V+2j1JVA8BLam9lEmKKwp0DfPK8R4jHSiFLZG8te+jtw1UoyxKrtzMiQDA==", + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/@graphql-hive/gateway/-/gateway-1.7.7.tgz", + "integrity": "sha512-NokJnWFePO69B9LahCbVtIrUD+pDmsU3lgBdBK8vA6VDzPRO23YJOa2S1IpT3jtC5wNaUC/kc8Xbs4QpMtuvTQ==", "license": "MIT", "dependencies": { "@commander-js/extra-typings": "^13.0.0", @@ -4231,9 +4231,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.76", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.76.tgz", - "integrity": "sha512-CjVQyG7n7Sr+eBXE86HIulnL5N8xZY1sgmOPGuq/F0Rr0FJq63lg0kEtOIDfZBk44FnDLf6FUJ+dsJcuiUDdDQ==", + "version": "1.5.78", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.78.tgz", + "integrity": "sha512-UmwIt7HRKN1rsJfddG5UG7rCTCTAKoS9JeOy/R0zSenAyaZ8SU3RuXlwcratxhdxGRNpk03iq8O7BA3W7ibLVw==", "license": "ISC" }, "node_modules/emoji-regex": { diff --git a/examples/type-merging-batching/package.json b/examples/type-merging-batching/package.json index 415e54ea0..9328b0970 100644 --- a/examples/type-merging-batching/package.json +++ b/examples/type-merging-batching/package.json @@ -6,7 +6,7 @@ "graphql": "^16.9.0", "graphql-yoga": "^5.10.6", "tslib": "^2.8.1", - "@graphql-hive/gateway": "^1.7.6" + "@graphql-hive/gateway": "^1.7.7" }, "devDependencies": { "tsx": "^4.19.2"