@message-queue-toolkit/core 19.0.0 → 21.0.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 (136) hide show
  1. package/dist/errors/DoNotProcessError.js +11 -0
  2. package/dist/errors/DoNotProcessError.js.map +1 -0
  3. package/dist/{lib/errors → errors}/Errors.js +4 -10
  4. package/dist/errors/Errors.js.map +1 -0
  5. package/dist/errors/RetryMessageLaterError.js +11 -0
  6. package/dist/errors/RetryMessageLaterError.js.map +1 -0
  7. package/dist/{lib/events → events}/DomainEventEmitter.d.ts +4 -4
  8. package/dist/{lib/events → events}/DomainEventEmitter.js +9 -13
  9. package/dist/events/DomainEventEmitter.js.map +1 -0
  10. package/dist/{lib/events → events}/EventRegistry.d.ts +1 -1
  11. package/dist/{lib/events → events}/EventRegistry.js +2 -5
  12. package/dist/events/EventRegistry.js.map +1 -0
  13. package/dist/events/baseEventSchemas.d.ts +1 -0
  14. package/dist/events/baseEventSchemas.js +2 -0
  15. package/dist/events/baseEventSchemas.js.map +1 -0
  16. package/dist/events/eventTypes.d.ts +1 -0
  17. package/dist/events/eventTypes.js +2 -0
  18. package/dist/{lib/events → events}/eventTypes.js.map +1 -1
  19. package/dist/{lib/events → events}/fakes/FakeListener.d.ts +1 -1
  20. package/dist/events/fakes/FakeListener.js +16 -0
  21. package/dist/events/fakes/FakeListener.js.map +1 -0
  22. package/dist/index.d.ts +30 -29
  23. package/dist/index.js +25 -53
  24. package/dist/index.js.map +1 -1
  25. package/dist/message-deduplication/messageDeduplicationTypes.d.ts +42 -0
  26. package/dist/message-deduplication/messageDeduplicationTypes.js +16 -0
  27. package/dist/message-deduplication/messageDeduplicationTypes.js.map +1 -0
  28. package/dist/{lib/messages → messages}/MetadataFiller.d.ts +3 -3
  29. package/dist/{lib/messages → messages}/MetadataFiller.js +3 -7
  30. package/dist/messages/MetadataFiller.js.map +1 -0
  31. package/dist/messages/baseMessageSchemas.d.ts +1 -0
  32. package/dist/messages/baseMessageSchemas.js +2 -0
  33. package/dist/messages/baseMessageSchemas.js.map +1 -0
  34. package/dist/{lib/payload-store → payload-store}/JsonStreamStringifySerializer.d.ts +1 -1
  35. package/dist/payload-store/JsonStreamStringifySerializer.js +25 -0
  36. package/dist/payload-store/JsonStreamStringifySerializer.js.map +1 -0
  37. package/dist/payload-store/offloadedPayloadMessageSchemas.js +16 -0
  38. package/dist/payload-store/offloadedPayloadMessageSchemas.js.map +1 -0
  39. package/dist/payload-store/payloadStoreTypes.js +4 -0
  40. package/dist/payload-store/payloadStoreTypes.js.map +1 -0
  41. package/dist/{lib/queues → queues}/AbstractPublisherManager.d.ts +7 -7
  42. package/dist/{lib/queues → queues}/AbstractPublisherManager.js +1 -5
  43. package/dist/queues/AbstractPublisherManager.js.map +1 -0
  44. package/dist/{lib/queues → queues}/AbstractQueueService.d.ts +45 -10
  45. package/dist/{lib/queues → queues}/AbstractQueueService.js +141 -42
  46. package/dist/queues/AbstractQueueService.js.map +1 -0
  47. package/dist/{lib/queues → queues}/HandlerContainer.d.ts +2 -2
  48. package/dist/{lib/queues → queues}/HandlerContainer.js +8 -16
  49. package/dist/queues/HandlerContainer.js.map +1 -0
  50. package/dist/{lib/queues → queues}/HandlerSpy.d.ts +4 -4
  51. package/dist/{lib/queues → queues}/HandlerSpy.js +22 -31
  52. package/dist/queues/HandlerSpy.js.map +1 -0
  53. package/dist/{lib/queues → queues}/MessageSchemaContainer.js +1 -5
  54. package/dist/queues/MessageSchemaContainer.js.map +1 -0
  55. package/dist/{lib/types → types}/MessageQueueTypes.d.ts +11 -2
  56. package/dist/types/MessageQueueTypes.js +2 -0
  57. package/dist/types/MessageQueueTypes.js.map +1 -0
  58. package/dist/{lib/types → types}/queueOptionsTypes.d.ts +14 -4
  59. package/dist/types/queueOptionsTypes.js +2 -0
  60. package/dist/types/queueOptionsTypes.js.map +1 -0
  61. package/dist/utils/dateUtils.js +11 -0
  62. package/dist/utils/dateUtils.js.map +1 -0
  63. package/dist/utils/envUtils.js +9 -0
  64. package/dist/utils/envUtils.js.map +1 -0
  65. package/dist/{lib/utils → utils}/matchUtils.js +6 -13
  66. package/dist/utils/matchUtils.js.map +1 -0
  67. package/dist/{lib/utils → utils}/parseUtils.d.ts +1 -1
  68. package/dist/{lib/utils → utils}/parseUtils.js +1 -4
  69. package/dist/utils/parseUtils.js.map +1 -0
  70. package/dist/utils/queueUtils.js +4 -0
  71. package/dist/utils/queueUtils.js.map +1 -0
  72. package/dist/{lib/utils → utils}/streamUtils.js +1 -4
  73. package/dist/utils/streamUtils.js.map +1 -0
  74. package/dist/utils/toDateProcessor.js +2 -0
  75. package/dist/utils/toDateProcessor.js.map +1 -0
  76. package/dist/{lib/utils → utils}/waitUtils.js +1 -5
  77. package/dist/utils/waitUtils.js.map +1 -0
  78. package/package.json +69 -64
  79. package/dist/lib/errors/DoNotProcessError.js +0 -15
  80. package/dist/lib/errors/DoNotProcessError.js.map +0 -1
  81. package/dist/lib/errors/Errors.js.map +0 -1
  82. package/dist/lib/errors/RetryMessageLaterError.js +0 -15
  83. package/dist/lib/errors/RetryMessageLaterError.js.map +0 -1
  84. package/dist/lib/events/DomainEventEmitter.js.map +0 -1
  85. package/dist/lib/events/EventRegistry.js.map +0 -1
  86. package/dist/lib/events/baseEventSchemas.d.ts +0 -1
  87. package/dist/lib/events/baseEventSchemas.js +0 -11
  88. package/dist/lib/events/baseEventSchemas.js.map +0 -1
  89. package/dist/lib/events/eventTypes.d.ts +0 -1
  90. package/dist/lib/events/eventTypes.js +0 -3
  91. package/dist/lib/events/fakes/FakeListener.js +0 -20
  92. package/dist/lib/events/fakes/FakeListener.js.map +0 -1
  93. package/dist/lib/messages/MetadataFiller.js.map +0 -1
  94. package/dist/lib/messages/baseMessageSchemas.d.ts +0 -1
  95. package/dist/lib/messages/baseMessageSchemas.js +0 -10
  96. package/dist/lib/messages/baseMessageSchemas.js.map +0 -1
  97. package/dist/lib/payload-store/JsonStreamStringifySerializer.js +0 -30
  98. package/dist/lib/payload-store/JsonStreamStringifySerializer.js.map +0 -1
  99. package/dist/lib/payload-store/offloadedPayloadMessageSchemas.js +0 -20
  100. package/dist/lib/payload-store/offloadedPayloadMessageSchemas.js.map +0 -1
  101. package/dist/lib/payload-store/payloadStoreTypes.js +0 -7
  102. package/dist/lib/payload-store/payloadStoreTypes.js.map +0 -1
  103. package/dist/lib/queues/AbstractPublisherManager.js.map +0 -1
  104. package/dist/lib/queues/AbstractQueueService.js.map +0 -1
  105. package/dist/lib/queues/HandlerContainer.js.map +0 -1
  106. package/dist/lib/queues/HandlerSpy.js.map +0 -1
  107. package/dist/lib/queues/MessageSchemaContainer.js.map +0 -1
  108. package/dist/lib/types/MessageQueueTypes.js +0 -3
  109. package/dist/lib/types/MessageQueueTypes.js.map +0 -1
  110. package/dist/lib/types/queueOptionsTypes.js +0 -3
  111. package/dist/lib/types/queueOptionsTypes.js.map +0 -1
  112. package/dist/lib/utils/dateUtils.js +0 -15
  113. package/dist/lib/utils/dateUtils.js.map +0 -1
  114. package/dist/lib/utils/envUtils.js +0 -13
  115. package/dist/lib/utils/envUtils.js.map +0 -1
  116. package/dist/lib/utils/matchUtils.js.map +0 -1
  117. package/dist/lib/utils/parseUtils.js.map +0 -1
  118. package/dist/lib/utils/queueUtils.js +0 -8
  119. package/dist/lib/utils/queueUtils.js.map +0 -1
  120. package/dist/lib/utils/streamUtils.js.map +0 -1
  121. package/dist/lib/utils/toDateProcessor.js +0 -6
  122. package/dist/lib/utils/toDateProcessor.js.map +0 -1
  123. package/dist/lib/utils/waitUtils.js.map +0 -1
  124. /package/dist/{lib/errors → errors}/DoNotProcessError.d.ts +0 -0
  125. /package/dist/{lib/errors → errors}/Errors.d.ts +0 -0
  126. /package/dist/{lib/errors → errors}/RetryMessageLaterError.d.ts +0 -0
  127. /package/dist/{lib/payload-store → payload-store}/offloadedPayloadMessageSchemas.d.ts +0 -0
  128. /package/dist/{lib/payload-store → payload-store}/payloadStoreTypes.d.ts +0 -0
  129. /package/dist/{lib/queues → queues}/MessageSchemaContainer.d.ts +0 -0
  130. /package/dist/{lib/utils → utils}/dateUtils.d.ts +0 -0
  131. /package/dist/{lib/utils → utils}/envUtils.d.ts +0 -0
  132. /package/dist/{lib/utils → utils}/matchUtils.d.ts +0 -0
  133. /package/dist/{lib/utils → utils}/queueUtils.d.ts +0 -0
  134. /package/dist/{lib/utils → utils}/streamUtils.d.ts +0 -0
  135. /package/dist/{lib/utils → utils}/toDateProcessor.d.ts +0 -0
  136. /package/dist/{lib/utils → utils}/waitUtils.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payloadStoreTypes.js","sourceRoot":"","sources":["../../lib/payload-store/payloadStoreTypes.ts"],"names":[],"mappings":"AAmBA,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,SAAS,IAAI,KAAK,CAAA;AAC1E,CAAC"}
@@ -1,11 +1,11 @@
1
1
  import type { TypeOf, z } from 'zod';
2
- import type { EventRegistry } from '../events/EventRegistry';
3
- import type { PublisherBaseEventType } from '../events/baseEventSchemas';
4
- import type { CommonEventDefinition } from '../events/eventTypes';
5
- import type { MetadataFiller } from '../messages/MetadataFiller';
6
- import type { AsyncPublisher, SyncPublisher } from '../types/MessageQueueTypes';
7
- import type { CommonCreationConfigType, QueuePublisherOptions } from '../types/queueOptionsTypes';
8
- import type { PublicHandlerSpy } from './HandlerSpy';
2
+ import type { EventRegistry } from '../events/EventRegistry.ts';
3
+ import type { PublisherBaseEventType } from '../events/baseEventSchemas.ts';
4
+ import type { CommonEventDefinition } from '../events/eventTypes.ts';
5
+ import type { MetadataFiller } from '../messages/MetadataFiller.ts';
6
+ import type { AsyncPublisher, SyncPublisher } from '../types/MessageQueueTypes.ts';
7
+ import type { CommonCreationConfigType, QueuePublisherOptions } from '../types/queueOptionsTypes.ts';
8
+ import type { PublicHandlerSpy } from './HandlerSpy.ts';
9
9
  export type MessagePublishType<T extends CommonEventDefinition> = z.infer<T['publisherSchema']>;
10
10
  export type MessageSchemaType<T extends CommonEventDefinition> = z.infer<T['consumerSchema']>;
11
11
  export type AbstractPublisherFactory<PublisherType extends AsyncPublisher<object, unknown> | SyncPublisher<object, unknown>, DependenciesType, CreationConfigType extends CommonCreationConfigType, QueueLocatorType extends object, EventType extends PublisherBaseEventType, OptionsType extends Omit<QueuePublisherOptions<CreationConfigType, QueueLocatorType, EventType>, 'messageSchemas' | 'creationConfig' | 'locatorConfig'>> = {
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AbstractPublisherManager = void 0;
4
- class AbstractPublisherManager {
1
+ export class AbstractPublisherManager {
5
2
  publisherFactory;
6
3
  newPublisherOptions;
7
4
  metadataFiller;
@@ -127,5 +124,4 @@ class AbstractPublisherManager {
127
124
  return publisher.handlerSpy;
128
125
  }
129
126
  }
130
- exports.AbstractPublisherManager = AbstractPublisherManager;
131
127
  //# sourceMappingURL=AbstractPublisherManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractPublisherManager.js","sourceRoot":"","sources":["../../lib/queues/AbstractPublisherManager.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,14 @@
1
1
  import type { CommonLogger, Either, ErrorReporter, ErrorResolver } from '@lokalise/node-core';
2
2
  import type { ZodSchema, ZodType } from 'zod';
3
- import type { MessageInvalidFormatError, MessageValidationError } from '../errors/Errors';
4
- import type { OffloadedPayloadPointerPayload } from '../payload-store/offloadedPayloadMessageSchemas';
5
- import type { PayloadStoreConfig } from '../payload-store/payloadStoreTypes';
6
- import type { MessageProcessingResult } from '../types/MessageQueueTypes';
7
- import type { DeletionConfig, MessageMetricsManager, QueueDependencies, QueueOptions } from '../types/queueOptionsTypes';
8
- import type { BarrierCallback, BarrierResult, MessageHandlerConfig, PreHandlingOutputs, Prehandler, PrehandlerResult } from './HandlerContainer';
9
- import type { HandlerSpy, PublicHandlerSpy } from './HandlerSpy';
10
- import { MessageSchemaContainer } from './MessageSchemaContainer';
3
+ import type { MessageInvalidFormatError, MessageValidationError } from '../errors/Errors.ts';
4
+ import { AcquireLockTimeoutError, type DeduplicationRequester, type MessageDeduplicationConfig, type ReleasableLock } from '../message-deduplication/messageDeduplicationTypes.ts';
5
+ import { type OffloadedPayloadPointerPayload } from '../payload-store/offloadedPayloadMessageSchemas.ts';
6
+ import type { PayloadStoreConfig } from '../payload-store/payloadStoreTypes.ts';
7
+ import type { MessageProcessingResult } from '../types/MessageQueueTypes.ts';
8
+ import type { DeletionConfig, MessageMetricsManager, QueueDependencies, QueueOptions } from '../types/queueOptionsTypes.ts';
9
+ import type { BarrierCallback, BarrierResult, MessageHandlerConfig, PreHandlingOutputs, Prehandler, PrehandlerResult } from './HandlerContainer.ts';
10
+ import type { HandlerSpy, PublicHandlerSpy } from './HandlerSpy.ts';
11
+ import { MessageSchemaContainer } from './MessageSchemaContainer.ts';
11
12
  export type Deserializer<MessagePayloadType extends object> = (message: unknown, type: ZodType<MessagePayloadType>, errorProcessor: ErrorResolver) => Either<MessageInvalidFormatError | MessageValidationError, MessagePayloadType>;
12
13
  type CommonQueueLocator = {
13
14
  queueName: string;
@@ -21,12 +22,20 @@ export declare abstract class AbstractQueueService<MessagePayloadSchemas extends
21
22
  * Used to keep track of the number of `retryLater` results received for a message to be able to
22
23
  * calculate the delay for the next retry
23
24
  */
24
- private readonly messageNumberOfRetriesField;
25
+ private readonly messageRetryLaterCountField;
25
26
  /**
26
27
  * Used to know when the message was sent initially so we can have a max retry date and avoid
27
28
  * a infinite `retryLater` loop
28
29
  */
29
30
  protected readonly messageTimestampField: string;
31
+ /**
32
+ * Used to know the message deduplication id
33
+ */
34
+ protected readonly messageDeduplicationIdField: string;
35
+ /**
36
+ * Used to know the store-based message deduplication options
37
+ */
38
+ protected readonly messageDeduplicationOptionsField: string;
30
39
  protected readonly errorReporter: ErrorReporter;
31
40
  readonly logger: CommonLogger;
32
41
  protected readonly messageIdField: string;
@@ -36,8 +45,9 @@ export declare abstract class AbstractQueueService<MessagePayloadSchemas extends
36
45
  protected readonly locatorConfig?: QueueLocatorType;
37
46
  protected readonly deletionConfig?: DeletionConfig;
38
47
  protected readonly payloadStoreConfig?: Omit<PayloadStoreConfig, 'serializer'> & Required<Pick<PayloadStoreConfig, 'serializer'>>;
39
- protected readonly _handlerSpy?: HandlerSpy<MessagePayloadSchemas>;
48
+ protected readonly messageDeduplicationConfig?: MessageDeduplicationConfig;
40
49
  protected readonly messageMetricsManager?: MessageMetricsManager<MessagePayloadSchemas>;
50
+ protected readonly _handlerSpy?: HandlerSpy<MessagePayloadSchemas>;
41
51
  protected isInitted: boolean;
42
52
  get handlerSpy(): PublicHandlerSpy<MessagePayloadSchemas>;
43
53
  constructor({ errorReporter, logger, messageMetricsManager }: DependenciesType, options: OptionsType);
@@ -92,5 +102,30 @@ export declare abstract class AbstractQueueService<MessagePayloadSchemas extends
92
102
  * Returns the original payload or an error if the payload was not found or could not be parsed.
93
103
  */
94
104
  protected retrieveOffloadedMessagePayload(maybeOffloadedPayloadPointerPayload: unknown): Promise<Either<Error, unknown>>;
105
+ /**
106
+ * Checks if the message is duplicated against the deduplication store.
107
+ * Returns true if the message is duplicated.
108
+ * Returns false if message is not duplicated or deduplication config is missing.
109
+ */
110
+ protected isMessageDuplicated(message: MessagePayloadSchemas, requester: DeduplicationRequester): Promise<boolean>;
111
+ /**
112
+ * Checks if the message is duplicated.
113
+ * If it's not, stores the deduplication key in the deduplication store and returns false.
114
+ * If it is, returns true.
115
+ * If deduplication config is not provided, always returns false to allow further processing of the message.
116
+ */
117
+ protected deduplicateMessage(message: MessagePayloadSchemas, requester: DeduplicationRequester): Promise<{
118
+ isDuplicated: boolean;
119
+ }>;
120
+ /**
121
+ * Acquires exclusive lock for the message to prevent concurrent processing.
122
+ * If lock was acquired successfully, returns a lock object that should be released after processing.
123
+ * If lock couldn't be acquired due to timeout (meaning another process acquired it earlier), returns AcquireLockTimeoutError
124
+ * If lock couldn't be acquired for any other reasons or if deduplication config is not provided, always returns a lock object that does nothing, so message processing can continue.
125
+ */
126
+ protected acquireLockForMessage(message: MessagePayloadSchemas): Promise<Either<AcquireLockTimeoutError, ReleasableLock>>;
127
+ protected isDeduplicationEnabledForMessage(message: MessagePayloadSchemas): boolean;
128
+ protected getMessageDeduplicationId(message: MessagePayloadSchemas): string | undefined;
129
+ private getParsedMessageDeduplicationOptions;
95
130
  }
96
131
  export {};
@@ -1,27 +1,34 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AbstractQueueService = void 0;
4
- const node_util_1 = require("node:util");
5
- const node_core_1 = require("@lokalise/node-core");
6
- const JsonStreamStringifySerializer_1 = require("../payload-store/JsonStreamStringifySerializer");
7
- const offloadedPayloadMessageSchemas_1 = require("../payload-store/offloadedPayloadMessageSchemas");
8
- const payloadStoreTypes_1 = require("../payload-store/payloadStoreTypes");
9
- const dateUtils_1 = require("../utils/dateUtils");
10
- const streamUtils_1 = require("../utils/streamUtils");
11
- const toDateProcessor_1 = require("../utils/toDateProcessor");
12
- const HandlerSpy_1 = require("./HandlerSpy");
13
- const MessageSchemaContainer_1 = require("./MessageSchemaContainer");
14
- class AbstractQueueService {
1
+ import { types } from 'node:util';
2
+ import { resolveGlobalErrorLogObject } from '@lokalise/node-core';
3
+ import { MESSAGE_DEDUPLICATION_OPTIONS_SCHEMA, } from '@message-queue-toolkit/schemas';
4
+ import { AcquireLockTimeoutError, DEFAULT_MESSAGE_DEDUPLICATION_OPTIONS, DeduplicationRequesterEnum, noopReleasableLock, } from "../message-deduplication/messageDeduplicationTypes.js";
5
+ import { jsonStreamStringifySerializer } from "../payload-store/JsonStreamStringifySerializer.js";
6
+ import { OFFLOADED_PAYLOAD_POINTER_PAYLOAD_SCHEMA, } from "../payload-store/offloadedPayloadMessageSchemas.js";
7
+ import { isDestroyable } from "../payload-store/payloadStoreTypes.js";
8
+ import { isRetryDateExceeded } from "../utils/dateUtils.js";
9
+ import { streamWithKnownSizeToString } from "../utils/streamUtils.js";
10
+ import { toDatePreprocessor } from "../utils/toDateProcessor.js";
11
+ import { resolveHandlerSpy } from "./HandlerSpy.js";
12
+ import { MessageSchemaContainer } from "./MessageSchemaContainer.js";
13
+ export class AbstractQueueService {
15
14
  /**
16
15
  * Used to keep track of the number of `retryLater` results received for a message to be able to
17
16
  * calculate the delay for the next retry
18
17
  */
19
- messageNumberOfRetriesField = '_internalNumberOfRetries';
18
+ messageRetryLaterCountField = '_internalRetryLaterCount';
20
19
  /**
21
20
  * Used to know when the message was sent initially so we can have a max retry date and avoid
22
21
  * a infinite `retryLater` loop
23
22
  */
24
23
  messageTimestampField;
24
+ /**
25
+ * Used to know the message deduplication id
26
+ */
27
+ messageDeduplicationIdField;
28
+ /**
29
+ * Used to know the store-based message deduplication options
30
+ */
31
+ messageDeduplicationOptionsField;
25
32
  errorReporter;
26
33
  logger;
27
34
  messageIdField;
@@ -31,8 +38,9 @@ class AbstractQueueService {
31
38
  locatorConfig;
32
39
  deletionConfig;
33
40
  payloadStoreConfig;
34
- _handlerSpy;
41
+ messageDeduplicationConfig;
35
42
  messageMetricsManager;
43
+ _handlerSpy;
36
44
  isInitted;
37
45
  get handlerSpy() {
38
46
  if (!this._handlerSpy) {
@@ -47,17 +55,21 @@ class AbstractQueueService {
47
55
  this.messageIdField = options.messageIdField ?? 'id';
48
56
  this.messageTypeField = options.messageTypeField;
49
57
  this.messageTimestampField = options.messageTimestampField ?? 'timestamp';
58
+ this.messageDeduplicationIdField = options.messageDeduplicationIdField ?? 'deduplicationId';
59
+ this.messageDeduplicationOptionsField =
60
+ options.messageDeduplicationOptionsField ?? 'deduplicationOptions';
50
61
  this.creationConfig = options.creationConfig;
51
62
  this.locatorConfig = options.locatorConfig;
52
63
  this.deletionConfig = options.deletionConfig;
53
64
  this.payloadStoreConfig = options.payloadStoreConfig
54
65
  ? {
55
- serializer: JsonStreamStringifySerializer_1.jsonStreamStringifySerializer,
66
+ serializer: jsonStreamStringifySerializer,
56
67
  ...options.payloadStoreConfig,
57
68
  }
58
69
  : undefined;
70
+ this.messageDeduplicationConfig = options.messageDeduplicationConfig;
59
71
  this.logMessages = options.logMessages ?? false;
60
- this._handlerSpy = (0, HandlerSpy_1.resolveHandlerSpy)(options);
72
+ this._handlerSpy = resolveHandlerSpy(options);
61
73
  this.isInitted = false;
62
74
  }
63
75
  resolveConsumerMessageSchemaContainer(options) {
@@ -65,7 +77,7 @@ class AbstractQueueService {
65
77
  const messageDefinitions = options.handlers
66
78
  .map((entry) => entry.definition)
67
79
  .filter((entry) => entry !== undefined);
68
- return new MessageSchemaContainer_1.MessageSchemaContainer({
80
+ return new MessageSchemaContainer({
69
81
  messageSchemas,
70
82
  messageDefinitions,
71
83
  messageTypeField: options.messageTypeField,
@@ -74,7 +86,7 @@ class AbstractQueueService {
74
86
  resolvePublisherMessageSchemaContainer(options) {
75
87
  const messageSchemas = options.messageSchemas;
76
88
  const messageDefinitions = [];
77
- return new MessageSchemaContainer_1.MessageSchemaContainer({
89
+ return new MessageSchemaContainer({
78
90
  messageSchemas,
79
91
  messageDefinitions,
80
92
  messageTypeField: options.messageTypeField,
@@ -93,28 +105,25 @@ class AbstractQueueService {
93
105
  this.logger.debug(messageLogEntry);
94
106
  }
95
107
  handleError(err, context) {
96
- const logObject = (0, node_core_1.resolveGlobalErrorLogObject)(err);
108
+ const logObject = resolveGlobalErrorLogObject(err);
97
109
  this.logger.error({
98
110
  ...logObject,
99
111
  ...context,
100
112
  });
101
- if (node_util_1.types.isNativeError(err)) {
113
+ if (types.isNativeError(err)) {
102
114
  this.errorReporter.report({ error: err, context });
103
115
  }
104
116
  }
105
117
  handleMessageProcessed(params) {
106
118
  const { message, processingResult, messageId } = params;
107
119
  const messageProcessingEndTimestamp = Date.now();
108
- if (this._handlerSpy) {
109
- this._handlerSpy.addProcessedMessage({
110
- message,
111
- processingResult,
112
- }, messageId);
113
- }
120
+ this._handlerSpy?.addProcessedMessage({
121
+ message,
122
+ processingResult,
123
+ }, messageId);
114
124
  const debugLoggingEnabled = this.logMessages && this.logger.isLevelEnabled('debug');
115
- if (!debugLoggingEnabled && !this.messageMetricsManager) {
125
+ if (!debugLoggingEnabled && !this.messageMetricsManager)
116
126
  return;
117
- }
118
127
  const processedMessageMetadata = this.resolveProcessedMessageMetadata(message, processingResult, params.messageProcessingStartTimestamp, messageProcessingEndTimestamp, params.queueName, messageId);
119
128
  if (debugLoggingEnabled) {
120
129
  this.logger.debug(processedMessageMetadata, `Finished processing message ${processedMessageMetadata.messageId}`);
@@ -131,6 +140,10 @@ class AbstractQueueService {
131
140
  ? // @ts-ignore
132
141
  message[this.messageTypeField]
133
142
  : undefined;
143
+ const messageDeduplicationId = message && this.messageDeduplicationIdField in message
144
+ ? // @ts-ignore
145
+ message[this.messageDeduplicationId]
146
+ : undefined;
134
147
  return {
135
148
  processingResult,
136
149
  messageId: resolvedMessageId ?? '(unknown id)',
@@ -138,6 +151,7 @@ class AbstractQueueService {
138
151
  queueName,
139
152
  message,
140
153
  messageTimestamp,
154
+ messageDeduplicationId,
141
155
  messageProcessingStartTimestamp,
142
156
  messageProcessingEndTimestamp,
143
157
  };
@@ -170,7 +184,7 @@ class AbstractQueueService {
170
184
  }
171
185
  shouldBeRetried(message, maxRetryDuration) {
172
186
  const timestamp = this.tryToExtractTimestamp(message) ?? new Date();
173
- return !(0, dateUtils_1.isRetryDateExceeded)(timestamp, maxRetryDuration);
187
+ return !isRetryDateExceeded(timestamp, maxRetryDuration);
174
188
  }
175
189
  getMessageRetryDelayInSeconds(message) {
176
190
  // if not defined, this is the first attempt
@@ -195,7 +209,7 @@ class AbstractQueueService {
195
209
  */
196
210
  const numberOfRetries = this.tryToExtractNumberOfRetries(message);
197
211
  // @ts-ignore
198
- messageCopy[this.messageNumberOfRetriesField] =
212
+ messageCopy[this.messageRetryLaterCountField] =
199
213
  numberOfRetries !== undefined ? numberOfRetries + 1 : 0;
200
214
  return messageCopy;
201
215
  }
@@ -203,7 +217,7 @@ class AbstractQueueService {
203
217
  // @ts-ignore
204
218
  if (this.messageTimestampField in message) {
205
219
  // @ts-ignore
206
- const res = (0, toDateProcessor_1.toDatePreprocessor)(message[this.messageTimestampField]);
220
+ const res = toDatePreprocessor(message[this.messageTimestampField]);
207
221
  if (!(res instanceof Date)) {
208
222
  throw new Error(`${this.messageTimestampField} invalid type`);
209
223
  }
@@ -212,14 +226,13 @@ class AbstractQueueService {
212
226
  return undefined;
213
227
  }
214
228
  tryToExtractNumberOfRetries(message) {
215
- if (this.messageNumberOfRetriesField in message &&
216
- typeof message[this.messageNumberOfRetriesField] === 'number') {
229
+ if (this.messageRetryLaterCountField in message &&
230
+ typeof message[this.messageRetryLaterCountField] === 'number') {
217
231
  // @ts-ignore
218
- return message[this.messageNumberOfRetriesField];
232
+ return message[this.messageRetryLaterCountField];
219
233
  }
220
234
  return undefined;
221
235
  }
222
- // eslint-disable-next-line max-params
223
236
  resolveNextPreHandlerFunctionInternal(preHandlers, executionContext, message, index, preHandlerOutput, resolve, reject) {
224
237
  return (preHandlerResult) => {
225
238
  if (preHandlerResult.error) {
@@ -229,7 +242,7 @@ class AbstractQueueService {
229
242
  resolve(preHandlerOutput);
230
243
  }
231
244
  else {
232
- // eslint-disable-next-line @typescript-eslint/no-unsafe-call
245
+ // biome-ignore lint/style/noNonNullAssertion: <explanation>
233
246
  preHandlers[index](message, executionContext,
234
247
  // @ts-ignore
235
248
  preHandlerOutput, this.resolveNextPreHandlerFunctionInternal(preHandlers, executionContext, message, index + 1, preHandlerOutput, resolve, reject));
@@ -252,7 +265,7 @@ class AbstractQueueService {
252
265
  offloadedPayloadPointer = await this.payloadStoreConfig.store.storePayload(serializedPayload);
253
266
  }
254
267
  finally {
255
- if ((0, payloadStoreTypes_1.isDestroyable)(serializedPayload)) {
268
+ if (isDestroyable(serializedPayload)) {
256
269
  await serializedPayload.destroy();
257
270
  }
258
271
  }
@@ -265,6 +278,10 @@ class AbstractQueueService {
265
278
  [this.messageTypeField]: message[this.messageTypeField],
266
279
  // @ts-ignore
267
280
  [this.messageTimestampField]: message[this.messageTimestampField],
281
+ // @ts-ignore
282
+ [this.messageDeduplicationIdField]: message[this.messageDeduplicationIdField],
283
+ // @ts-ignore
284
+ [this.messageDeduplicationOptionsField]: message[this.messageDeduplicationOptionsField],
268
285
  };
269
286
  }
270
287
  /**
@@ -277,7 +294,7 @@ class AbstractQueueService {
277
294
  error: new Error('Payload store is not configured, cannot retrieve offloaded message payload'),
278
295
  };
279
296
  }
280
- const pointerPayloadParseResult = offloadedPayloadMessageSchemas_1.OFFLOADED_PAYLOAD_POINTER_PAYLOAD_SCHEMA.safeParse(maybeOffloadedPayloadPointerPayload);
297
+ const pointerPayloadParseResult = OFFLOADED_PAYLOAD_POINTER_PAYLOAD_SCHEMA.safeParse(maybeOffloadedPayloadPointerPayload);
281
298
  if (!pointerPayloadParseResult.success) {
282
299
  return {
283
300
  error: new Error('Given payload is not a valid offloaded payload pointer payload', {
@@ -291,7 +308,7 @@ class AbstractQueueService {
291
308
  error: new Error(`Payload with key ${pointerPayloadParseResult.data.offloadedPayloadPointer} was not found in the store`),
292
309
  };
293
310
  }
294
- const serializedOffloadedPayloadString = await (0, streamUtils_1.streamWithKnownSizeToString)(serializedOffloadedPayloadReadable, pointerPayloadParseResult.data.offloadedPayloadSize);
311
+ const serializedOffloadedPayloadString = await streamWithKnownSizeToString(serializedOffloadedPayloadReadable, pointerPayloadParseResult.data.offloadedPayloadSize);
295
312
  try {
296
313
  return { result: JSON.parse(serializedOffloadedPayloadString) };
297
314
  }
@@ -299,6 +316,88 @@ class AbstractQueueService {
299
316
  return { error: new Error('Failed to parse serialized offloaded payload', { cause: e }) };
300
317
  }
301
318
  }
319
+ /**
320
+ * Checks if the message is duplicated against the deduplication store.
321
+ * Returns true if the message is duplicated.
322
+ * Returns false if message is not duplicated or deduplication config is missing.
323
+ */
324
+ async isMessageDuplicated(message, requester) {
325
+ if (!this.isDeduplicationEnabledForMessage(message)) {
326
+ return false;
327
+ }
328
+ const deduplicationId = this.getMessageDeduplicationId(message);
329
+ const deduplicationConfig = this.messageDeduplicationConfig;
330
+ try {
331
+ return await deduplicationConfig.deduplicationStore.keyExists(`${requester.toString()}:${deduplicationId}`);
332
+ }
333
+ catch (err) {
334
+ this.handleError(err);
335
+ // In case of errors, we treat the message as not duplicated to enable further processing
336
+ return false;
337
+ }
338
+ }
339
+ /**
340
+ * Checks if the message is duplicated.
341
+ * If it's not, stores the deduplication key in the deduplication store and returns false.
342
+ * If it is, returns true.
343
+ * If deduplication config is not provided, always returns false to allow further processing of the message.
344
+ */
345
+ async deduplicateMessage(message, requester) {
346
+ if (!this.isDeduplicationEnabledForMessage(message)) {
347
+ return { isDuplicated: false };
348
+ }
349
+ const deduplicationId = this.getMessageDeduplicationId(message);
350
+ const { deduplicationWindowSeconds } = this.getParsedMessageDeduplicationOptions(message);
351
+ const deduplicationConfig = this.messageDeduplicationConfig;
352
+ try {
353
+ const wasDeduplicationKeyStored = await deduplicationConfig.deduplicationStore.setIfNotExists(`${requester.toString()}:${deduplicationId}`, new Date().toISOString(), deduplicationWindowSeconds);
354
+ return { isDuplicated: !wasDeduplicationKeyStored };
355
+ }
356
+ catch (err) {
357
+ this.handleError(err);
358
+ // In case of errors, we treat the message as not duplicated to enable further processing
359
+ return { isDuplicated: false };
360
+ }
361
+ }
362
+ /**
363
+ * Acquires exclusive lock for the message to prevent concurrent processing.
364
+ * If lock was acquired successfully, returns a lock object that should be released after processing.
365
+ * If lock couldn't be acquired due to timeout (meaning another process acquired it earlier), returns AcquireLockTimeoutError
366
+ * If lock couldn't be acquired for any other reasons or if deduplication config is not provided, always returns a lock object that does nothing, so message processing can continue.
367
+ */
368
+ async acquireLockForMessage(message) {
369
+ if (!this.isDeduplicationEnabledForMessage(message)) {
370
+ return { result: noopReleasableLock };
371
+ }
372
+ const deduplicationId = this.getMessageDeduplicationId(message);
373
+ const deduplicationOptions = this.getParsedMessageDeduplicationOptions(message);
374
+ const deduplicationConfig = this.messageDeduplicationConfig;
375
+ const acquireLockResult = await deduplicationConfig.deduplicationStore.acquireLock(`${DeduplicationRequesterEnum.Consumer.toString()}:${deduplicationId}`, deduplicationOptions);
376
+ if (acquireLockResult.error && !(acquireLockResult.error instanceof AcquireLockTimeoutError)) {
377
+ this.handleError(acquireLockResult.error);
378
+ return { result: noopReleasableLock };
379
+ }
380
+ return acquireLockResult;
381
+ }
382
+ isDeduplicationEnabledForMessage(message) {
383
+ return !!this.messageDeduplicationConfig && !!this.getMessageDeduplicationId(message);
384
+ }
385
+ getMessageDeduplicationId(message) {
386
+ // @ts-ignore
387
+ return message[this.messageDeduplicationIdField];
388
+ }
389
+ getParsedMessageDeduplicationOptions(message) {
390
+ const parsedOptions = MESSAGE_DEDUPLICATION_OPTIONS_SCHEMA.safeParse(
391
+ // @ts-expect-error
392
+ message[this.messageDeduplicationOptionsField] ?? {});
393
+ if (parsedOptions.error) {
394
+ this.logger.warn({ error: parsedOptions.error.message }, `${this.messageDeduplicationOptionsField} contains one or more invalid values, falling back to default options`);
395
+ return DEFAULT_MESSAGE_DEDUPLICATION_OPTIONS;
396
+ }
397
+ return {
398
+ ...DEFAULT_MESSAGE_DEDUPLICATION_OPTIONS,
399
+ ...Object.fromEntries(Object.entries(parsedOptions.data).filter(([_, value]) => value !== undefined)),
400
+ };
401
+ }
302
402
  }
303
- exports.AbstractQueueService = AbstractQueueService;
304
403
  //# sourceMappingURL=AbstractQueueService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractQueueService.js","sourceRoot":"","sources":["../../lib/queues/AbstractQueueService.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import type { Either } from '@lokalise/node-core';
2
2
  import type { CommonEventDefinition } from '@message-queue-toolkit/schemas';
3
3
  import type { ZodSchema } from 'zod';
4
- import type { DoNotProcessMessageError } from '../errors/DoNotProcessError';
5
- import type { RetryMessageLaterError } from '../errors/RetryMessageLaterError';
4
+ import type { DoNotProcessMessageError } from '../errors/DoNotProcessError.ts';
5
+ import type { RetryMessageLaterError } from '../errors/RetryMessageLaterError.ts';
6
6
  export type PreHandlingOutputs<PrehandlerOutput = undefined, BarrierOutput = undefined> = {
7
7
  preHandlerOutput: PrehandlerOutput;
8
8
  barrierOutput: BarrierOutput;
@@ -1,10 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HandlerContainer = exports.MessageHandlerConfigBuilder = exports.MessageHandlerConfig = exports.defaultLogFormatter = void 0;
4
- const schemas_1 = require("@message-queue-toolkit/schemas");
5
- const defaultLogFormatter = (message) => message;
6
- exports.defaultLogFormatter = defaultLogFormatter;
7
- class MessageHandlerConfig {
1
+ import { isCommonEventDefinition } from '@message-queue-toolkit/schemas';
2
+ export const defaultLogFormatter = (message) => message;
3
+ export class MessageHandlerConfig {
8
4
  schema;
9
5
  definition;
10
6
  handler;
@@ -15,23 +11,22 @@ class MessageHandlerConfig {
15
11
  this.schema = schema;
16
12
  this.definition = eventDefinition;
17
13
  this.handler = handler;
18
- this.messageLogFormatter = options?.messageLogFormatter ?? exports.defaultLogFormatter;
14
+ this.messageLogFormatter = options?.messageLogFormatter ?? defaultLogFormatter;
19
15
  this.preHandlerBarrier = options?.preHandlerBarrier;
20
16
  this.preHandlers = options?.preHandlers ?? [];
21
17
  }
22
18
  }
23
- exports.MessageHandlerConfig = MessageHandlerConfig;
24
- class MessageHandlerConfigBuilder {
19
+ export class MessageHandlerConfigBuilder {
25
20
  configs;
26
21
  constructor() {
27
22
  this.configs = [];
28
23
  }
29
24
  addConfig(schema, handler, options) {
30
- const resolvedSchema = (0, schemas_1.isCommonEventDefinition)(schema)
25
+ const resolvedSchema = isCommonEventDefinition(schema)
31
26
  ? // @ts-ignore
32
27
  schema.consumerSchema
33
28
  : schema;
34
- const definition = (0, schemas_1.isCommonEventDefinition)(schema) ? schema : undefined;
29
+ const definition = isCommonEventDefinition(schema) ? schema : undefined;
35
30
  this.configs.push(
36
31
  // @ts-ignore
37
32
  new MessageHandlerConfig(resolvedSchema,
@@ -43,8 +38,7 @@ class MessageHandlerConfigBuilder {
43
38
  return this.configs;
44
39
  }
45
40
  }
46
- exports.MessageHandlerConfigBuilder = MessageHandlerConfigBuilder;
47
- class HandlerContainer {
41
+ export class HandlerContainer {
48
42
  messageHandlers;
49
43
  messageTypeField;
50
44
  constructor(options) {
@@ -57,7 +51,6 @@ class HandlerContainer {
57
51
  throw new Error(`Unsupported message type: ${messageType}`);
58
52
  }
59
53
  // @ts-ignore
60
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
61
54
  return handler;
62
55
  }
63
56
  resolveHandlerMap(supportedHandlers) {
@@ -70,5 +63,4 @@ class HandlerContainer {
70
63
  }, {});
71
64
  }
72
65
  }
73
- exports.HandlerContainer = HandlerContainer;
74
66
  //# sourceMappingURL=HandlerContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HandlerContainer.js","sourceRoot":"","sources":["../../lib/queues/HandlerContainer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AA+CxE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAuB,OAA6B,EAAE,EAAE,CAAC,OAAO,CAAA;AAkBnG,MAAM,OAAO,oBAAoB;IAMf,MAAM,CAAiC;IACvC,UAAU,CAAwB;IAClC,OAAO,CAKtB;IACe,mBAAmB,CAAoC;IACvD,iBAAiB,CAKhC;IACe,WAAW,CAIxB;IAEH,YACE,MAAuC,EACvC,OAAyF,EACzF,OAKC,EACD,eAAuC;QAEvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,eAAe,CAAA;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,mBAAmB,GAAG,OAAO,EAAE,mBAAmB,IAAI,mBAAmB,CAAA;QAC9E,IAAI,CAAC,iBAAiB,GAAG,OAAO,EAAE,iBAAiB,CAAA;QACnD,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,EAAE,CAAA;IAC/C,CAAC;CACF;AAED,MAAM,OAAO,2BAA2B;IAKrB,OAAO,CAMrB;IAEH;QACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,CAAC;IAED,SAAS,CACP,MAA+D,EAC/D,OAAyF,EACzF,OAKC;QAED,MAAM,cAAc,GAAoC,uBAAuB,CAAC,MAAM,CAAC;YACrF,CAAC,CAAC,aAAa;gBACZ,MAAM,CAAC,cAAkD;YAC5D,CAAC,CAAC,MAAM,CAAA;QACV,MAAM,UAAU,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;QAEvE,IAAI,CAAC,OAAO,CAAC,IAAI;QACf,aAAa;QACb,IAAI,oBAAoB,CAMtB,cAAc;QACd,aAAa;QACb,OAAO,EACP,OAAO,EACP,UAAU,CACX,CACF,CAAA;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;CACF;AAuBD,MAAM,OAAO,gBAAgB;IAKV,eAAe,CAG/B;IACgB,gBAAgB,CAAQ;IAEzC,YACE,OAA2F;QAE3F,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAA;QAChD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;IACxE,CAAC;IAEM,cAAc,CACnB,WAAmB;QAOnB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;QACjD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,6BAA6B,WAAW,EAAE,CAAC,CAAA;QAC7D,CAAC;QACD,aAAa;QACb,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,iBAAiB,CACvB,iBAIG;QAKH,OAAO,iBAAiB,CAAC,MAAM,CAC7B,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACb,aAAa;YACb,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAA;YACnE,aAAa;YACb,GAAG,CAAC,WAAW,CAAC,GAAG,KAAK,CAAA;YACxB,OAAO,GAAG,CAAA;QACZ,CAAC,EACD,EAGC,CACF,CAAA;IACH,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import type { MessageProcessingResult } from '../types/MessageQueueTypes';
1
+ import type { MessageProcessingResult, MessageProcessingResultStatus } from '../types/MessageQueueTypes.ts';
2
2
  export type HandlerSpyParams = {
3
3
  bufferSize?: number;
4
4
  messageIdField?: string;
@@ -25,9 +25,9 @@ export declare class HandlerSpy<MessagePayloadSchemas extends object> {
25
25
  private readonly spyPromises;
26
26
  constructor(params?: HandlerSpyParams);
27
27
  private messageMatchesFilter;
28
- waitForMessageWithId<T extends MessagePayloadSchemas>(id: string, processingResult?: MessageProcessingResult): Promise<SpyResultOutput<T>>;
29
- checkForMessage<T extends MessagePayloadSchemas>(expectedFields: DeepPartial<T>, expectedProcessingResult?: MessageProcessingResult): SpyResultOutput<T> | undefined;
30
- waitForMessage<T extends MessagePayloadSchemas>(expectedFields: DeepPartial<T>, expectedProcessingResult?: MessageProcessingResult): Promise<SpyResultOutput<T>>;
28
+ waitForMessageWithId<T extends MessagePayloadSchemas>(id: string, status?: MessageProcessingResultStatus): Promise<SpyResultOutput<T>>;
29
+ checkForMessage<T extends MessagePayloadSchemas>(expectedFields: DeepPartial<T>, status?: MessageProcessingResultStatus): SpyResultOutput<T> | undefined;
30
+ waitForMessage<T extends MessagePayloadSchemas>(expectedFields: DeepPartial<T>, status?: MessageProcessingResultStatus): Promise<SpyResultOutput<T>>;
31
31
  clear(): void;
32
32
  addProcessedMessage(processingResult: SpyResultInput<MessagePayloadSchemas>, messageId?: string): void;
33
33
  }