@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.
- package/dist/errors/DoNotProcessError.js +11 -0
- package/dist/errors/DoNotProcessError.js.map +1 -0
- package/dist/{lib/errors → errors}/Errors.js +4 -10
- package/dist/errors/Errors.js.map +1 -0
- package/dist/errors/RetryMessageLaterError.js +11 -0
- package/dist/errors/RetryMessageLaterError.js.map +1 -0
- package/dist/{lib/events → events}/DomainEventEmitter.d.ts +4 -4
- package/dist/{lib/events → events}/DomainEventEmitter.js +9 -13
- package/dist/events/DomainEventEmitter.js.map +1 -0
- package/dist/{lib/events → events}/EventRegistry.d.ts +1 -1
- package/dist/{lib/events → events}/EventRegistry.js +2 -5
- package/dist/events/EventRegistry.js.map +1 -0
- package/dist/events/baseEventSchemas.d.ts +1 -0
- package/dist/events/baseEventSchemas.js +2 -0
- package/dist/events/baseEventSchemas.js.map +1 -0
- package/dist/events/eventTypes.d.ts +1 -0
- package/dist/events/eventTypes.js +2 -0
- package/dist/{lib/events → events}/eventTypes.js.map +1 -1
- package/dist/{lib/events → events}/fakes/FakeListener.d.ts +1 -1
- package/dist/events/fakes/FakeListener.js +16 -0
- package/dist/events/fakes/FakeListener.js.map +1 -0
- package/dist/index.d.ts +30 -29
- package/dist/index.js +25 -53
- package/dist/index.js.map +1 -1
- package/dist/message-deduplication/messageDeduplicationTypes.d.ts +42 -0
- package/dist/message-deduplication/messageDeduplicationTypes.js +16 -0
- package/dist/message-deduplication/messageDeduplicationTypes.js.map +1 -0
- package/dist/{lib/messages → messages}/MetadataFiller.d.ts +3 -3
- package/dist/{lib/messages → messages}/MetadataFiller.js +3 -7
- package/dist/messages/MetadataFiller.js.map +1 -0
- package/dist/messages/baseMessageSchemas.d.ts +1 -0
- package/dist/messages/baseMessageSchemas.js +2 -0
- package/dist/messages/baseMessageSchemas.js.map +1 -0
- package/dist/{lib/payload-store → payload-store}/JsonStreamStringifySerializer.d.ts +1 -1
- package/dist/payload-store/JsonStreamStringifySerializer.js +25 -0
- package/dist/payload-store/JsonStreamStringifySerializer.js.map +1 -0
- package/dist/payload-store/offloadedPayloadMessageSchemas.js +16 -0
- package/dist/payload-store/offloadedPayloadMessageSchemas.js.map +1 -0
- package/dist/payload-store/payloadStoreTypes.js +4 -0
- package/dist/payload-store/payloadStoreTypes.js.map +1 -0
- package/dist/{lib/queues → queues}/AbstractPublisherManager.d.ts +7 -7
- package/dist/{lib/queues → queues}/AbstractPublisherManager.js +1 -5
- package/dist/queues/AbstractPublisherManager.js.map +1 -0
- package/dist/{lib/queues → queues}/AbstractQueueService.d.ts +45 -10
- package/dist/{lib/queues → queues}/AbstractQueueService.js +141 -42
- package/dist/queues/AbstractQueueService.js.map +1 -0
- package/dist/{lib/queues → queues}/HandlerContainer.d.ts +2 -2
- package/dist/{lib/queues → queues}/HandlerContainer.js +8 -16
- package/dist/queues/HandlerContainer.js.map +1 -0
- package/dist/{lib/queues → queues}/HandlerSpy.d.ts +4 -4
- package/dist/{lib/queues → queues}/HandlerSpy.js +22 -31
- package/dist/queues/HandlerSpy.js.map +1 -0
- package/dist/{lib/queues → queues}/MessageSchemaContainer.js +1 -5
- package/dist/queues/MessageSchemaContainer.js.map +1 -0
- package/dist/{lib/types → types}/MessageQueueTypes.d.ts +11 -2
- package/dist/types/MessageQueueTypes.js +2 -0
- package/dist/types/MessageQueueTypes.js.map +1 -0
- package/dist/{lib/types → types}/queueOptionsTypes.d.ts +14 -4
- package/dist/types/queueOptionsTypes.js +2 -0
- package/dist/types/queueOptionsTypes.js.map +1 -0
- package/dist/utils/dateUtils.js +11 -0
- package/dist/utils/dateUtils.js.map +1 -0
- package/dist/utils/envUtils.js +9 -0
- package/dist/utils/envUtils.js.map +1 -0
- package/dist/{lib/utils → utils}/matchUtils.js +6 -13
- package/dist/utils/matchUtils.js.map +1 -0
- package/dist/{lib/utils → utils}/parseUtils.d.ts +1 -1
- package/dist/{lib/utils → utils}/parseUtils.js +1 -4
- package/dist/utils/parseUtils.js.map +1 -0
- package/dist/utils/queueUtils.js +4 -0
- package/dist/utils/queueUtils.js.map +1 -0
- package/dist/{lib/utils → utils}/streamUtils.js +1 -4
- package/dist/utils/streamUtils.js.map +1 -0
- package/dist/utils/toDateProcessor.js +2 -0
- package/dist/utils/toDateProcessor.js.map +1 -0
- package/dist/{lib/utils → utils}/waitUtils.js +1 -5
- package/dist/utils/waitUtils.js.map +1 -0
- package/package.json +69 -64
- package/dist/lib/errors/DoNotProcessError.js +0 -15
- package/dist/lib/errors/DoNotProcessError.js.map +0 -1
- package/dist/lib/errors/Errors.js.map +0 -1
- package/dist/lib/errors/RetryMessageLaterError.js +0 -15
- package/dist/lib/errors/RetryMessageLaterError.js.map +0 -1
- package/dist/lib/events/DomainEventEmitter.js.map +0 -1
- package/dist/lib/events/EventRegistry.js.map +0 -1
- package/dist/lib/events/baseEventSchemas.d.ts +0 -1
- package/dist/lib/events/baseEventSchemas.js +0 -11
- package/dist/lib/events/baseEventSchemas.js.map +0 -1
- package/dist/lib/events/eventTypes.d.ts +0 -1
- package/dist/lib/events/eventTypes.js +0 -3
- package/dist/lib/events/fakes/FakeListener.js +0 -20
- package/dist/lib/events/fakes/FakeListener.js.map +0 -1
- package/dist/lib/messages/MetadataFiller.js.map +0 -1
- package/dist/lib/messages/baseMessageSchemas.d.ts +0 -1
- package/dist/lib/messages/baseMessageSchemas.js +0 -10
- package/dist/lib/messages/baseMessageSchemas.js.map +0 -1
- package/dist/lib/payload-store/JsonStreamStringifySerializer.js +0 -30
- package/dist/lib/payload-store/JsonStreamStringifySerializer.js.map +0 -1
- package/dist/lib/payload-store/offloadedPayloadMessageSchemas.js +0 -20
- package/dist/lib/payload-store/offloadedPayloadMessageSchemas.js.map +0 -1
- package/dist/lib/payload-store/payloadStoreTypes.js +0 -7
- package/dist/lib/payload-store/payloadStoreTypes.js.map +0 -1
- package/dist/lib/queues/AbstractPublisherManager.js.map +0 -1
- package/dist/lib/queues/AbstractQueueService.js.map +0 -1
- package/dist/lib/queues/HandlerContainer.js.map +0 -1
- package/dist/lib/queues/HandlerSpy.js.map +0 -1
- package/dist/lib/queues/MessageSchemaContainer.js.map +0 -1
- package/dist/lib/types/MessageQueueTypes.js +0 -3
- package/dist/lib/types/MessageQueueTypes.js.map +0 -1
- package/dist/lib/types/queueOptionsTypes.js +0 -3
- package/dist/lib/types/queueOptionsTypes.js.map +0 -1
- package/dist/lib/utils/dateUtils.js +0 -15
- package/dist/lib/utils/dateUtils.js.map +0 -1
- package/dist/lib/utils/envUtils.js +0 -13
- package/dist/lib/utils/envUtils.js.map +0 -1
- package/dist/lib/utils/matchUtils.js.map +0 -1
- package/dist/lib/utils/parseUtils.js.map +0 -1
- package/dist/lib/utils/queueUtils.js +0 -8
- package/dist/lib/utils/queueUtils.js.map +0 -1
- package/dist/lib/utils/streamUtils.js.map +0 -1
- package/dist/lib/utils/toDateProcessor.js +0 -6
- package/dist/lib/utils/toDateProcessor.js.map +0 -1
- package/dist/lib/utils/waitUtils.js.map +0 -1
- /package/dist/{lib/errors → errors}/DoNotProcessError.d.ts +0 -0
- /package/dist/{lib/errors → errors}/Errors.d.ts +0 -0
- /package/dist/{lib/errors → errors}/RetryMessageLaterError.d.ts +0 -0
- /package/dist/{lib/payload-store → payload-store}/offloadedPayloadMessageSchemas.d.ts +0 -0
- /package/dist/{lib/payload-store → payload-store}/payloadStoreTypes.d.ts +0 -0
- /package/dist/{lib/queues → queues}/MessageSchemaContainer.d.ts +0 -0
- /package/dist/{lib/utils → utils}/dateUtils.d.ts +0 -0
- /package/dist/{lib/utils → utils}/envUtils.d.ts +0 -0
- /package/dist/{lib/utils → utils}/matchUtils.d.ts +0 -0
- /package/dist/{lib/utils → utils}/queueUtils.d.ts +0 -0
- /package/dist/{lib/utils → utils}/streamUtils.d.ts +0 -0
- /package/dist/{lib/utils → utils}/toDateProcessor.d.ts +0 -0
- /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
|
-
|
|
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
|
|
5
|
-
import type
|
|
6
|
-
import type {
|
|
7
|
-
import type {
|
|
8
|
-
import type {
|
|
9
|
-
import type {
|
|
10
|
-
import {
|
|
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
|
|
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
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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 =
|
|
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
|
|
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
|
|
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 =
|
|
108
|
+
const logObject = resolveGlobalErrorLogObject(err);
|
|
97
109
|
this.logger.error({
|
|
98
110
|
...logObject,
|
|
99
111
|
...context,
|
|
100
112
|
});
|
|
101
|
-
if (
|
|
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
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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 !
|
|
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.
|
|
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 =
|
|
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.
|
|
216
|
-
typeof message[this.
|
|
229
|
+
if (this.messageRetryLaterCountField in message &&
|
|
230
|
+
typeof message[this.messageRetryLaterCountField] === 'number') {
|
|
217
231
|
// @ts-ignore
|
|
218
|
-
return message[this.
|
|
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
|
-
//
|
|
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 (
|
|
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 =
|
|
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
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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 ??
|
|
14
|
+
this.messageLogFormatter = options?.messageLogFormatter ?? defaultLogFormatter;
|
|
19
15
|
this.preHandlerBarrier = options?.preHandlerBarrier;
|
|
20
16
|
this.preHandlers = options?.preHandlers ?? [];
|
|
21
17
|
}
|
|
22
18
|
}
|
|
23
|
-
|
|
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 =
|
|
25
|
+
const resolvedSchema = isCommonEventDefinition(schema)
|
|
31
26
|
? // @ts-ignore
|
|
32
27
|
schema.consumerSchema
|
|
33
28
|
: schema;
|
|
34
|
-
const definition =
|
|
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
|
-
|
|
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,
|
|
29
|
-
checkForMessage<T extends MessagePayloadSchemas>(expectedFields: DeepPartial<T>,
|
|
30
|
-
waitForMessage<T extends MessagePayloadSchemas>(expectedFields: DeepPartial<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
|
}
|