Skip to content

Commit d97e653

Browse files
feat(mercurius): update mercurius plugins, upgrade deps
1 parent 4a7ab32 commit d97e653

11 files changed

+38
-26
lines changed

packages/mercurius/lib/drivers/mercurius-federation.driver.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import { MercuriusDriverConfig } from '../interfaces/mercurius-driver-config.int
1111
import { buildMercuriusFederatedSchema } from '../utils/build-mercurius-federated-schema.util';
1212
import { registerMercuriusHooks } from '../utils/register-mercurius-hooks.util';
1313
import { registerMercuriusPlugin } from '../utils/register-mercurius-plugin.util';
14+
// TODO:
15+
// const { mercuriusFederationPlugin } = require('@mercuriusjs/federation');
1416

1517
@Injectable()
1618
export class MercuriusFederationDriver extends AbstractGraphQLDriver<MercuriusDriverConfig> {
@@ -50,11 +52,12 @@ export class MercuriusFederationDriver extends AbstractGraphQLDriver<MercuriusDr
5052
throw new Error(`No support for current HttpAdapter: ${platformName}`);
5153
}
5254
const app = httpAdapter.getInstance<FastifyInstance>();
55+
// TODO: replace with mercuriusFederationPlugin
5356
await app.register(mercurius, {
5457
...adapterOptions,
5558
});
5659
await registerMercuriusPlugin(app, plugins);
57-
await registerMercuriusHooks(app, hooks);
60+
registerMercuriusHooks(app, hooks);
5861
}
5962

6063
/* eslit-disable-next-line @typescript-eslint/no-empty-function */

packages/mercurius/lib/drivers/mercurius-gateway.driver.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1+
import mercuriusGateway from '@mercuriusjs/gateway';
12
import { AbstractGraphQLDriver } from '@nestjs/graphql';
23
import { FastifyBaseLogger, FastifyInstance } from 'fastify';
34
import { IncomingMessage, Server, ServerResponse } from 'http';
4-
import mercurius from 'mercurius';
5-
import { MercuriusDriverConfig } from '../interfaces/mercurius-driver-config.interface';
5+
import { MercuriusGatewayDriverConfig } from '../interfaces';
66
import { registerMercuriusHooks } from '../utils/register-mercurius-hooks.util';
77
import { registerMercuriusPlugin } from '../utils/register-mercurius-plugin.util';
88

9-
export class MercuriusGatewayDriver extends AbstractGraphQLDriver<MercuriusDriverConfig> {
9+
export class MercuriusGatewayDriver extends AbstractGraphQLDriver<MercuriusGatewayDriverConfig> {
1010
get instance(): FastifyInstance<
1111
Server,
1212
IncomingMessage,
@@ -16,7 +16,7 @@ export class MercuriusGatewayDriver extends AbstractGraphQLDriver<MercuriusDrive
1616
return this.httpAdapterHost?.httpAdapter?.getInstance?.();
1717
}
1818

19-
public async start(options: MercuriusDriverConfig) {
19+
public async start(options: MercuriusGatewayDriverConfig) {
2020
const httpAdapter = this.httpAdapterHost.httpAdapter;
2121
const platformName = httpAdapter.getType();
2222

@@ -26,11 +26,11 @@ export class MercuriusGatewayDriver extends AbstractGraphQLDriver<MercuriusDrive
2626

2727
const { plugins, hooks, ...mercuriusOptions } = options;
2828
const app = httpAdapter.getInstance<FastifyInstance>();
29-
await app.register(mercurius, {
29+
await app.register(mercuriusGateway, {
3030
...mercuriusOptions,
3131
});
3232
await registerMercuriusPlugin(app, plugins);
33-
await registerMercuriusHooks(app, hooks);
33+
registerMercuriusHooks(app, hooks, 'graphqlGateway');
3434
}
3535

3636
public async stop(): Promise<void> {}

packages/mercurius/lib/drivers/mercurius.driver.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export class MercuriusDriver extends AbstractGraphQLDriver<MercuriusDriverConfig
4242
...options,
4343
});
4444
await registerMercuriusPlugin(app, plugins);
45-
await registerMercuriusHooks(app, hooks);
45+
registerMercuriusHooks(app, hooks);
4646
}
4747

4848
public async stop(): Promise<void> {}

packages/mercurius/lib/interfaces/mercurius-gateway-driver-config.interface.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ import {
66
} from '@nestjs/graphql';
77
import { MercuriusCommonOptions } from 'mercurius';
88
import { MercuriusHooks } from './mercurius-hook.interface';
9-
import { MercuriusPlugin } from './mercurius-plugin.interface';
9+
import { MercuriusPlugins } from './mercurius-plugin.interface';
1010

1111
export type MercuriusGatewayDriverConfig = GqlModuleOptions &
1212
MercuriusCommonOptions &
1313
MercuriusGatewayOptions &
14-
MercuriusPlugin &
14+
MercuriusPlugins &
1515
MercuriusHooks;
1616

1717
export type MercuriusGatewayDriverConfigFactory =

packages/mercurius/lib/utils/build-mercurius-federated-schema.util.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { loadPackage } from '@nestjs/common/utils/load-package.util';
2-
import { transformSchema } from '@nestjs/graphql';
3-
import { BuildFederatedSchemaOptions } from '@nestjs/graphql';
4-
import { GraphQLSchema, isObjectType, buildASTSchema } from 'graphql';
2+
import { BuildFederatedSchemaOptions, transformSchema } from '@nestjs/graphql';
3+
import { buildASTSchema, GraphQLSchema, isObjectType } from 'graphql';
54

65
export function buildMercuriusFederatedSchema({
76
typeDefs,

packages/mercurius/lib/utils/register-mercurius-hooks.util.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { isArray, isNull, isUndefined } from './validation.util';
55
export function registerMercuriusHooks(
66
app: FastifyInstance,
77
hooks?: MercuriusGatewayHooksObject | null,
8+
key: 'graphql' | 'graphqlGateway' = 'graphql',
89
): void {
910
if (isUndefined(hooks) || isNull(hooks)) {
1011
return;
@@ -16,10 +17,10 @@ export function registerMercuriusHooks(
1617
}
1718

1819
if (isArray<any>(hookFn)) {
19-
hookFn.forEach((fn) => app.graphql.addHook(hookName, fn));
20+
hookFn.forEach((fn) => (app[key] as any).addHook(hookName, fn));
2021
return;
2122
}
2223

23-
app.graphql.addHook(hookName, hookFn);
24+
(app[key] as any).addHook(hookName, hookFn);
2425
});
2526
}

packages/mercurius/package.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
},
2929
"devDependencies": {
3030
"@mercuriusjs/gateway": "^1.0.0",
31+
"@mercuriusjs/federation": "^1.0.0",
3132
"@nestjs/common": "9.2.1",
3233
"@nestjs/platform-fastify": "9.2.1",
3334
"@nestjs/testing": "8.4.7",
@@ -37,15 +38,23 @@
3738
},
3839
"peerDependencies": {
3940
"@apollo/subgraph": "^2.0.0",
41+
"@mercuriusjs/gateway": "^1.0.0",
42+
"@mercuriusjs/federation": "^1.0.0",
4043
"@nestjs/common": "^9.2.1",
4144
"@nestjs/graphql": "^10.1.7",
4245
"fastify": "^4.12.0",
4346
"graphql": "^16.0.0",
44-
"mercurius": "^10.0.0 || ^11.0.0 || ^12.0.0"
47+
"mercurius": "^12.0.0"
4548
},
4649
"peerDependenciesMeta": {
4750
"@apollo/subgraph": {
4851
"optional": true
52+
},
53+
"@mercuriusjs/gateway": {
54+
"optional": true
55+
},
56+
"@mercuriusjs/federation": {
57+
"optional": true
4958
}
5059
}
5160
}

packages/mercurius/tests/graphql-federation/gateway/config/config.service.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { Injectable } from '@nestjs/common';
22
import {
3-
MercuriusDriverConfig,
4-
MercuriusDriverConfigFactory,
3+
MercuriusGatewayDriverConfig,
4+
MercuriusGatewayDriverConfigFactory,
55
} from '../../../../lib';
66

77
@Injectable()
8-
export class ConfigService implements MercuriusDriverConfigFactory {
9-
public createGqlOptions(): Partial<MercuriusDriverConfig> {
8+
export class ConfigService implements MercuriusGatewayDriverConfigFactory {
9+
public createGqlOptions(): MercuriusGatewayDriverConfig {
1010
return {
1111
gateway: {
1212
services: [

packages/mercurius/tests/graphql-federation/gateway/gateway-async-class.module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import { Module } from '@nestjs/common';
22
import { GraphQLModule } from '@nestjs/graphql';
33
import { MercuriusDriverConfig } from '../../../lib';
4-
import { MercuriusDriver } from '../../../lib/drivers';
4+
import { MercuriusGatewayDriver } from '../../../lib/drivers';
55
import { ConfigModule } from './config/config.module';
66
import { ConfigService } from './config/config.service';
77

88
@Module({
99
imports: [
1010
GraphQLModule.forRootAsync<MercuriusDriverConfig>({
11-
driver: MercuriusDriver,
11+
driver: MercuriusGatewayDriver,
1212
useClass: ConfigService,
1313
imports: [ConfigModule],
1414
inject: [ConfigService],

packages/mercurius/tests/graphql-federation/gateway/gateway-async-existing.module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import { Module } from '@nestjs/common';
22
import { GraphQLModule } from '@nestjs/graphql';
33
import { MercuriusDriverConfig } from '../../../lib';
4-
import { MercuriusDriver } from '../../../lib/drivers';
4+
import { MercuriusGatewayDriver } from '../../../lib/drivers';
55
import { ConfigModule } from './config/config.module';
66
import { ConfigService } from './config/config.service';
77

88
@Module({
99
imports: [
1010
GraphQLModule.forRootAsync<MercuriusDriverConfig>({
11-
driver: MercuriusDriver,
11+
driver: MercuriusGatewayDriver,
1212
useExisting: ConfigService,
1313
imports: [ConfigModule],
1414
inject: [ConfigService],

0 commit comments

Comments
 (0)