UNPKG

@elsikora/nestjs-crud-automator

Version:

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

69 lines (66 loc) 3.04 kB
import '../../../external/@elsikora/cladi/dist/esm/domain/enum/logger-log-level.enum.js'; import '../../../external/@elsikora/cladi/dist/esm/infrastructure/constant/console-logger-default-options.constant.js'; import { createRegistry } from '../../../external/@elsikora/cladi/dist/esm/presentation/utility/create/registry.utility.js'; import { LoggerUtility } from '../../../utility/logger.utility.js'; const subscriberRegistryLogger = LoggerUtility.getLogger("ApiSubscriberRegistry"); class ApiSubscriberRegistry { FUNCTION_SUBSCRIBERS; ROUTE_SUBSCRIBERS; constructor() { this.FUNCTION_SUBSCRIBERS = createRegistry({}); this.ROUTE_SUBSCRIBERS = 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(); export { apiSubscriberRegistry }; //# sourceMappingURL=registry.class.js.map