UNPKG

redis-smq-rest-api

Version:

REST API for RedisSMQ: OpenAPI 3 schema and Swagger UI for managing queues, messages, and consumers.

71 lines 4.43 kB
import { asClass, asFunction, createContainer, InjectionMode, } from 'awilix'; import { ConsumerGroups, ExchangeFanout, MessageManager, NamespaceManager, Producer, QueueManager, QueueAcknowledgedMessages, QueueDeadLetteredMessages, QueueMessages, QueuePendingMessages, QueueRateLimit, QueueScheduledMessages, ExchangeTopic, ExchangeDirect, Exchange, Configuration, } from 'redis-smq'; import { ConsumerGroupsService } from '../services/ConsumerGroupsService.js'; import { ExchangeDirectService } from '../services/ExchangeDirectService.js'; import { ExchangeFanoutService } from '../services/ExchangeFanoutService.js'; import { ExchangesService } from '../services/ExchangesService.js'; import { ExchangeTopicService } from '../services/ExchangeTopicService.js'; import { MessagesService } from '../services/MessagesService.js'; import { NamespacesService } from '../services/NamespacesService.js'; import { QueueAcknowledgedMessagesService } from '../services/QueueAcknowledgedMessagesService.js'; import { QueueDeadLetteredMessagesService } from '../services/QueueDeadLetteredMessagesService.js'; import { QueueMessagesService } from '../services/QueueMessagesService.js'; import { QueuePendingMessagesService } from '../services/QueuePendingMessagesService.js'; import { QueueRateLimitService } from '../services/QueueRateLimitService.js'; import { QueueScheduledMessagesService } from '../services/QueueScheduledMessagesService.js'; import { QueuesService } from '../services/QueuesService.js'; import { ConfigurationService } from '../services/ConfigurationService.js'; export class Container { static instance = null; static registerServices() { const instance = this.getInstance(); instance.register({ queueManager: asClass(QueueManager) .singleton() .disposer((i) => new Promise((resolve) => i.shutdown(resolve))), queueMessages: asClass(QueueMessages).singleton(), queuePendingMessages: asClass(QueuePendingMessages).singleton(), queueAcknowledgedMessages: asClass(QueueAcknowledgedMessages).singleton(), queueDeadLetteredMessages: asClass(QueueDeadLetteredMessages).singleton(), queueScheduledMessages: asClass(QueueScheduledMessages).singleton(), messageManager: asClass(MessageManager).singleton(), queueRateLimit: asClass(QueueRateLimit).singleton(), namespaceManager: asClass(NamespaceManager).singleton(), exchangeFanout: asClass(ExchangeFanout).singleton(), exchangeTopic: asClass(ExchangeTopic).singleton(), exchangeDirect: asClass(ExchangeDirect).singleton(), exchange: asClass(Exchange).singleton(), consumerGroups: asClass(ConsumerGroups) .singleton() .disposer((i) => new Promise((resolve) => i.shutdown(resolve))), producer: asClass(Producer) .singleton() .disposer((i) => new Promise((resolve) => i.shutdown(resolve))), configuration: asFunction(() => Configuration.getInstance()).singleton(), queuesService: asClass(QueuesService), queueMessagesService: asClass(QueueMessagesService), queuePendingMessagesService: asClass(QueuePendingMessagesService), queueScheduledMessagesService: asClass(QueueScheduledMessagesService), queueAcknowledgedMessagesService: asClass(QueueAcknowledgedMessagesService), queueDeadLetteredMessagesService: asClass(QueueDeadLetteredMessagesService), messagesService: asClass(MessagesService), queueRateLimitService: asClass(QueueRateLimitService), namespacesService: asClass(NamespacesService), exchangeFanoutService: asClass(ExchangeFanoutService), exchangeDirectService: asClass(ExchangeDirectService), exchangeTopicService: asClass(ExchangeTopicService), exchangesService: asClass(ExchangesService), consumerGroupsService: asClass(ConsumerGroupsService), configurationService: asClass(ConfigurationService), }); } static getInstance() { if (!this.instance) { this.instance = createContainer({ injectionMode: InjectionMode.CLASSIC, }); } return this.instance; } } //# sourceMappingURL=Container.js.map