UNPKG

@elsikora/nestjs-crud-automator

Version:

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

56 lines (53 loc) 2.15 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'; 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); } 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); } } 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; } } const apiSubscriberRegistry = new ApiSubscriberRegistry(); export { apiSubscriberRegistry }; //# sourceMappingURL=registry.class.js.map