@diia-inhouse/diia-queue 7.3.0 → 13.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/LICENCE.md +59 -59
  2. package/dist/constants.js +3 -0
  3. package/dist/constants.js.map +1 -1
  4. package/dist/index.js +2 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/interfaces/index.js +12 -9
  7. package/dist/interfaces/index.js.map +1 -1
  8. package/dist/interfaces/messageBrokerServiceConfig.js +26 -0
  9. package/dist/interfaces/messageBrokerServiceConfig.js.map +1 -0
  10. package/dist/interfaces/messageHandler.js +3 -0
  11. package/dist/interfaces/messageHandler.js.map +1 -0
  12. package/dist/interfaces/metrics/index.js +14 -0
  13. package/dist/interfaces/metrics/index.js.map +1 -1
  14. package/dist/interfaces/{providers/rabbitmq/amqpListener.js → options.js} +1 -1
  15. package/dist/interfaces/options.js.map +1 -0
  16. package/dist/interfaces/providers/rabbitmq/amqpConnection.js +4 -1
  17. package/dist/interfaces/providers/rabbitmq/amqpConnection.js.map +1 -1
  18. package/dist/interfaces/providers/rabbitmq/amqpPublisher.js +1 -9
  19. package/dist/interfaces/providers/rabbitmq/amqpPublisher.js.map +1 -1
  20. package/dist/interfaces/providers/rabbitmq/index.js +41 -17
  21. package/dist/interfaces/providers/rabbitmq/index.js.map +1 -1
  22. package/dist/interfaces/queueContext.js +3 -0
  23. package/dist/interfaces/queueContext.js.map +1 -0
  24. package/dist/interfaces/queueStatus.js +6 -0
  25. package/dist/interfaces/queueStatus.js.map +1 -1
  26. package/dist/interfaces/services/eventMessageHandler.js +3 -0
  27. package/dist/interfaces/services/eventMessageHandler.js.map +1 -0
  28. package/dist/metrics/index.js +1 -2
  29. package/dist/metrics/index.js.map +1 -1
  30. package/dist/providers/index.js +22 -0
  31. package/dist/providers/index.js.map +1 -0
  32. package/dist/providers/rabbitmq/amqpAsserter.js +417 -0
  33. package/dist/providers/rabbitmq/amqpAsserter.js.map +1 -0
  34. package/dist/providers/rabbitmq/amqpConnection.js +47 -25
  35. package/dist/providers/rabbitmq/amqpConnection.js.map +1 -1
  36. package/dist/providers/rabbitmq/amqpListener.js +167 -113
  37. package/dist/providers/rabbitmq/amqpListener.js.map +1 -1
  38. package/dist/providers/rabbitmq/amqpPublisher.js +147 -96
  39. package/dist/providers/rabbitmq/amqpPublisher.js.map +1 -1
  40. package/dist/providers/rabbitmq/index.js +106 -286
  41. package/dist/providers/rabbitmq/index.js.map +1 -1
  42. package/dist/services/communicator.js +187 -0
  43. package/dist/services/communicator.js.map +1 -0
  44. package/dist/services/eventBus.js +41 -46
  45. package/dist/services/eventBus.js.map +1 -1
  46. package/dist/services/eventCommunicator.js +125 -0
  47. package/dist/services/eventCommunicator.js.map +1 -0
  48. package/dist/services/eventMessageHandler.js +75 -91
  49. package/dist/services/eventMessageHandler.js.map +1 -1
  50. package/dist/services/eventMessageValidator.js.map +1 -1
  51. package/dist/services/externalCommunicator.js +11 -104
  52. package/dist/services/externalCommunicator.js.map +1 -1
  53. package/dist/services/externalEventBus.js +147 -55
  54. package/dist/services/externalEventBus.js.map +1 -1
  55. package/dist/services/index.js +1 -1
  56. package/dist/services/index.js.map +1 -1
  57. package/dist/services/metrics.js +49 -0
  58. package/dist/services/metrics.js.map +1 -0
  59. package/dist/services/optionsBuilder.js +59 -0
  60. package/dist/services/optionsBuilder.js.map +1 -0
  61. package/dist/services/queue.js +63 -26
  62. package/dist/services/queue.js.map +1 -1
  63. package/dist/services/scheduledTask.js +52 -48
  64. package/dist/services/scheduledTask.js.map +1 -1
  65. package/dist/services/task.js +149 -28
  66. package/dist/services/task.js.map +1 -1
  67. package/dist/types/constants.d.ts +3 -0
  68. package/dist/types/index.d.ts +2 -1
  69. package/dist/types/interfaces/deps.d.ts +11 -2
  70. package/dist/types/interfaces/externalCommunicator.d.ts +5 -12
  71. package/dist/types/interfaces/index.d.ts +70 -60
  72. package/dist/types/interfaces/messageBrokerServiceConfig.d.ts +79 -0
  73. package/dist/types/interfaces/messageHandler.d.ts +2 -0
  74. package/dist/types/interfaces/metrics/index.d.ts +13 -0
  75. package/dist/types/interfaces/options.d.ts +50 -0
  76. package/dist/types/interfaces/providers/rabbitmq/amqpConnection.d.ts +3 -0
  77. package/dist/types/interfaces/providers/rabbitmq/amqpPublisher.d.ts +9 -17
  78. package/dist/types/interfaces/providers/rabbitmq/index.d.ts +72 -8
  79. package/dist/types/interfaces/queueConfig/configs.d.ts +19 -11
  80. package/dist/types/interfaces/queueContext.d.ts +4 -0
  81. package/dist/types/interfaces/queueStatus.d.ts +7 -2
  82. package/dist/types/interfaces/services/eventMessageHandler.d.ts +5 -0
  83. package/dist/types/metrics/index.d.ts +1 -2
  84. package/dist/types/providers/index.d.ts +5 -0
  85. package/dist/types/providers/rabbitmq/amqpAsserter.d.ts +49 -0
  86. package/dist/types/providers/rabbitmq/amqpConnection.d.ts +3 -7
  87. package/dist/types/providers/rabbitmq/amqpListener.d.ts +27 -11
  88. package/dist/types/providers/rabbitmq/amqpPublisher.d.ts +26 -17
  89. package/dist/types/providers/rabbitmq/index.d.ts +35 -38
  90. package/dist/types/services/communicator.d.ts +57 -0
  91. package/dist/types/services/eventBus.d.ts +16 -12
  92. package/dist/types/services/eventCommunicator.d.ts +15 -0
  93. package/dist/types/services/eventMessageHandler.d.ts +9 -11
  94. package/dist/types/services/eventMessageValidator.d.ts +1 -1
  95. package/dist/types/services/externalCommunicator.d.ts +6 -19
  96. package/dist/types/services/externalEventBus.d.ts +28 -13
  97. package/dist/types/services/index.d.ts +1 -1
  98. package/dist/types/services/metrics.d.ts +11 -0
  99. package/dist/types/services/optionsBuilder.d.ts +10 -0
  100. package/dist/types/services/queue.d.ts +14 -9
  101. package/dist/types/services/scheduledTask.d.ts +22 -14
  102. package/dist/types/services/task.d.ts +21 -11
  103. package/dist/types/utils.d.ts +2 -2
  104. package/dist/utils.js +5 -2
  105. package/dist/utils.js.map +1 -1
  106. package/package.json +38 -47
  107. package/dist/interfaces/providers/rabbitmq/amqpListener.js.map +0 -1
  108. package/dist/services/externalCommunicatorChannel.js +0 -31
  109. package/dist/services/externalCommunicatorChannel.js.map +0 -1
  110. package/dist/types/interfaces/providers/rabbitmq/amqpListener.d.ts +0 -7
  111. package/dist/types/services/externalCommunicatorChannel.d.ts +0 -11
@@ -1,24 +1,11 @@
1
- import { PubSubService } from '@diia-inhouse/redis';
2
- import { Logger, OnRegistrationsFinished } from '@diia-inhouse/types';
3
- import { EventBusListener, ExternalEventBusQueue } from '../interfaces';
4
- import { ReceiveDirectOps, ReceiveOps } from '../interfaces/externalCommunicator';
5
- import { EventName } from '../interfaces/queueConfig';
1
+ import Logger from '@diia-inhouse/diia-logger';
2
+ import { ExternalEventBusQueue } from '../interfaces';
3
+ import { ReceiveDirectOps } from '../interfaces/externalCommunicator';
6
4
  import { EventMessageValidator } from './eventMessageValidator';
7
- import { ExternalCommunicatorChannel } from './externalCommunicatorChannel';
8
- export declare class ExternalCommunicator implements OnRegistrationsFinished {
9
- private readonly externalChannel;
5
+ export declare class ExternalCommunicator {
10
6
  private readonly externalEventBus;
11
- private readonly externalEventListenerList;
12
7
  private readonly eventMessageValidator;
13
8
  private readonly logger;
14
- private readonly pubsub;
15
- private readonly timeout;
16
- private eventListeners;
17
- constructor(externalChannel: ExternalCommunicatorChannel, externalEventBus: ExternalEventBusQueue, externalEventListenerList: EventBusListener[], eventMessageValidator: EventMessageValidator, logger: Logger, pubsub: PubSubService, timeout?: number);
18
- onRegistrationsFinished(): void;
19
- receiveDirect<T>(event: string, request?: unknown, ops?: ReceiveDirectOps): Promise<T>;
20
- /**
21
- * @deprecated use receiveDirect in case provider supports direct communcation
22
- */
23
- receive<T>(event: EventName, request?: unknown, ops?: ReceiveOps): Promise<T | undefined>;
9
+ constructor(externalEventBus: ExternalEventBusQueue, eventMessageValidator: EventMessageValidator, logger: Logger);
10
+ receiveDirect<T>(event: string, request: unknown | undefined, ops: ReceiveDirectOps): Promise<T>;
24
11
  }
@@ -1,18 +1,33 @@
1
+ import Logger from '@diia-inhouse/diia-logger';
1
2
  import { EnvService } from '@diia-inhouse/env';
2
- import { Logger, OnInit } from '@diia-inhouse/types';
3
- import { EventBusListener, ExternalEventBusQueue, MessageHandler, MessagePayload, PublishDirectOptions, PublishExternalEventOptions, SubscribeOptions } from '../interfaces';
4
- import { EventName, Topic } from '../interfaces/queueConfig';
3
+ import { OnInit } from '@diia-inhouse/types';
4
+ import { EventBusListener, ExternalEventBusQueue, MessageBrokerServiceEventsListener, MessagePayload, PublishDirectOptions, PublishOptions, PublishingResult } from '../interfaces';
5
+ import { ExchangeName, ExchangeOptions } from '../interfaces/messageBrokerServiceConfig';
6
+ import { EventName } from '../interfaces/queueConfig';
5
7
  import { RabbitMQProvider } from '../providers/rabbitmq';
8
+ import Communicator from './communicator';
6
9
  import { EventMessageHandler } from './eventMessageHandler';
7
- export declare class ExternalEventBus implements ExternalEventBusQueue, OnInit {
8
- private readonly queueProvider;
9
- private readonly externalEventListenerList;
10
- private readonly eventMessageHandler;
10
+ export declare class ExternalEventBus extends Communicator implements ExternalEventBusQueue, OnInit {
11
11
  private readonly envService;
12
- private readonly logger;
13
- constructor(queueProvider: RabbitMQProvider, externalEventListenerList: EventBusListener[], eventMessageHandler: EventMessageHandler, envService: EnvService, logger: Logger);
14
- onInit(): Promise<void>;
15
- subscribe(messageHandler: MessageHandler, options?: SubscribeOptions): Promise<boolean>;
16
- publish(eventName: EventName, message: MessagePayload, options?: PublishExternalEventOptions): Promise<boolean>;
17
- publishDirect<T>(eventName: EventName, message: MessagePayload, topic?: Topic, options?: PublishDirectOptions): Promise<T>;
12
+ private readonly eventCommunicator;
13
+ private readonly publishEventsSet;
14
+ private readonly subscribeEventsSet;
15
+ private readonly exchangePrefixName;
16
+ private readonly eventQueueMap;
17
+ constructor(logger: Logger, systemServiceName: string, envService: EnvService, queueProvider: RabbitMQProvider, externalEventListenerList: EventBusListener[], eventMessageHandler: EventMessageHandler, hostName: string);
18
+ static BuildRequestRoutingKey(eventName: string): string;
19
+ static BuildResponseRoutingKey(eventName: EventName, portalEvents?: string[]): string;
20
+ private static prepareQueuePrefix;
21
+ publish(eventName: EventName, payload: MessagePayload, options?: PublishOptions): Promise<PublishingResult>;
22
+ publishDirect<T>(eventName: EventName, payload: MessagePayload, options?: PublishDirectOptions): Promise<T>;
23
+ protected getUnicastListeners(): MessageBrokerServiceEventsListener[];
24
+ protected getExchangeNameWithSuffix(topic: ExchangeName): string;
25
+ protected getProducerExchangesOptions(): ExchangeOptions[];
26
+ protected getMulticastListeners(): MessageBrokerServiceEventsListener[];
27
+ private getPublishMessage;
28
+ private getPublishRoutingKey;
29
+ private defineQueuesAndExchangesOptionsBasedOnGlobalConfig;
30
+ private buildEventQueueMap;
31
+ private buildResponseQueueName;
32
+ private buildRequestQueueName;
18
33
  }
@@ -2,8 +2,8 @@ export * from './eventBus';
2
2
  export * from './eventMessageHandler';
3
3
  export * from './eventMessageValidator';
4
4
  export * from './externalCommunicator';
5
- export * from './externalCommunicatorChannel';
6
5
  export * from './externalEventBus';
7
6
  export * from './scheduledTask';
8
7
  export * from './task';
9
8
  export * from './queue';
9
+ export * from './metrics';
@@ -0,0 +1,11 @@
1
+ import { MetricsService } from '@diia-inhouse/diia-metrics';
2
+ import { ErrorType } from '@diia-inhouse/errors';
3
+ import { CommunicationDirection } from '../interfaces/metrics';
4
+ export default class RabbitMQMetricsService {
5
+ private metrics;
6
+ private readonly communicationsTotalMetric;
7
+ constructor(metrics: MetricsService);
8
+ collectResponseTotalMetric(startTime: bigint, route: string, source: string, destination: string, errorType?: ErrorType): void | never;
9
+ collectCommunicationsTotalMetric(event: string, source: string, destination: string, direction: CommunicationDirection, queue?: string): void;
10
+ collectRequestTotalMetric(startTime: bigint, route: string, source: string, destination: string, errorType?: ErrorType): void;
11
+ }
@@ -0,0 +1,10 @@
1
+ import { ConsumerOptions, ExchangeName, QueueOptions } from '../interfaces/messageBrokerServiceConfig';
2
+ import { QueueName } from '../interfaces/queueConfig';
3
+ import { RabbitMQProvider } from '../providers/rabbitmq';
4
+ export default class OptionsBuilder {
5
+ private readonly queueProvider;
6
+ constructor(queueProvider: RabbitMQProvider);
7
+ defineQueueOptionsBasedOnGlobalConfig(queueName?: QueueName, routingKey?: string): QueueOptions[];
8
+ defineConsumerOptionsBasedOnGlobalConfig(): ConsumerOptions;
9
+ getExchangeNamesByQueueName(queueName?: QueueName): ExchangeName[];
10
+ }
@@ -1,18 +1,23 @@
1
- /// <reference types="node" />
2
1
  import { AsyncLocalStorage } from 'node:async_hooks';
3
- import { HealthCheckResult, Logger, OnHealthCheck } from '@diia-inhouse/types';
4
- import { QueueConnectionConfig, QueueContext } from '../interfaces';
2
+ import Logger from '@diia-inhouse/diia-logger';
3
+ import { MetricsService } from '@diia-inhouse/diia-metrics';
4
+ import { HealthCheckResult, OnHealthCheck } from '@diia-inhouse/types';
5
+ import { MessageBrokerExternalServiceType, MessageBrokerInternalServiceType, QueueConnectionConfig, QueueContext } from '../interfaces';
5
6
  import { QueueStatus } from '../interfaces/queueStatus';
6
7
  import { RabbitMQProvider } from '../providers/rabbitmq';
7
8
  export declare class Queue implements OnHealthCheck {
8
- private readonly serviceName;
9
+ private readonly systemServiceName;
10
+ private readonly metrics;
9
11
  private readonly connectionConfig;
10
12
  private readonly asyncLocalStorage;
11
13
  private readonly logger;
12
- private internalQueue;
13
- private externalQueue;
14
- constructor(serviceName: string, connectionConfig: QueueConnectionConfig, asyncLocalStorage: AsyncLocalStorage<QueueContext>, logger: Logger);
14
+ private readonly internalRabbitMQProvidersMap;
15
+ private readonly externalRabbitMQProvidersMap;
16
+ constructor(systemServiceName: string, metrics: MetricsService, connectionConfig: QueueConnectionConfig, asyncLocalStorage: AsyncLocalStorage<QueueContext>, logger: Logger);
15
17
  onHealthCheck(): Promise<HealthCheckResult<QueueStatus>>;
16
- getInternalQueue(): RabbitMQProvider;
17
- getExternalQueue(): RabbitMQProvider;
18
+ makeInternalRabbitMQProvider(serviceType: MessageBrokerInternalServiceType): RabbitMQProvider;
19
+ makeExternalRabbitMQProvider(serviceType: MessageBrokerExternalServiceType): RabbitMQProvider;
20
+ private getProvidersStatus;
21
+ private getProvidersStatusDetails;
22
+ private getMessageBrokerServiceConfig;
18
23
  }
@@ -1,17 +1,25 @@
1
- import { Logger, OnInit } from '@diia-inhouse/types';
2
- import { EventBusListener, MessageHandler, ScheduledTasksQueue, SubscribeOptions } from '../interfaces';
3
- import { EventName, QueueName } from '../interfaces/queueConfig';
1
+ import Logger from '@diia-inhouse/diia-logger';
2
+ import { OnInit } from '@diia-inhouse/types';
3
+ import { EventBusListener, ExchangeName, MessageBrokerServiceEventsListener, PublishingResult, ScheduledTasksQueue } from '../interfaces';
4
+ import { ExchangeOptions } from '../interfaces/messageBrokerServiceConfig';
5
+ import { QueueName } from '../interfaces/queueConfig';
4
6
  import { RabbitMQProvider } from '../providers/rabbitmq';
7
+ import Communicator from './communicator';
5
8
  import { EventMessageHandler } from './eventMessageHandler';
6
- export declare class ScheduledTask implements ScheduledTasksQueue, OnInit {
7
- private readonly queueProvider;
8
- private readonly scheduledTaskList;
9
- private readonly eventMessageHandler;
10
- private readonly logger;
11
- private readonly queueName;
12
- private readonly routingPart;
13
- constructor(queueProvider: RabbitMQProvider, scheduledTaskList: EventBusListener[], eventMessageHandler: EventMessageHandler, logger: Logger, queueName: QueueName | undefined);
14
- onInit(): Promise<void>;
15
- subscribe(subscriptionName: QueueName, messageHandler: MessageHandler, options?: SubscribeOptions): Promise<boolean>;
16
- publish(scheduledTaskName: EventName, serviceName: string): Promise<boolean>;
9
+ /**
10
+ * @deprecated use pkg-workflow entities instead
11
+ */
12
+ export declare class ScheduledTask extends Communicator implements ScheduledTasksQueue, OnInit {
13
+ private readonly serviceName;
14
+ protected readonly scheduledTaskList: EventBusListener[];
15
+ private readonly queueName?;
16
+ private readonly eventCommunicator;
17
+ private readonly eventRoutingPart;
18
+ constructor(serviceName: string, systemServiceName: string, queueProvider: RabbitMQProvider, scheduledTaskList: EventBusListener[], eventMessageHandler: EventMessageHandler, logger: Logger, hostName: string, queueName?: QueueName | undefined);
19
+ publish(eventName: string, serviceName: string): Promise<PublishingResult>;
20
+ protected getExchangeNameWithSuffix(exchangeName: ExchangeName): string;
21
+ protected getUnicastListeners(): MessageBrokerServiceEventsListener[];
22
+ protected getMulticastListeners(): MessageBrokerServiceEventsListener[];
23
+ protected getProducerExchangesOptions(): ExchangeOptions[];
24
+ private getRoutingKey;
17
25
  }
@@ -1,18 +1,28 @@
1
- import { Logger, OnInit } from '@diia-inhouse/types';
2
- import { MessageHandler, MessagePayload, SubscribeOptions, TaskListener, TaskQueue } from '../interfaces';
1
+ import Logger from '@diia-inhouse/diia-logger';
2
+ import { OnInit } from '@diia-inhouse/types';
3
+ import { MessageBrokerServiceListener, MessagePayload, PublishingResult, TaskListener, TaskQueue } from '../interfaces';
4
+ import { ExchangeOptions } from '../interfaces/messageBrokerServiceConfig';
3
5
  import { RabbitMQProvider } from '../providers/rabbitmq';
6
+ import Communicator from './communicator';
4
7
  import { EventMessageHandler } from './eventMessageHandler';
5
- export declare class Task implements TaskQueue, OnInit {
6
- private readonly queueProvider;
8
+ export declare class Task extends Communicator implements TaskQueue, OnInit {
9
+ private readonly serviceName;
7
10
  private readonly taskList;
8
11
  private readonly eventMessageHandler;
9
- private readonly logger;
10
- constructor(queueProvider: RabbitMQProvider, taskList: TaskListener[], eventMessageHandler: EventMessageHandler, logger: Logger);
11
- private readonly tasksMap;
12
+ private queueNamePrefix;
13
+ private taskNameExchangesOptionsMap;
14
+ constructor(serviceName: string, systemServiceName: string, queueProvider: RabbitMQProvider, taskList: TaskListener[], eventMessageHandler: EventMessageHandler, logger: Logger, hostName: string);
12
15
  onInit(): Promise<void>;
13
- subscribe(taskName: string, messageHandler: MessageHandler, options?: SubscribeOptions): Promise<boolean>;
14
- publish(taskName: string, payload: MessagePayload, delay?: number): Promise<boolean>;
15
- private subscribeTask;
16
- private getTaskQueueName;
16
+ publish(taskName: string, payload: MessagePayload, delay?: number): Promise<PublishingResult>;
17
+ protected getProducerExchangesOptions(): ExchangeOptions[];
18
+ protected getMulticastListeners(): MessageBrokerServiceListener[];
19
+ protected getUnicastListeners(): MessageBrokerServiceListener[];
20
+ protected getExchangeNameWithSuffix(taskName: string): string;
21
+ private defineExchangesOptions;
22
+ private defineQueueOptionsBasedOnGlobalConfig;
23
+ private defineExchangesOptionsBasedOnGlobalConfig;
24
+ private defineConsumerOptionsBasedOnGlobalConfig;
25
+ private getQueueName;
17
26
  private capitalizeFirstLetter;
27
+ private defineQueueNameByTaskName;
18
28
  }
@@ -1,3 +1,3 @@
1
- import { EventBusListener } from './interfaces';
2
- import { EventListeners } from './interfaces/externalCommunicator';
1
+ import { EventBusListener, EventListeners } from './interfaces';
3
2
  export declare function collectEventBusListeners(eventBusListeners: EventBusListener[]): EventListeners;
3
+ export declare function getConsumerTag(serviceName: string, hostname: string): string;
package/dist/utils.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.collectEventBusListeners = void 0;
3
+ exports.collectEventBusListeners = collectEventBusListeners;
4
+ exports.getConsumerTag = getConsumerTag;
4
5
  function collectEventBusListeners(eventBusListeners) {
5
6
  const eventListeners = {};
6
7
  for (const listener of eventBusListeners) {
@@ -8,5 +9,7 @@ function collectEventBusListeners(eventBusListeners) {
8
9
  }
9
10
  return eventListeners;
10
11
  }
11
- exports.collectEventBusListeners = collectEventBusListeners;
12
+ function getConsumerTag(serviceName, hostname) {
13
+ return `${serviceName}:${hostname}`;
14
+ }
12
15
  //# sourceMappingURL=utils.js.map
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAGA,SAAgB,wBAAwB,CAAC,iBAAqC;IAC1E,MAAM,cAAc,GAAmB,EAAE,CAAA;IAEzC,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE;QACtC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAA;KAC5C;IAED,OAAO,cAAc,CAAA;AACzB,CAAC;AARD,4DAQC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AAEA,4DAQC;AAED,wCAEC;AAZD,SAAgB,wBAAwB,CAAC,iBAAqC;IAC1E,MAAM,cAAc,GAAmB,EAAE,CAAA;IAEzC,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;QACvC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAA;IAC7C,CAAC;IAED,OAAO,cAAc,CAAA;AACzB,CAAC;AAED,SAAgB,cAAc,CAAC,WAAmB,EAAE,QAAgB;IAChE,OAAO,GAAG,WAAW,IAAI,QAAQ,EAAE,CAAA;AACvC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diia-inhouse/diia-queue",
3
- "version": "7.3.0",
3
+ "version": "13.2.0",
4
4
  "description": "Package provide queue functionality",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/types/index.d.ts",
@@ -8,65 +8,64 @@
8
8
  "author": "Diia",
9
9
  "license": "SEE LICENSE IN LICENSE.md",
10
10
  "engines": {
11
- "node": ">=18"
11
+ "node": ">=22"
12
12
  },
13
13
  "files": [
14
14
  "dist"
15
15
  ],
16
16
  "scripts": {
17
17
  "build": "rimraf dist/ && tsc",
18
- "start": "node dist/index.js",
19
- "lint": "eslint --ext .ts . && prettier --check .",
20
- "lint-fix": "eslint --ext .ts --fix && prettier --write .",
18
+ "build-watch": "tsc --watch",
19
+ "lint": "eslint . && prettier --check .",
20
+ "lint-fix": "eslint . --fix && prettier --write .",
21
21
  "lint:lockfile": "lockfile-lint --path package-lock.json --allowed-hosts registry.npmjs.org --validate-https",
22
22
  "format": "prettier --write \"src/**/*.ts\"",
23
23
  "prepare": "npm run build",
24
24
  "semantic-release": "semantic-release",
25
- "test": "jest",
26
- "test:integration": "npm run test --selectProjects integration --",
27
- "test:unit": "npm run test --selectProjects unit --",
28
- "test:coverage": "npm run test --selectProjects unit --coverage",
25
+ "test": "vitest run",
26
+ "test:watch": "vitest watch",
29
27
  "find-circulars": "madge --circular --extensions ts ./"
30
28
  },
31
29
  "dependencies": {
32
- "@diia-inhouse/env": "1.16.0",
33
- "@types/amqplib": "0.10.4",
34
- "amqplib": "0.10.3",
35
- "lodash": "4.17.21",
36
- "p-timeout": "4.1.0",
37
- "uuid": "9.0.1"
30
+ "@types/amqplib": "0.10.8",
31
+ "amqplib": "0.10.9",
32
+ "lodash": "4.17.23",
33
+ "p-timeout": "4.1.0"
38
34
  },
39
35
  "peerDependencies": {
40
- "@diia-inhouse/diia-metrics": ">=3.6.0",
36
+ "@diia-inhouse/diia-logger": ">=3.1.0",
37
+ "@diia-inhouse/diia-metrics": ">=5.0.0",
38
+ "@diia-inhouse/env": ">=2.0.0",
41
39
  "@diia-inhouse/errors": ">=1.4.0",
42
- "@diia-inhouse/redis": ">=2.1.1",
43
- "@diia-inhouse/types": ">=5.0.0",
40
+ "@diia-inhouse/types": ">=6.30.0",
44
41
  "@diia-inhouse/utils": ">=2.21.0",
45
42
  "@diia-inhouse/validators": ">=1.5.0",
46
43
  "@opentelemetry/api": ">=1.7.0"
47
44
  },
48
45
  "devDependencies": {
49
- "@diia-inhouse/configs": "1.31.1",
50
- "@diia-inhouse/crypto": "1.11.0",
51
- "@diia-inhouse/diia-logger": "2.15.0",
52
- "@diia-inhouse/diia-metrics": "3.11.0",
53
- "@diia-inhouse/errors": "1.9.0",
54
- "@diia-inhouse/eslint-config": "5.1.0",
55
- "@diia-inhouse/eslint-plugin": "1.6.0",
56
- "@diia-inhouse/redis": "2.12.0",
57
- "@diia-inhouse/test": "6.3.0",
58
- "@diia-inhouse/types": "6.24.0",
59
- "@diia-inhouse/utils": "3.5.0",
60
- "@diia-inhouse/validators": "1.17.0",
61
- "@opentelemetry/api": "1.7.0",
62
- "@types/lodash": "4.14.202",
63
- "@types/node": "20.11.5",
64
- "@types/uuid": "9.0.7",
65
- "glob": "10.3.10",
66
- "lockfile-lint": "4.12.1",
67
- "madge": "6.1.0",
68
- "protobufjs": "7.2.5",
69
- "type-fest": "4.8.2"
46
+ "@diia-inhouse/configs": "6.1.1",
47
+ "@diia-inhouse/diia-logger": "3.16.0",
48
+ "@diia-inhouse/diia-metrics": "6.4.0",
49
+ "@diia-inhouse/errors": "1.17.0",
50
+ "@diia-inhouse/eslint-config": "8.3.0",
51
+ "@diia-inhouse/eslint-plugin": "1.9.5",
52
+ "@diia-inhouse/test": "7.2.0",
53
+ "@diia-inhouse/types": "11.3.0",
54
+ "@diia-inhouse/utils": "5.3.0",
55
+ "@diia-inhouse/validators": "1.28.0",
56
+ "@opentelemetry/api": "1.9.0",
57
+ "@types/lodash": "4.17.24",
58
+ "@types/node": "24.11.0",
59
+ "@vitest/coverage-v8": "4.0.18",
60
+ "@vitest/ui": "4.0.18",
61
+ "lockfile-lint": "4.14.1",
62
+ "madge": "8.0.0",
63
+ "prettier": "3.8.1",
64
+ "rimraf": "6.1.3",
65
+ "type-fest": "4.41.0",
66
+ "vite-tsconfig-paths": "6.1.1",
67
+ "vitest": "4.0.18",
68
+ "vitest-mock-extended": "3.1.0"
70
69
  },
71
70
  "release": {
72
71
  "extends": "@diia-inhouse/configs/dist/semantic-release/package"
@@ -76,11 +75,6 @@
76
75
  },
77
76
  "eslintConfig": {
78
77
  "extends": "@diia-inhouse/eslint-config",
79
- "rules": {
80
- "@typescript-eslint/no-unnecessary-condition": [
81
- "off"
82
- ]
83
- },
84
78
  "overrides": [
85
79
  {
86
80
  "files": [
@@ -95,9 +89,6 @@
95
89
  }
96
90
  ]
97
91
  },
98
- "jest": {
99
- "preset": "@diia-inhouse/configs/dist/jest"
100
- },
101
92
  "prettier": "@diia-inhouse/eslint-config/prettier",
102
93
  "madge": {
103
94
  "tsConfig": "./tsconfig.json"
@@ -1 +0,0 @@
1
- {"version":3,"file":"amqpListener.js","sourceRoot":"","sources":["../../../../src/interfaces/providers/rabbitmq/amqpListener.ts"],"names":[],"mappings":""}
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ExternalCommunicatorChannel = void 0;
4
- class ExternalCommunicatorChannel {
5
- cache;
6
- constructor(cache) {
7
- this.cache = cache;
8
- }
9
- getChannel(event, requestUuid) {
10
- this.assertChannelAvailability();
11
- return `external_communicator_channel_${event}_${requestUuid}`;
12
- }
13
- async isChannelActive(channel) {
14
- this.assertChannelAvailability();
15
- return Boolean(await this.cache.get(this.getActiveChannelKey(channel)));
16
- }
17
- async saveActiveChannel(channel, timeout) {
18
- this.assertChannelAvailability();
19
- await this.cache.set(this.getActiveChannelKey(channel), 'true', Math.floor(timeout / 1000));
20
- }
21
- getActiveChannelKey(channel) {
22
- return `active_${channel}`;
23
- }
24
- assertChannelAvailability() {
25
- if (!this.cache) {
26
- throw new Error('Cache service is not provided for the ExternalCommunicatorChannel service');
27
- }
28
- }
29
- }
30
- exports.ExternalCommunicatorChannel = ExternalCommunicatorChannel;
31
- //# sourceMappingURL=externalCommunicatorChannel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"externalCommunicatorChannel.js","sourceRoot":"","sources":["../../src/services/externalCommunicatorChannel.ts"],"names":[],"mappings":";;;AAIA,MAAa,2BAA2B;IACP;IAA7B,YAA6B,KAA+B;QAA/B,UAAK,GAAL,KAAK,CAA0B;IAAG,CAAC;IAEhE,UAAU,CAAC,KAAgB,EAAE,WAAmB;QAC5C,IAAI,CAAC,yBAAyB,EAAE,CAAA;QAEhC,OAAO,iCAAiC,KAAK,IAAI,WAAW,EAAE,CAAA;IAClE,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAe;QACjC,IAAI,CAAC,yBAAyB,EAAE,CAAA;QAEhC,OAAO,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC3E,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,OAAe,EAAE,OAAe;QACpD,IAAI,CAAC,yBAAyB,EAAE,CAAA;QAEhC,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAA;IAC/F,CAAC;IAEO,mBAAmB,CAAC,OAAe;QACvC,OAAO,UAAU,OAAO,EAAE,CAAA;IAC9B,CAAC;IAEO,yBAAyB;QAC7B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAA;SAC/F;IACL,CAAC;CACJ;AA9BD,kEA8BC"}
@@ -1,7 +0,0 @@
1
- import { Channel, Options } from 'amqplib';
2
- import { QueueMessage } from '.';
3
- export interface QueueChannelAndOptions {
4
- channel: Channel;
5
- queueOptions: Options.AssertQueue;
6
- }
7
- export type QueueCallback = (msg: QueueMessage | null) => unknown;
@@ -1,11 +0,0 @@
1
- import { CacheService } from '@diia-inhouse/redis';
2
- import { EventName } from '../interfaces/queueConfig';
3
- export declare class ExternalCommunicatorChannel {
4
- private readonly cache;
5
- constructor(cache: CacheService | undefined);
6
- getChannel(event: EventName, requestUuid: string): string;
7
- isChannelActive(channel: string): Promise<boolean>;
8
- saveActiveChannel(channel: string, timeout: number): Promise<void>;
9
- private getActiveChannelKey;
10
- private assertChannelAvailability;
11
- }