From 691049cc65ddf86106c3466c1e71c95f190f3610 Mon Sep 17 00:00:00 2001 From: Jay McDoniel Date: Wed, 9 Nov 2022 12:23:30 -0800 Subject: [PATCH] feat: move get pattern to top level method of switch to ws --- integration/websockets/src/request.interceptor.ts | 2 +- .../common/interfaces/features/arguments-host.interface.ts | 4 ++++ packages/core/helpers/execution-context-host.ts | 1 + packages/websockets/context/ws-context-creator.ts | 4 +--- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/integration/websockets/src/request.interceptor.ts b/integration/websockets/src/request.interceptor.ts index 490f92ec7fb..7dad7e9bf01 100644 --- a/integration/websockets/src/request.interceptor.ts +++ b/integration/websockets/src/request.interceptor.ts @@ -4,7 +4,7 @@ import { CallHandler, ExecutionContext, Injectable } from '@nestjs/common'; export class RequestInterceptor { intercept(context: ExecutionContext, next: CallHandler) { const client = context.switchToWs().getClient(); - const pattern = client.getPattern(); + const pattern = context.switchToWs().getPattern(); client.pattern = pattern; return next.handle(); } diff --git a/packages/common/interfaces/features/arguments-host.interface.ts b/packages/common/interfaces/features/arguments-host.interface.ts index 6ab4da9cadf..23ea6c90f07 100644 --- a/packages/common/interfaces/features/arguments-host.interface.ts +++ b/packages/common/interfaces/features/arguments-host.interface.ts @@ -31,6 +31,10 @@ export interface WsArgumentsHost { * Returns the client object. */ getClient(): T; + /** + * Returns the pattern for the event + */ + getPattern(): string; } /** diff --git a/packages/core/helpers/execution-context-host.ts b/packages/core/helpers/execution-context-host.ts index 922b98ed3c8..83b460a9a95 100644 --- a/packages/core/helpers/execution-context-host.ts +++ b/packages/core/helpers/execution-context-host.ts @@ -59,6 +59,7 @@ export class ExecutionContextHost implements ExecutionContext { return Object.assign(this, { getClient: () => this.getArgByIndex(0), getData: () => this.getArgByIndex(1), + getPattern: () => this.getArgByIndex(this.getArgs().length - 1), }); } } diff --git a/packages/websockets/context/ws-context-creator.ts b/packages/websockets/context/ws-context-creator.ts index 57d9a62670d..0b58c97cde1 100644 --- a/packages/websockets/context/ws-context-creator.ts +++ b/packages/websockets/context/ws-context-creator.ts @@ -108,9 +108,7 @@ export class WsContextCreator { }; return this.wsProxy.create(async (...args: unknown[]) => { - Object.assign(args[0] ?? {}, { - getPattern: () => this.reflectCallbackPattern(callback), - }); + args.push(this.reflectCallbackPattern(callback)); const initialArgs = this.contextUtils.createNullArray(argsLength); fnCanActivate && (await fnCanActivate(args));