@message-queue-toolkit/core 13.3.2 → 13.5.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/lib/events/DomainEventEmitter.d.ts +4 -1
- package/dist/lib/events/DomainEventEmitter.js +9 -1
- package/dist/lib/events/DomainEventEmitter.js.map +1 -1
- package/dist/lib/queues/AbstractQueueService.d.ts +25 -3
- package/dist/lib/queues/AbstractQueueService.js +76 -10
- package/dist/lib/queues/AbstractQueueService.js.map +1 -1
- package/dist/lib/queues/HandlerContainer.d.ts +5 -3
- package/dist/lib/queues/HandlerContainer.js +11 -3
- package/dist/lib/queues/HandlerContainer.js.map +1 -1
- package/dist/lib/queues/MessageSchemaContainer.d.ts +4 -0
- package/dist/lib/queues/MessageSchemaContainer.js +9 -0
- package/dist/lib/queues/MessageSchemaContainer.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { MetadataFiller } from '../messages/MetadataFiller';
|
|
1
2
|
import type { MessageMetadataType } from '../messages/baseMessageSchemas';
|
|
2
3
|
import type { EventRegistry } from './EventRegistry';
|
|
3
4
|
import type { AnyEventHandler, SingleEventHandler, CommonEventDefinition, EventTypeNames, CommonEventDefinitionPublisherSchemaType } from './eventTypes';
|
|
@@ -5,8 +6,10 @@ export declare class DomainEventEmitter<SupportedEvents extends CommonEventDefin
|
|
|
5
6
|
private readonly eventRegistry;
|
|
6
7
|
private readonly eventHandlerMap;
|
|
7
8
|
private readonly anyHandlers;
|
|
8
|
-
|
|
9
|
+
private readonly metadataFiller;
|
|
10
|
+
constructor({ eventRegistry, metadataFiller, }: {
|
|
9
11
|
eventRegistry: EventRegistry<SupportedEvents>;
|
|
12
|
+
metadataFiller: MetadataFiller;
|
|
10
13
|
});
|
|
11
14
|
emit<SupportedEvent extends SupportedEvents[number]>(supportedEvent: SupportedEvent, data: Omit<CommonEventDefinitionPublisherSchemaType<SupportedEvent>, 'type'>, metadata?: Partial<MessageMetadataType>): Promise<void>;
|
|
12
15
|
/**
|
|
@@ -6,10 +6,18 @@ class DomainEventEmitter {
|
|
|
6
6
|
eventRegistry;
|
|
7
7
|
eventHandlerMap = {};
|
|
8
8
|
anyHandlers = [];
|
|
9
|
-
|
|
9
|
+
metadataFiller;
|
|
10
|
+
constructor({ eventRegistry, metadataFiller, }) {
|
|
10
11
|
this.eventRegistry = eventRegistry;
|
|
12
|
+
this.metadataFiller = metadataFiller;
|
|
11
13
|
}
|
|
12
14
|
async emit(supportedEvent, data, metadata) {
|
|
15
|
+
if (!data.timestamp) {
|
|
16
|
+
data.timestamp = this.metadataFiller.produceTimestamp();
|
|
17
|
+
}
|
|
18
|
+
if (!data.id) {
|
|
19
|
+
data.id = this.metadataFiller.produceId();
|
|
20
|
+
}
|
|
13
21
|
const eventTypeName = supportedEvent.publisherSchema.shape.type.value;
|
|
14
22
|
if (!this.eventRegistry.isSupportedEvent(eventTypeName)) {
|
|
15
23
|
throw new node_core_1.InternalError({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DomainEventEmitter.js","sourceRoot":"","sources":["../../../lib/events/DomainEventEmitter.ts"],"names":[],"mappings":";;;AAAA,mDAAmD;
|
|
1
|
+
{"version":3,"file":"DomainEventEmitter.js","sourceRoot":"","sources":["../../../lib/events/DomainEventEmitter.ts"],"names":[],"mappings":";;;AAAA,mDAAmD;AAgBnD,MAAa,kBAAkB;IACZ,aAAa,CAAgC;IAE7C,eAAe,GAG5B,EAAE,CAAA;IACW,WAAW,GAAuC,EAAE,CAAA;IACpD,cAAc,CAAgB;IAE/C,YAAY,EACV,aAAa,EACb,cAAc,GAIf;QACC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAClC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;IACtC,CAAC;IAEM,KAAK,CAAC,IAAI,CACf,cAA8B,EAC9B,IAA4E,EAC5E,QAAuC;QAEvC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAA;QACzD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAA;QAC3C,CAAC;QAED,MAAM,aAAa,GAAG,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAA;QAErE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,yBAAa,CAAC;gBACtB,SAAS,EAAE,eAAe;gBAC1B,OAAO,EAAE,iBAAiB,aAAa,EAAE;aAC1C,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAA;QAEzD,8DAA8D;QAC9D,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpD,OAAM;QACR,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa;aACtC,4BAA4B,CAAC,aAAa,CAAC;aAC3C,cAAc,CAAC,KAAK,CAAC;YACpB,IAAI,EAAE,aAAa;YACnB,GAAG,IAAI;SACR,CAAC,CAAA;QAEJ,IAAI,aAAa,EAAE,CAAC;YAClB,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;gBACpC,MAAM,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;YACrD,CAAC;QACH,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACvC,MAAM,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;QACrD,CAAC;IACH,CAAC;IAED;;OAEG;IACI,EAAE,CACP,aAA4B,EAC5B,OAA2D;QAE3D,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;IAC3C,CAAC;IAED;;OAEG;IACI,MAAM,CACX,cAA+B,EAC/B,OAA2D;QAE3D,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;YAC3C,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;QACjC,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAyC;QACpD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC;IAEO,YAAY,CAClB,aAAsD,EACtD,OAAqB;QAErB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,GAAG,EAAE,CAAA;QAC1C,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACnD,CAAC;CACF;AA1GD,gDA0GC"}
|
|
@@ -3,18 +3,28 @@ import type { ZodSchema, ZodType } from 'zod';
|
|
|
3
3
|
import type { MessageInvalidFormatError, MessageValidationError } from '../errors/Errors';
|
|
4
4
|
import type { Logger, MessageProcessingResult } from '../types/MessageQueueTypes';
|
|
5
5
|
import type { DeletionConfig, QueueDependencies, QueueOptions } from '../types/queueOptionsTypes';
|
|
6
|
-
import type { BarrierCallback, BarrierResult, Prehandler, PrehandlerResult, PreHandlingOutputs } from './HandlerContainer';
|
|
6
|
+
import type { BarrierCallback, BarrierResult, MessageHandlerConfig, Prehandler, PrehandlerResult, PreHandlingOutputs } from './HandlerContainer';
|
|
7
7
|
import type { HandlerSpy, PublicHandlerSpy } from './HandlerSpy';
|
|
8
|
+
import { MessageSchemaContainer } from './MessageSchemaContainer';
|
|
8
9
|
export type Deserializer<MessagePayloadType extends object> = (message: unknown, type: ZodType<MessagePayloadType>, errorProcessor: ErrorResolver) => Either<MessageInvalidFormatError | MessageValidationError, MessagePayloadType>;
|
|
9
10
|
type CommonQueueLocator = {
|
|
10
11
|
queueName: string;
|
|
11
12
|
};
|
|
12
13
|
export declare abstract class AbstractQueueService<MessagePayloadSchemas extends object, MessageEnvelopeType extends object, DependenciesType extends QueueDependencies, QueueConfiguration extends object, QueueLocatorType extends object = CommonQueueLocator, OptionsType extends QueueOptions<QueueConfiguration, QueueLocatorType> = QueueOptions<QueueConfiguration, QueueLocatorType>, ExecutionContext = undefined, PrehandlerOutput = undefined> {
|
|
14
|
+
/**
|
|
15
|
+
* Used to keep track of the number of `retryLater` results received for a message to be able to
|
|
16
|
+
* calculate the delay for the next retry
|
|
17
|
+
*/
|
|
18
|
+
private readonly messageNumberOfRetriesField;
|
|
19
|
+
/**
|
|
20
|
+
* Used to know when the message was sent initially so we can have a max retry date and avoid
|
|
21
|
+
* a infinite `retryLater` loop
|
|
22
|
+
*/
|
|
23
|
+
protected readonly messageTimestampField: string;
|
|
13
24
|
protected readonly errorReporter: ErrorReporter;
|
|
14
25
|
readonly logger: Logger;
|
|
15
26
|
protected readonly messageIdField: string;
|
|
16
27
|
protected readonly messageTypeField: string;
|
|
17
|
-
protected readonly messageTimestampField: string;
|
|
18
28
|
protected readonly logMessages: boolean;
|
|
19
29
|
protected readonly creationConfig?: QueueConfiguration;
|
|
20
30
|
protected readonly locatorConfig?: QueueLocatorType;
|
|
@@ -23,6 +33,14 @@ export declare abstract class AbstractQueueService<MessagePayloadSchemas extends
|
|
|
23
33
|
protected isInitted: boolean;
|
|
24
34
|
get handlerSpy(): PublicHandlerSpy<MessagePayloadSchemas>;
|
|
25
35
|
constructor({ errorReporter, logger }: DependenciesType, options: OptionsType);
|
|
36
|
+
protected resolveConsumerMessageSchemaContainer(options: {
|
|
37
|
+
handlers: MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>[];
|
|
38
|
+
messageTypeField: string;
|
|
39
|
+
}): MessageSchemaContainer<MessagePayloadSchemas>;
|
|
40
|
+
protected resolvePublisherMessageSchemaContainer(options: {
|
|
41
|
+
messageSchemas: readonly ZodSchema<MessagePayloadSchemas>[];
|
|
42
|
+
messageTypeField: string;
|
|
43
|
+
}): MessageSchemaContainer<MessagePayloadSchemas>;
|
|
26
44
|
protected abstract resolveSchema(message: MessagePayloadSchemas): Either<Error, ZodSchema<MessagePayloadSchemas>>;
|
|
27
45
|
protected abstract resolveMessage(message: MessageEnvelopeType): Either<MessageInvalidFormatError | MessageValidationError, unknown>;
|
|
28
46
|
/**
|
|
@@ -38,7 +56,11 @@ export declare abstract class AbstractQueueService<MessagePayloadSchemas extends
|
|
|
38
56
|
protected handleMessageProcessed(message: MessagePayloadSchemas | null, processingResult: MessageProcessingResult, messageId?: string): void;
|
|
39
57
|
protected processPrehandlersInternal(preHandlers: Prehandler<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>[], message: MessagePayloadSchemas): Promise<PrehandlerOutput>;
|
|
40
58
|
protected preHandlerBarrierInternal<BarrierOutput>(barrier: BarrierCallback<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput, BarrierOutput> | undefined, message: MessagePayloadSchemas, executionContext: ExecutionContext, preHandlerOutput: PrehandlerOutput): Promise<BarrierResult<BarrierOutput>>;
|
|
41
|
-
|
|
59
|
+
shouldBeRetried(message: MessagePayloadSchemas, maxRetryDuration: number): boolean;
|
|
60
|
+
protected getMessageRetryDelayInSeconds(message: MessagePayloadSchemas): number;
|
|
61
|
+
protected updateInternalProperties(message: MessagePayloadSchemas): MessagePayloadSchemas;
|
|
62
|
+
private tryToExtractTimestamp;
|
|
63
|
+
private tryToExtractNumberOfRetries;
|
|
42
64
|
protected abstract resolveNextFunction(preHandlers: Prehandler<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>[], message: MessagePayloadSchemas, index: number, preHandlerOutput: PrehandlerOutput, resolve: (value: PrehandlerOutput | PromiseLike<PrehandlerOutput>) => void, reject: (err: Error) => void): (preHandlerResult: PrehandlerResult) => void;
|
|
43
65
|
protected resolveNextPreHandlerFunctionInternal(preHandlers: Prehandler<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>[], executionContext: ExecutionContext, message: MessagePayloadSchemas, index: number, preHandlerOutput: PrehandlerOutput, resolve: (value: PrehandlerOutput | PromiseLike<PrehandlerOutput>) => void, reject: (err: Error) => void): (preHandlerResult: PrehandlerResult) => void;
|
|
44
66
|
protected abstract processPrehandlers(message: MessagePayloadSchemas, messageType: string): Promise<PrehandlerOutput>;
|
|
@@ -3,14 +3,25 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.AbstractQueueService = void 0;
|
|
4
4
|
const node_util_1 = require("node:util");
|
|
5
5
|
const node_core_1 = require("@lokalise/node-core");
|
|
6
|
+
const dateUtils_1 = require("../utils/dateUtils");
|
|
6
7
|
const toDateProcessor_1 = require("../utils/toDateProcessor");
|
|
7
8
|
const HandlerSpy_1 = require("./HandlerSpy");
|
|
9
|
+
const MessageSchemaContainer_1 = require("./MessageSchemaContainer");
|
|
8
10
|
class AbstractQueueService {
|
|
11
|
+
/**
|
|
12
|
+
* Used to keep track of the number of `retryLater` results received for a message to be able to
|
|
13
|
+
* calculate the delay for the next retry
|
|
14
|
+
*/
|
|
15
|
+
messageNumberOfRetriesField = '_internalNumberOfRetries';
|
|
16
|
+
/**
|
|
17
|
+
* Used to know when the message was sent initially so we can have a max retry date and avoid
|
|
18
|
+
* a infinite `retryLater` loop
|
|
19
|
+
*/
|
|
20
|
+
messageTimestampField;
|
|
9
21
|
errorReporter;
|
|
10
22
|
logger;
|
|
11
23
|
messageIdField;
|
|
12
24
|
messageTypeField;
|
|
13
|
-
messageTimestampField;
|
|
14
25
|
logMessages;
|
|
15
26
|
creationConfig;
|
|
16
27
|
locatorConfig;
|
|
@@ -36,6 +47,27 @@ class AbstractQueueService {
|
|
|
36
47
|
this._handlerSpy = (0, HandlerSpy_1.resolveHandlerSpy)(options);
|
|
37
48
|
this.isInitted = false;
|
|
38
49
|
}
|
|
50
|
+
resolveConsumerMessageSchemaContainer(options) {
|
|
51
|
+
const messageSchemas = options.handlers.map((entry) => entry.schema);
|
|
52
|
+
// @ts-expect-error This should no longer be necessary in upcoming TypeScript updates, filter will narrow down the type
|
|
53
|
+
const messageDefinitions = options.handlers
|
|
54
|
+
.map((entry) => entry.definition)
|
|
55
|
+
.filter((entry) => entry !== undefined);
|
|
56
|
+
return new MessageSchemaContainer_1.MessageSchemaContainer({
|
|
57
|
+
messageSchemas,
|
|
58
|
+
messageDefinitions,
|
|
59
|
+
messageTypeField: options.messageTypeField,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
resolvePublisherMessageSchemaContainer(options) {
|
|
63
|
+
const messageSchemas = options.messageSchemas;
|
|
64
|
+
const messageDefinitions = [];
|
|
65
|
+
return new MessageSchemaContainer_1.MessageSchemaContainer({
|
|
66
|
+
messageSchemas,
|
|
67
|
+
messageDefinitions,
|
|
68
|
+
messageTypeField: options.messageTypeField,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
39
71
|
/**
|
|
40
72
|
* Format message for logging
|
|
41
73
|
*/
|
|
@@ -56,15 +88,10 @@ class AbstractQueueService {
|
|
|
56
88
|
}
|
|
57
89
|
handleError(err, context) {
|
|
58
90
|
const logObject = (0, node_core_1.resolveGlobalErrorLogObject)(err);
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
this.logger.error({
|
|
64
|
-
...logObject,
|
|
65
|
-
...context,
|
|
66
|
-
});
|
|
67
|
-
}
|
|
91
|
+
this.logger.error({
|
|
92
|
+
...logObject,
|
|
93
|
+
...context,
|
|
94
|
+
});
|
|
68
95
|
if (node_util_1.types.isNativeError(err)) {
|
|
69
96
|
this.errorReporter.report({ error: err, context });
|
|
70
97
|
}
|
|
@@ -108,6 +135,37 @@ class AbstractQueueService {
|
|
|
108
135
|
// @ts-ignore
|
|
109
136
|
return await barrier(message, executionContext, preHandlerOutput);
|
|
110
137
|
}
|
|
138
|
+
shouldBeRetried(message, maxRetryDuration) {
|
|
139
|
+
const timestamp = this.tryToExtractTimestamp(message) ?? new Date();
|
|
140
|
+
return !(0, dateUtils_1.isRetryDateExceeded)(timestamp, maxRetryDuration);
|
|
141
|
+
}
|
|
142
|
+
getMessageRetryDelayInSeconds(message) {
|
|
143
|
+
// if not defined, this is the first attempt
|
|
144
|
+
const retries = this.tryToExtractNumberOfRetries(message) ?? 0;
|
|
145
|
+
// exponential backoff -> (2 ^ (attempts)) * delay
|
|
146
|
+
// delay = 1 second
|
|
147
|
+
return Math.pow(2, retries);
|
|
148
|
+
}
|
|
149
|
+
updateInternalProperties(message) {
|
|
150
|
+
const messageCopy = { ...message }; // clone the message to avoid mutation
|
|
151
|
+
/**
|
|
152
|
+
* If the message doesn't have a timestamp field -> add it
|
|
153
|
+
* will be used to prevent infinite retries on the same message
|
|
154
|
+
*/
|
|
155
|
+
if (!this.tryToExtractTimestamp(message)) {
|
|
156
|
+
// @ts-ignore
|
|
157
|
+
messageCopy[this.messageTimestampField] = new Date().toISOString();
|
|
158
|
+
this.logger.warn(`${this.messageTimestampField} not defined, adding it automatically`);
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* add/increment the number of retries performed to exponential message delay
|
|
162
|
+
*/
|
|
163
|
+
const numberOfRetries = this.tryToExtractNumberOfRetries(message);
|
|
164
|
+
// @ts-ignore
|
|
165
|
+
messageCopy[this.messageNumberOfRetriesField] =
|
|
166
|
+
numberOfRetries !== undefined ? numberOfRetries + 1 : 0;
|
|
167
|
+
return messageCopy;
|
|
168
|
+
}
|
|
111
169
|
tryToExtractTimestamp(message) {
|
|
112
170
|
// @ts-ignore
|
|
113
171
|
if (this.messageTimestampField in message) {
|
|
@@ -120,6 +178,14 @@ class AbstractQueueService {
|
|
|
120
178
|
}
|
|
121
179
|
return undefined;
|
|
122
180
|
}
|
|
181
|
+
tryToExtractNumberOfRetries(message) {
|
|
182
|
+
if (this.messageNumberOfRetriesField in message &&
|
|
183
|
+
typeof message[this.messageNumberOfRetriesField] === 'number') {
|
|
184
|
+
// @ts-ignore
|
|
185
|
+
return message[this.messageNumberOfRetriesField];
|
|
186
|
+
}
|
|
187
|
+
return undefined;
|
|
188
|
+
}
|
|
123
189
|
// eslint-disable-next-line max-params
|
|
124
190
|
resolveNextPreHandlerFunctionInternal(preHandlers, executionContext, message, index, preHandlerOutput, resolve, reject) {
|
|
125
191
|
return (preHandlerResult) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractQueueService.js","sourceRoot":"","sources":["../../../lib/queues/AbstractQueueService.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAGjC,mDAAiE;
|
|
1
|
+
{"version":3,"file":"AbstractQueueService.js","sourceRoot":"","sources":["../../../lib/queues/AbstractQueueService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Either } from '@lokalise/node-core';
|
|
2
|
+
import type { CommonEventDefinition } from '@message-queue-toolkit/schemas';
|
|
2
3
|
import type { ZodSchema } from 'zod';
|
|
3
4
|
import type { DoNotProcessMessageError } from '../errors/DoNotProcessError';
|
|
4
5
|
import type { RetryMessageLaterError } from '../errors/RetryMessageLaterError';
|
|
@@ -27,19 +28,20 @@ export type HandlerConfigOptions<MessagePayloadSchema extends object, ExecutionC
|
|
|
27
28
|
};
|
|
28
29
|
export declare class MessageHandlerConfig<const MessagePayloadSchema extends object, const ExecutionContext, const PrehandlerOutput = undefined, const BarrierOutput = unknown> {
|
|
29
30
|
readonly schema: ZodSchema<MessagePayloadSchema>;
|
|
31
|
+
readonly definition?: CommonEventDefinition;
|
|
30
32
|
readonly handler: Handler<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput>;
|
|
31
33
|
readonly messageLogFormatter: LogFormatter<MessagePayloadSchema>;
|
|
32
34
|
readonly preHandlerBarrier?: BarrierCallback<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput>;
|
|
33
35
|
readonly preHandlers: Prehandler<MessagePayloadSchema, ExecutionContext, PrehandlerOutput>[];
|
|
34
|
-
constructor(schema: ZodSchema<MessagePayloadSchema>, handler: Handler<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput>, options?: HandlerConfigOptions<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput
|
|
36
|
+
constructor(schema: ZodSchema<MessagePayloadSchema>, handler: Handler<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput>, options?: HandlerConfigOptions<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput>, eventDefinition?: CommonEventDefinition);
|
|
35
37
|
}
|
|
36
38
|
export declare class MessageHandlerConfigBuilder<MessagePayloadSchemas extends object, ExecutionContext, PrehandlerOutput = undefined> {
|
|
37
39
|
private readonly configs;
|
|
38
40
|
constructor();
|
|
39
|
-
addConfig<MessagePayloadSchema extends MessagePayloadSchemas, const BarrierOutput>(schema: ZodSchema<MessagePayloadSchema
|
|
41
|
+
addConfig<MessagePayloadSchema extends MessagePayloadSchemas, const BarrierOutput>(schema: ZodSchema<MessagePayloadSchema> | CommonEventDefinition, handler: Handler<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput>, options?: HandlerConfigOptions<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput>): this;
|
|
40
42
|
build(): MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput, any>[];
|
|
41
43
|
}
|
|
42
|
-
export type Handler<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput = undefined, BarrierOutput = undefined> = (message: MessagePayloadSchemas, context: ExecutionContext, preHandlingOutputs: PreHandlingOutputs<PrehandlerOutput, BarrierOutput
|
|
44
|
+
export type Handler<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput = undefined, BarrierOutput = undefined> = (message: MessagePayloadSchemas, context: ExecutionContext, preHandlingOutputs: PreHandlingOutputs<PrehandlerOutput, BarrierOutput>, definition?: CommonEventDefinition) => Promise<Either<'retryLater', 'success'>>;
|
|
43
45
|
export type HandlerContainerOptions<MessagePayloadSchemas extends object, ExecutionContext, PrehandlerOutput = undefined> = {
|
|
44
46
|
messageHandlers: MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>[];
|
|
45
47
|
messageTypeField: string;
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.HandlerContainer = exports.MessageHandlerConfigBuilder = exports.MessageHandlerConfig = exports.defaultLogFormatter = void 0;
|
|
4
|
+
const schemas_1 = require("@message-queue-toolkit/schemas");
|
|
4
5
|
const defaultLogFormatter = (message) => message;
|
|
5
6
|
exports.defaultLogFormatter = defaultLogFormatter;
|
|
6
7
|
class MessageHandlerConfig {
|
|
7
8
|
schema;
|
|
9
|
+
definition;
|
|
8
10
|
handler;
|
|
9
11
|
messageLogFormatter;
|
|
10
12
|
preHandlerBarrier;
|
|
11
13
|
preHandlers;
|
|
12
|
-
constructor(schema, handler, options) {
|
|
14
|
+
constructor(schema, handler, options, eventDefinition) {
|
|
13
15
|
this.schema = schema;
|
|
16
|
+
this.definition = eventDefinition;
|
|
14
17
|
this.handler = handler;
|
|
15
18
|
this.messageLogFormatter = options?.messageLogFormatter ?? exports.defaultLogFormatter;
|
|
16
19
|
this.preHandlerBarrier = options?.preHandlerBarrier;
|
|
@@ -24,11 +27,16 @@ class MessageHandlerConfigBuilder {
|
|
|
24
27
|
this.configs = [];
|
|
25
28
|
}
|
|
26
29
|
addConfig(schema, handler, options) {
|
|
30
|
+
const resolvedSchema = (0, schemas_1.isCommonEventDefinition)(schema)
|
|
31
|
+
? // @ts-ignore
|
|
32
|
+
schema.consumerSchema
|
|
33
|
+
: schema;
|
|
34
|
+
const definition = (0, schemas_1.isCommonEventDefinition)(schema) ? schema : undefined;
|
|
27
35
|
this.configs.push(
|
|
28
36
|
// @ts-ignore
|
|
29
|
-
new MessageHandlerConfig(
|
|
37
|
+
new MessageHandlerConfig(resolvedSchema,
|
|
30
38
|
// @ts-ignore
|
|
31
|
-
handler, options));
|
|
39
|
+
handler, options, definition));
|
|
32
40
|
return this;
|
|
33
41
|
}
|
|
34
42
|
build() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HandlerContainer.js","sourceRoot":"","sources":["../../../lib/queues/HandlerContainer.ts"],"names":[],"mappings":";;;AA+
|
|
1
|
+
{"version":3,"file":"HandlerContainer.js","sourceRoot":"","sources":["../../../lib/queues/HandlerContainer.ts"],"names":[],"mappings":";;;AAEA,4DAAwE;AA+CjE,MAAM,mBAAmB,GAAG,CAAuB,OAA6B,EAAE,EAAE,CAAC,OAAO,CAAA;AAAtF,QAAA,mBAAmB,uBAAmE;AAkBnG,MAAa,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,2BAAmB,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;AA7CD,oDA6CC;AAED,MAAa,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,IAAA,iCAAuB,EAAC,MAAM,CAAC;YACrF,CAAC,CAAC,aAAa;gBACZ,MAAM,CAAC,cAAkD;YAC5D,CAAC,CAAC,MAAM,CAAA;QACV,MAAM,UAAU,GAAG,IAAA,iCAAuB,EAAC,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;AAtDD,kEAsDC;AAuBD,MAAa,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,+DAA+D;QAC/D,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;AA3DD,4CA2DC"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import type { Either } from '@lokalise/node-core';
|
|
2
|
+
import type { CommonEventDefinition } from '@message-queue-toolkit/schemas';
|
|
2
3
|
import type { ZodSchema } from 'zod';
|
|
3
4
|
export type MessageSchemaContainerOptions<MessagePayloadSchemas extends object> = {
|
|
5
|
+
messageDefinitions: readonly CommonEventDefinition[];
|
|
4
6
|
messageSchemas: readonly ZodSchema<MessagePayloadSchemas>[];
|
|
5
7
|
messageTypeField: string;
|
|
6
8
|
};
|
|
7
9
|
export declare class MessageSchemaContainer<MessagePayloadSchemas extends object> {
|
|
10
|
+
readonly messageDefinitions: Record<string, CommonEventDefinition>;
|
|
8
11
|
private readonly messageSchemas;
|
|
9
12
|
private readonly messageTypeField;
|
|
10
13
|
constructor(options: MessageSchemaContainerOptions<MessagePayloadSchemas>);
|
|
11
14
|
resolveSchema(message: Record<string, any>): Either<Error, ZodSchema<MessagePayloadSchemas>>;
|
|
12
15
|
private resolveSchemaMap;
|
|
16
|
+
private resolveDefinitionsMap;
|
|
13
17
|
}
|
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MessageSchemaContainer = void 0;
|
|
4
4
|
class MessageSchemaContainer {
|
|
5
|
+
messageDefinitions;
|
|
5
6
|
messageSchemas;
|
|
6
7
|
messageTypeField;
|
|
7
8
|
constructor(options) {
|
|
8
9
|
this.messageTypeField = options.messageTypeField;
|
|
9
10
|
this.messageSchemas = this.resolveSchemaMap(options.messageSchemas);
|
|
11
|
+
this.messageDefinitions = this.resolveDefinitionsMap(options.messageDefinitions ?? []);
|
|
10
12
|
}
|
|
11
13
|
resolveSchema(
|
|
12
14
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -28,6 +30,13 @@ class MessageSchemaContainer {
|
|
|
28
30
|
return acc;
|
|
29
31
|
}, {});
|
|
30
32
|
}
|
|
33
|
+
resolveDefinitionsMap(supportedDefinitions) {
|
|
34
|
+
return supportedDefinitions.reduce((acc, definition) => {
|
|
35
|
+
// @ts-ignore
|
|
36
|
+
acc[definition.publisherSchema.shape[this.messageTypeField].value] = definition;
|
|
37
|
+
return acc;
|
|
38
|
+
}, {});
|
|
39
|
+
}
|
|
31
40
|
}
|
|
32
41
|
exports.MessageSchemaContainer = MessageSchemaContainer;
|
|
33
42
|
//# sourceMappingURL=MessageSchemaContainer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageSchemaContainer.js","sourceRoot":"","sources":["../../../lib/queues/MessageSchemaContainer.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"MessageSchemaContainer.js","sourceRoot":"","sources":["../../../lib/queues/MessageSchemaContainer.ts"],"names":[],"mappings":";;;AAUA,MAAa,sBAAsB;IACjB,kBAAkB,CAAuC;IACxD,cAAc,CAAkD;IAChE,gBAAgB,CAAQ;IAEzC,YAAY,OAA6D;QACvE,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAA;QAChD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QACnE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAA;IACxF,CAAC;IAEM,aAAa;IAClB,8DAA8D;IAC9D,OAA4B;QAE5B,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAA;QAClE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,KAAK,EAAE,IAAI,KAAK,CAAC,6BAA6B,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;aAChF,CAAA;QACH,CAAC;QACD,OAAO;YACL,MAAM,EAAE,MAAM;SACf,CAAA;IACH,CAAC;IAEO,gBAAgB,CACtB,gBAA6D;QAE7D,OAAO,gBAAgB,CAAC,MAAM,CAC5B,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YACd,aAAa;YACb,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,CAAA;YACvD,OAAO,GAAG,CAAA;QACZ,CAAC,EACD,EAAsD,CACvD,CAAA;IACH,CAAC;IAEO,qBAAqB,CAC3B,oBAAsD;QAEtD,OAAO,oBAAoB,CAAC,MAAM,CAChC,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE;YAClB,aAAa;YACb,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,GAAG,UAAU,CAAA;YAC/E,OAAO,GAAG,CAAA;QACZ,CAAC,EACD,EAA2C,CAC5C,CAAA;IACH,CAAC;CACF;AAnDD,wDAmDC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@message-queue-toolkit/core",
|
|
3
|
-
"version": "13.
|
|
3
|
+
"version": "13.5.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Useful utilities, interfaces and base classes for message queue handling. Supports AMQP and SQS with a common abstraction on top currently",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"prepublishOnly": "npm run build:release"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@lokalise/node-core": "^9.
|
|
28
|
+
"@lokalise/node-core": "^9.21.0",
|
|
29
29
|
"@message-queue-toolkit/schemas": "^1.0.0",
|
|
30
30
|
"fast-equals": "^5.0.1",
|
|
31
31
|
"toad-cache": "^3.7.0",
|