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