UNPKG

@nestjs/microservices

Version:

Nest - modern, fast, powerful node.js web framework (@microservices)

34 lines (33 loc) 1.35 kB
import { PATTERN_EXTRAS_METADATA, PATTERN_HANDLER_METADATA, PATTERN_METADATA, TRANSPORT_METADATA, } from '../constants.js'; import { PatternHandler } from '../enums/pattern-handler.enum.js'; import { isNil, isNumber, isObject, isSymbol } from '@nestjs/common/internal'; /** * Subscribes to incoming events which fulfils chosen pattern. * * @publicApi */ export const EventPattern = (metadata, transportOrExtras, maybeExtras) => { let transport; let extras; if ((isNumber(transportOrExtras) || isSymbol(transportOrExtras)) && isNil(maybeExtras)) { transport = transportOrExtras; } else if (isObject(transportOrExtras) && isNil(maybeExtras)) { extras = transportOrExtras; } else { transport = transportOrExtras; extras = maybeExtras; } return (target, key, descriptor) => { Reflect.defineMetadata(PATTERN_METADATA, [].concat(metadata), descriptor.value); Reflect.defineMetadata(PATTERN_HANDLER_METADATA, PatternHandler.EVENT, descriptor.value); Reflect.defineMetadata(TRANSPORT_METADATA, transport, descriptor.value); Reflect.defineMetadata(PATTERN_EXTRAS_METADATA, { ...Reflect.getMetadata(PATTERN_EXTRAS_METADATA, descriptor.value), ...extras, }, descriptor.value); return descriptor; }; };