UNPKG

@elsikora/nestjs-crud-automator

Version:

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

71 lines (67 loc) 3.13 kB
'use strict'; require('../../../external/@elsikora/cladi/dist/esm/domain/enum/logger-log-level.enum.js'); require('../../../external/@elsikora/cladi/dist/esm/infrastructure/constant/console-logger-default-options.constant.js'); var registry_utility = require('../../../external/@elsikora/cladi/dist/esm/presentation/utility/create/registry.utility.js'); var logger_utility = require('../../../utility/logger.utility.js'); const subscriberRegistryLogger = logger_utility.LoggerUtility.getLogger("ApiSubscriberRegistry"); class ApiSubscriberRegistry { FUNCTION_SUBSCRIBERS; ROUTE_SUBSCRIBERS; constructor() { this.FUNCTION_SUBSCRIBERS = registry_utility.createRegistry({}); this.ROUTE_SUBSCRIBERS = registry_utility.createRegistry({}); } getFunctionSubscribers(entityName) { return (this.FUNCTION_SUBSCRIBERS.get(entityName)?.subscribers ?? []).map((s) => s.subscriber); } getRouteSubscribers(entityName) { return (this.ROUTE_SUBSCRIBERS.get(entityName)?.subscribers ?? []).map((s) => s.subscriber); } registerFunctionSubscriber(properties, subscriber) { const entityName = properties.entity.name; let wrapper = this.FUNCTION_SUBSCRIBERS.get(entityName); if (!wrapper) { wrapper = new SubscriberWrapper(entityName); this.FUNCTION_SUBSCRIBERS.register(wrapper); } wrapper.addSubscriber(subscriber, properties.priority); subscriberRegistryLogger.debug(`Total function subscribers for "${entityName}": ${wrapper.getSubscriberCount()}`); subscriberRegistryLogger.debug(`Registered function subscriber entities: [${this.FUNCTION_SUBSCRIBERS.getAll() .map((registeredWrapper) => registeredWrapper.getName()) .join(", ")}]`); } registerRouteSubscriber(properties, subscriber) { const entityName = properties.entity.name; let wrapper = this.ROUTE_SUBSCRIBERS.get(entityName); if (!wrapper) { wrapper = new SubscriberWrapper(entityName); this.ROUTE_SUBSCRIBERS.register(wrapper); } wrapper.addSubscriber(subscriber, properties.priority); subscriberRegistryLogger.debug(`Total route subscribers for "${entityName}": ${wrapper.getSubscriberCount()}`); subscriberRegistryLogger.debug(`Registered route subscriber entities: [${this.ROUTE_SUBSCRIBERS.getAll() .map((registeredWrapper) => registeredWrapper.getName()) .join(", ")}]`); } } class SubscriberWrapper { name; subscribers; constructor(name, subscribers = []) { this.name = name; this.subscribers = subscribers; } addSubscriber(subscriber, priority = 0) { this.subscribers.push({ priority, subscriber }); this.subscribers.sort((a, b) => b.priority - a.priority); } getName() { return this.name; } getSubscriberCount() { return this.subscribers.length; } } const apiSubscriberRegistry = new ApiSubscriberRegistry(); exports.apiSubscriberRegistry = apiSubscriberRegistry; //# sourceMappingURL=registry.class.js.map