nestjs-components
nestjs-components copied to clipboard
Graphql Support for LoggingInterceptor
Currently, the LoggingInterceptor does not work with graphql. Internal calls to intercept, logNext, and logError use the base ExecutionContext from nest without first evaluating the current application context.
Accessors for the in-flight request object are different depending on the application context. For rest they look like:
const req: Request = context.switchToHttp().getRequest<Request>();
const res: Response = context.switchToHttp().getResponse<Response>();
const { method, url } = req;
as you have in logNext
In graphql it looks like
const method = context.getArgs()[2].req.method;
const url = context.getArgs()[2].req.url;
(at least this is the cleanest way I have been able to access these)
As such, the use of rest style of access yields the following logs when in the graphql context:
[LoggingInterceptor - undefined - undefined - undefined] Outgoing response - undefined - undefined - undefined
Anyway, if you want to support gql with this interceptor I would be open to making a pr! Or perhaps I could add a new one that is specific for graphql.
This is a great assembly of nest utils!
Hey @agmoss,
Indeed, we do not handle graphQL for now but it could be nice to handle it. Unfortunately, I can't tell you when we can implement graphQL support.
I think we could create an option for graphQL, no need to create a new package. If you wish to, you can of course contribute and open a new PR to handle this 😁
Sounds great @ccoeurderoy! I will take a stab at a pr. Cheers