diff --git a/packages/apollo/lib/drivers/apollo-gateway.driver.ts b/packages/apollo/lib/drivers/apollo-gateway.driver.ts index 3460cd056..d7e1ba627 100644 --- a/packages/apollo/lib/drivers/apollo-gateway.driver.ts +++ b/packages/apollo/lib/drivers/apollo-gateway.driver.ts @@ -1,11 +1,26 @@ import { Injectable } from '@nestjs/common'; import { loadPackage } from '@nestjs/common/utils/load-package.util'; +import { ModulesContainer } from '@nestjs/core'; +import { extend } from '@nestjs/graphql'; import { ApolloGatewayDriverConfig } from '../interfaces'; +import { PluginsExplorerService } from '../services/plugins-explorer.service'; import { ApolloBaseDriver } from './apollo-base.driver'; @Injectable() export class ApolloGatewayDriver extends ApolloBaseDriver { + private readonly pluginsExplorerService: PluginsExplorerService; + + constructor(modulesContainer: ModulesContainer) { + super(); + this.pluginsExplorerService = new PluginsExplorerService(modulesContainer); + } + public async start(options: ApolloGatewayDriverConfig): Promise { + options.server.plugins = extend( + options.server.plugins || [], + this.pluginsExplorerService.explore(options), + ); + const { ApolloGateway } = loadPackage( '@apollo/gateway', 'ApolloGateway',