UNPKG

@elsikora/nestjs-crud-automator

Version:

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

58 lines (54 loc) 2.23 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'); 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); } 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(); exports.apiSubscriberRegistry = apiSubscriberRegistry; //# sourceMappingURL=registry.class.js.map