UNPKG

@elsikora/nestjs-crud-automator

Version:

A library for automating the creation of CRUD operations in NestJS.

51 lines (48 loc) 3.33 kB
'use strict'; var tslib_es6 = require('../../../external/tslib/tslib.es6.js'); var functionBase_class = require('./function-base.class.js'); var registry_class = require('./registry.class.js'); var routeBase_class = require('./route-base.class.js'); var subscriber_constant = require('../../../constant/decorator/api/subscriber.constant.js'); var common = require('@nestjs/common'); var core = require('@nestjs/core'); var logger_utility = require('../../../utility/logger.utility.js'); const subscriberLogger = logger_utility.LoggerUtility.getLogger("ApiSubscriberDiscoveryService"); exports.ApiSubscriberDiscoveryService = class ApiSubscriberDiscoveryService { discoveryService; constructor(discoveryService) { this.discoveryService = discoveryService; } onModuleInit() { subscriberLogger.verbose("Starting subscriber discovery..."); const providers = this.discoveryService.getProviders(); this.registerFunctionSubscribers(providers); this.registerRouteSubscribers(providers); subscriberLogger.verbose("Subscriber discovery finished."); } registerFunctionSubscribers(providers) { const functionSubscribers = providers.filter((wrapper) => wrapper.instance && wrapper.metatype && wrapper.instance instanceof functionBase_class.ApiFunctionSubscriberBase && Reflect.hasMetadata(subscriber_constant.SUBSCRIBER_API_DECORATOR_CONSTANT.FUNCTION_METADATA_KEY, wrapper.metatype)); for (const wrapper of functionSubscribers) { // eslint-disable-next-line @elsikora/typescript/no-non-null-assertion const properties = Reflect.getMetadata(subscriber_constant.SUBSCRIBER_API_DECORATOR_CONSTANT.FUNCTION_METADATA_KEY, wrapper.metatype); // eslint-disable-next-line @elsikora/typescript/no-unsafe-argument registry_class.apiSubscriberRegistry.registerFunctionSubscriber(properties, wrapper.instance); subscriberLogger.verbose(`Registered function subscriber ${wrapper.name} for entity ${properties.entity.name} with priority ${properties.priority ?? 0}`); } } registerRouteSubscribers(providers) { const routeSubscribers = providers.filter((wrapper) => wrapper.instance && wrapper.metatype && wrapper.instance instanceof routeBase_class.ApiRouteSubscriberBase && Reflect.hasMetadata(subscriber_constant.SUBSCRIBER_API_DECORATOR_CONSTANT.ROUTE_METADATA_KEY, wrapper.metatype)); for (const wrapper of routeSubscribers) { // eslint-disable-next-line @elsikora/typescript/no-non-null-assertion const properties = Reflect.getMetadata(subscriber_constant.SUBSCRIBER_API_DECORATOR_CONSTANT.ROUTE_METADATA_KEY, wrapper.metatype); // eslint-disable-next-line @elsikora/typescript/no-unsafe-argument registry_class.apiSubscriberRegistry.registerRouteSubscriber(properties, wrapper.instance); subscriberLogger.verbose(`Registered route subscriber ${wrapper.name} for entity ${properties.entity.name} with priority ${properties.priority ?? 0}`); } } }; exports.ApiSubscriberDiscoveryService = tslib_es6.__decorate([ common.Injectable(), tslib_es6.__metadata("design:paramtypes", [core.DiscoveryService]) ], exports.ApiSubscriberDiscoveryService); //# sourceMappingURL=discovery-service.class.js.map