@nestjstools/messaging
Version:
Simplifies asynchronous and synchronous message handling with support for buses, handlers, channels, and consumers. Build scalable, decoupled applications with ease and reliability.
53 lines • 2.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.registerExceptionListener = exports.registerMessageNormalizers = exports.registerMiddlewares = exports.registerHandlers = void 0;
const service_1 = require("./service");
const decorator_1 = require("./decorator");
const const_1 = require("../const");
const registerHandlers = (moduleRef, discoveryService) => {
const registry = moduleRef.get(service_1.Service.MESSAGE_HANDLERS_REGISTRY);
const logger = moduleRef.get(service_1.Service.LOGGER);
const handlerInstances = discoveryService.getProviders().filter((handler) => {
if (!handler.metatype) {
return false;
}
return Reflect.hasMetadata(decorator_1.MESSAGE_HANDLER_METADATA, handler.metatype);
});
handlerInstances.forEach((handler) => {
registry.register(Reflect.getMetadata(decorator_1.MESSAGE_HANDLER_METADATA, handler.metatype), handler.instance);
logger.log(`Handler [${handler.name}] was registered`);
});
};
exports.registerHandlers = registerHandlers;
const registerMiddlewares = (moduleRef, discoveryService) => {
register(moduleRef, discoveryService, service_1.Service.MIDDLEWARE_REGISTRY, decorator_1.MESSAGING_MIDDLEWARE_METADATA, 'Middleware');
};
exports.registerMiddlewares = registerMiddlewares;
const registerMessageNormalizers = (moduleRef, discoveryService) => {
register(moduleRef, discoveryService, service_1.Service.MESSAGE_NORMALIZERS_REGISTRY, decorator_1.MESSAGING_NORMALIZER_METADATA, 'MessageNormalizer');
};
exports.registerMessageNormalizers = registerMessageNormalizers;
const registerExceptionListener = (moduleRef, discoveryService) => {
register(moduleRef, discoveryService, service_1.Service.EXCEPTION_LISTENER_REGISTRY, decorator_1.MESSAGING_EXCEPTION_LISTENER_METADATA, 'ExceptionListener');
};
exports.registerExceptionListener = registerExceptionListener;
const register = (moduleRef, discoveryService, registryProvider, decoratorMetadata, name) => {
const exceptions = [const_1.DEFAULT_NORMALIZER, const_1.DEFAULT_MIDDLEWARE];
const registry = moduleRef.get(registryProvider);
const logger = moduleRef.get(service_1.Service.LOGGER);
const instances = discoveryService
.getProviders()
.filter((messageExceptionListener) => {
if (!messageExceptionListener.metatype) {
return false;
}
return Reflect.hasMetadata(decoratorMetadata, messageExceptionListener.metatype);
});
instances.forEach((messageExceptionListener) => {
registry.register(Reflect.getMetadata(decoratorMetadata, messageExceptionListener.metatype), messageExceptionListener.instance);
if (!exceptions.includes(messageExceptionListener.name)) {
logger.log(`${name} [${messageExceptionListener.name}] was registered`);
}
});
};
//# sourceMappingURL=register.js.map