@elsikora/nestjs-crud-automator
Version:
A library for automating the creation of CRUD operations in NestJS.
51 lines (48 loc) • 3.33 kB
JavaScript
;
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