@nestjs/microservices
Version:
Nest - modern, fast, powerful node.js web framework (@microservices)
34 lines (33 loc) • 1.35 kB
JavaScript
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;
};
};