@message-queue-toolkit/core 8.0.0 → 9.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/index.d.ts CHANGED
@@ -3,8 +3,10 @@ export { AbstractQueueService } from './lib/queues/AbstractQueueService';
3
3
  export type { NewQueueOptions, ExistingQueueOptions, NewQueueOptionsMultiSchema, ExistingQueueOptionsMultiSchema, MonoSchemaQueueOptions, MultiSchemaConsumerOptions, QueueDependencies, QueueConsumerDependencies, Deserializer, CommonQueueLocator, DeletionConfig, MultiSchemaPublisherOptions, } from './lib/queues/AbstractQueueService';
4
4
  export { isMessageError, MessageValidationError, MessageInvalidFormatError, } from './lib/errors/Errors';
5
5
  export { isShallowSubset, objectMatches } from './lib/utils/matchUtils';
6
- export { HandlerContainer, MessageHandlerConfig, MessageHandlerConfigBuilder, BarrierCallbackMultiConsumers, BarrierResult, BarrierResultPositive, BarrierResultNegative, } from './lib/queues/HandlerContainer';
7
- export type { HandlerContainerOptions, Handler } from './lib/queues/HandlerContainer';
6
+ export { RetryMessageLaterError } from './lib/errors/RetryMessageLaterError';
7
+ export { DoNotProcessMessageError } from './lib/errors/DoNotProcessError';
8
+ export { HandlerContainer, MessageHandlerConfig, MessageHandlerConfigBuilder, } from './lib/queues/HandlerContainer';
9
+ export type { BarrierCallbackMultiConsumers, BarrierResult, BarrierResultPositive, BarrierResultNegative, HandlerContainerOptions, Handler, Prehandler, PrehandlingOutputs, } from './lib/queues/HandlerContainer';
8
10
  export { HandlerSpy } from './lib/queues/HandlerSpy';
9
11
  export type { SpyResult, HandlerSpyParams, PublicHandlerSpy } from './lib/queues/HandlerSpy';
10
12
  export { MessageSchemaContainer } from './lib/queues/MessageSchemaContainer';
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isProduction = exports.reloadConfig = exports.parseMessage = exports.waitAndRetry = exports.objectToBuffer = exports.MessageSchemaContainer = exports.HandlerSpy = exports.MessageHandlerConfigBuilder = exports.MessageHandlerConfig = exports.HandlerContainer = exports.objectMatches = exports.isShallowSubset = exports.MessageInvalidFormatError = exports.MessageValidationError = exports.isMessageError = exports.AbstractQueueService = void 0;
3
+ exports.isProduction = exports.reloadConfig = exports.parseMessage = exports.waitAndRetry = exports.objectToBuffer = exports.MessageSchemaContainer = exports.HandlerSpy = exports.MessageHandlerConfigBuilder = exports.MessageHandlerConfig = exports.HandlerContainer = exports.DoNotProcessMessageError = exports.RetryMessageLaterError = exports.objectMatches = exports.isShallowSubset = exports.MessageInvalidFormatError = exports.MessageValidationError = exports.isMessageError = exports.AbstractQueueService = void 0;
4
4
  var AbstractQueueService_1 = require("./lib/queues/AbstractQueueService");
5
5
  Object.defineProperty(exports, "AbstractQueueService", { enumerable: true, get: function () { return AbstractQueueService_1.AbstractQueueService; } });
6
6
  var Errors_1 = require("./lib/errors/Errors");
@@ -10,6 +10,10 @@ Object.defineProperty(exports, "MessageInvalidFormatError", { enumerable: true,
10
10
  var matchUtils_1 = require("./lib/utils/matchUtils");
11
11
  Object.defineProperty(exports, "isShallowSubset", { enumerable: true, get: function () { return matchUtils_1.isShallowSubset; } });
12
12
  Object.defineProperty(exports, "objectMatches", { enumerable: true, get: function () { return matchUtils_1.objectMatches; } });
13
+ var RetryMessageLaterError_1 = require("./lib/errors/RetryMessageLaterError");
14
+ Object.defineProperty(exports, "RetryMessageLaterError", { enumerable: true, get: function () { return RetryMessageLaterError_1.RetryMessageLaterError; } });
15
+ var DoNotProcessError_1 = require("./lib/errors/DoNotProcessError");
16
+ Object.defineProperty(exports, "DoNotProcessMessageError", { enumerable: true, get: function () { return DoNotProcessError_1.DoNotProcessMessageError; } });
13
17
  var HandlerContainer_1 = require("./lib/queues/HandlerContainer");
14
18
  Object.defineProperty(exports, "HandlerContainer", { enumerable: true, get: function () { return HandlerContainer_1.HandlerContainer; } });
15
19
  Object.defineProperty(exports, "MessageHandlerConfig", { enumerable: true, get: function () { return HandlerContainer_1.MessageHandlerConfig; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAWA,0EAAwE;AAA/D,4HAAA,oBAAoB,OAAA;AAgB7B,8CAI4B;AAH1B,wGAAA,cAAc,OAAA;AACd,gHAAA,sBAAsB,OAAA;AACtB,mHAAA,yBAAyB,OAAA;AAG3B,qDAAuE;AAA9D,6GAAA,eAAe,OAAA;AAAE,2GAAA,aAAa,OAAA;AAEvC,kEAQsC;AAPpC,oHAAA,gBAAgB,OAAA;AAChB,wHAAA,oBAAoB,OAAA;AACpB,+HAAA,2BAA2B,OAAA;AAO7B,sDAAoD;AAA3C,wGAAA,UAAU,OAAA;AAGnB,8EAA4E;AAAnE,gIAAA,sBAAsB,OAAA;AAG/B,qDAAuD;AAA9C,4GAAA,cAAc,OAAA;AACvB,mDAAoD;AAA3C,yGAAA,YAAY,OAAA;AACrB,qDAAqD;AAA5C,0GAAA,YAAY,OAAA;AAErB,iDAAiE;AAAxD,wGAAA,YAAY,OAAA;AAAE,wGAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAWA,0EAAwE;AAA/D,4HAAA,oBAAoB,OAAA;AAgB7B,8CAI4B;AAH1B,wGAAA,cAAc,OAAA;AACd,gHAAA,sBAAsB,OAAA;AACtB,mHAAA,yBAAyB,OAAA;AAG3B,qDAAuE;AAA9D,6GAAA,eAAe,OAAA;AAAE,2GAAA,aAAa,OAAA;AAEvC,8EAA4E;AAAnE,gIAAA,sBAAsB,OAAA;AAE/B,oEAAyE;AAAhE,6HAAA,wBAAwB,OAAA;AAEjC,kEAIsC;AAHpC,oHAAA,gBAAgB,OAAA;AAChB,wHAAA,oBAAoB,OAAA;AACpB,+HAAA,2BAA2B,OAAA;AAY7B,sDAAoD;AAA3C,wGAAA,UAAU,OAAA;AAGnB,8EAA4E;AAAnE,gIAAA,sBAAsB,OAAA;AAG/B,qDAAuD;AAA9C,4GAAA,cAAc,OAAA;AACvB,mDAAoD;AAA3C,yGAAA,YAAY,OAAA;AACrB,qDAAqD;AAA5C,0GAAA,YAAY,OAAA;AAErB,iDAAiE;AAAxD,wGAAA,YAAY,OAAA;AAAE,wGAAA,YAAY,OAAA"}
@@ -0,0 +1,4 @@
1
+ import { InternalError } from '@lokalise/node-core';
2
+ export declare class DoNotProcessMessageError extends InternalError {
3
+ constructor(message: string, errorCode: string, details?: Record<string, unknown>);
4
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DoNotProcessMessageError = void 0;
4
+ const node_core_1 = require("@lokalise/node-core");
5
+ class DoNotProcessMessageError extends node_core_1.InternalError {
6
+ constructor(message, errorCode, details) {
7
+ super({
8
+ message,
9
+ errorCode,
10
+ details,
11
+ });
12
+ }
13
+ }
14
+ exports.DoNotProcessMessageError = DoNotProcessMessageError;
15
+ //# sourceMappingURL=DoNotProcessError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DoNotProcessError.js","sourceRoot":"","sources":["../../../lib/errors/DoNotProcessError.ts"],"names":[],"mappings":";;;AAAA,mDAAmD;AAEnD,MAAa,wBAAyB,SAAQ,yBAAa;IACzD,YAAY,OAAe,EAAE,SAAiB,EAAE,OAAiC;QAC/E,KAAK,CAAC;YACJ,OAAO;YACP,SAAS;YACT,OAAO;SACR,CAAC,CAAA;IACJ,CAAC;CACF;AARD,4DAQC"}
@@ -0,0 +1,4 @@
1
+ import { InternalError } from '@lokalise/node-core';
2
+ export declare class RetryMessageLaterError extends InternalError {
3
+ constructor(message: string, errorCode: string, details?: Record<string, unknown>);
4
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RetryMessageLaterError = void 0;
4
+ const node_core_1 = require("@lokalise/node-core");
5
+ class RetryMessageLaterError extends node_core_1.InternalError {
6
+ constructor(message, errorCode, details) {
7
+ super({
8
+ message,
9
+ errorCode,
10
+ details,
11
+ });
12
+ }
13
+ }
14
+ exports.RetryMessageLaterError = RetryMessageLaterError;
15
+ //# sourceMappingURL=RetryMessageLaterError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RetryMessageLaterError.js","sourceRoot":"","sources":["../../../lib/errors/RetryMessageLaterError.ts"],"names":[],"mappings":";;;AAAA,mDAAmD;AAEnD,MAAa,sBAAuB,SAAQ,yBAAa;IACvD,YAAY,OAAe,EAAE,SAAiB,EAAE,OAAiC;QAC/E,KAAK,CAAC;YACJ,OAAO;YACP,SAAS;YACT,OAAO;SACR,CAAC,CAAA;IACJ,CAAC;CACF;AARD,wDAQC"}
@@ -2,7 +2,7 @@ import type { ErrorReporter, ErrorResolver, Either } from '@lokalise/node-core';
2
2
  import type { ZodSchema, ZodType } from 'zod';
3
3
  import type { MessageInvalidFormatError, MessageValidationError } from '../errors/Errors';
4
4
  import type { Logger, TransactionObservabilityManager, MessageProcessingResult } from '../types/MessageQueueTypes';
5
- import type { MessageHandlerConfig } from './HandlerContainer';
5
+ import type { BarrierResult, MessageHandlerConfig, Prehandler, PrehandlerResult, PrehandlingOutputs } from './HandlerContainer';
6
6
  import type { HandlerSpy, PublicHandlerSpy, HandlerSpyParams } from './HandlerSpy';
7
7
  export type QueueDependencies = {
8
8
  errorReporter: ErrorReporter;
@@ -13,8 +13,8 @@ export type QueueConsumerDependencies = {
13
13
  transactionObservabilityManager: TransactionObservabilityManager;
14
14
  };
15
15
  export type Deserializer<MessagePayloadType extends object> = (message: unknown, type: ZodType<MessagePayloadType>, errorProcessor: ErrorResolver) => Either<MessageInvalidFormatError | MessageValidationError, MessagePayloadType>;
16
- export type NewQueueOptionsMultiSchema<MessagePayloadSchemas extends object, CreationConfigType extends object, ExecutionContext> = NewQueueOptions<CreationConfigType> & MultiSchemaConsumerOptions<MessagePayloadSchemas, ExecutionContext>;
17
- export type ExistingQueueOptionsMultiSchema<MessagePayloadSchemas extends object, QueueLocatorType extends object, ExecutionContext> = ExistingQueueOptions<QueueLocatorType> & MultiSchemaConsumerOptions<MessagePayloadSchemas, ExecutionContext>;
16
+ export type NewQueueOptionsMultiSchema<MessagePayloadSchemas extends object, CreationConfigType extends object, ExecutionContext, PrehandlerOutput> = NewQueueOptions<CreationConfigType> & MultiSchemaConsumerOptions<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>;
17
+ export type ExistingQueueOptionsMultiSchema<MessagePayloadSchemas extends object, QueueLocatorType extends object, ExecutionContext, PrehandlerOutput> = ExistingQueueOptions<QueueLocatorType> & MultiSchemaConsumerOptions<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>;
18
18
  export type DeletionConfig = {
19
19
  deleteIfExists?: boolean;
20
20
  waitForConfirmation?: boolean;
@@ -42,8 +42,8 @@ export type ExistingQueueOptions<QueueLocatorType extends object> = {
42
42
  export type MultiSchemaPublisherOptions<MessagePayloadSchemas extends object> = {
43
43
  messageSchemas: readonly ZodSchema<MessagePayloadSchemas>[];
44
44
  };
45
- export type MultiSchemaConsumerOptions<MessagePayloadSchemas extends object, ExecutionContext> = {
46
- handlers: MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext>[];
45
+ export type MultiSchemaConsumerOptions<MessagePayloadSchemas extends object, ExecutionContext, PrehandlerOutput> = {
46
+ handlers: MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>[];
47
47
  };
48
48
  export type MonoSchemaQueueOptions<MessagePayloadType extends object> = {
49
49
  messageSchema: ZodSchema<MessagePayloadType>;
@@ -51,7 +51,7 @@ export type MonoSchemaQueueOptions<MessagePayloadType extends object> = {
51
51
  export type CommonQueueLocator = {
52
52
  queueName: string;
53
53
  };
54
- export declare abstract class AbstractQueueService<MessagePayloadSchemas extends object, MessageEnvelopeType extends object, DependenciesType extends QueueDependencies, QueueConfiguration extends object, QueueLocatorType extends object = CommonQueueLocator, OptionsType extends NewQueueOptions<QueueConfiguration> | ExistingQueueOptions<QueueLocatorType> = NewQueueOptions<QueueConfiguration> | ExistingQueueOptions<QueueLocatorType>> {
54
+ export declare abstract class AbstractQueueService<MessagePayloadSchemas extends object, MessageEnvelopeType extends object, DependenciesType extends QueueDependencies, QueueConfiguration extends object, QueueLocatorType extends object = CommonQueueLocator, OptionsType extends NewQueueOptions<QueueConfiguration> | ExistingQueueOptions<QueueLocatorType> = NewQueueOptions<QueueConfiguration> | ExistingQueueOptions<QueueLocatorType>, ExecutionContext = undefined, PrehandlerOutput = undefined, BarrierOutput = undefined> {
55
55
  protected readonly errorReporter: ErrorReporter;
56
56
  readonly logger: Logger;
57
57
  protected readonly messageTypeField: string;
@@ -73,7 +73,14 @@ export declare abstract class AbstractQueueService<MessagePayloadSchemas extends
73
73
  * Log preformatted and potentially presanitized message payload
74
74
  */
75
75
  protected logMessage(messageLogEntry: unknown): void;
76
+ protected logProcessedMessage(_message: MessagePayloadSchemas | null, processingResult: MessageProcessingResult, messageId?: string): void;
76
77
  protected handleError(err: unknown, context?: Record<string, unknown>): void;
77
78
  protected handleMessageProcessed(message: MessagePayloadSchemas | null, processingResult: MessageProcessingResult, messageId?: string): void;
79
+ protected processPrehandlersInternal(prehandlers: Prehandler<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>[] | undefined, message: MessagePayloadSchemas): Promise<PrehandlerOutput>;
80
+ 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;
81
+ 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;
82
+ protected abstract processPrehandlers(message: MessagePayloadSchemas, messageType: string): Promise<PrehandlerOutput>;
83
+ protected abstract preHandlerBarrier(message: MessagePayloadSchemas, messageType: string, prehandlerOutput: PrehandlerOutput): Promise<BarrierResult<BarrierOutput>>;
84
+ abstract processMessage(message: MessagePayloadSchemas, messageType: string, prehandlingOutputs: PrehandlingOutputs<PrehandlerOutput, BarrierOutput>): Promise<Either<'retryLater', 'success'>>;
78
85
  abstract close(): Promise<unknown>;
79
86
  }
@@ -43,6 +43,12 @@ class AbstractQueueService {
43
43
  logMessage(messageLogEntry) {
44
44
  this.logger.debug(messageLogEntry);
45
45
  }
46
+ logProcessedMessage(_message, processingResult, messageId) {
47
+ this.logger.debug({
48
+ processingResult,
49
+ messageId,
50
+ }, `Finished processing message ${messageId ?? `(unknown id)`}`);
51
+ }
46
52
  handleError(err, context) {
47
53
  const logObject = (0, node_core_1.resolveGlobalErrorLogObject)(err);
48
54
  if (logObject === 'string') {
@@ -65,6 +71,43 @@ class AbstractQueueService {
65
71
  processingResult,
66
72
  }, messageId);
67
73
  }
74
+ if (this.logMessages) {
75
+ // @ts-ignore
76
+ const resolvedMessageId = message?.[this.messageIdField] ?? messageId;
77
+ this.logProcessedMessage(message, processingResult, resolvedMessageId);
78
+ }
79
+ }
80
+ processPrehandlersInternal(prehandlers, message) {
81
+ if (!prehandlers || prehandlers.length === 0) {
82
+ return Promise.resolve({});
83
+ }
84
+ return new Promise((resolve, reject) => {
85
+ try {
86
+ const prehandlerOutput = {};
87
+ const next = this.resolveNextFunction(prehandlers, message, 0, prehandlerOutput, resolve, reject);
88
+ next({ result: 'success' });
89
+ }
90
+ catch (err) {
91
+ reject(err);
92
+ }
93
+ });
94
+ }
95
+ // eslint-disable-next-line max-params
96
+ resolveNextPreHandlerFunctionInternal(prehandlers, executionContext, message, index, prehandlerOutput, resolve, reject) {
97
+ return (prehandlerResult) => {
98
+ if (prehandlerResult.error) {
99
+ reject(prehandlerResult.error);
100
+ }
101
+ if (prehandlers.length < index + 1) {
102
+ resolve(prehandlerOutput);
103
+ }
104
+ else {
105
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call
106
+ prehandlers[index](message, executionContext,
107
+ // @ts-ignore
108
+ prehandlerOutput, this.resolveNextPreHandlerFunctionInternal(prehandlers, executionContext, message, index + 1, prehandlerOutput, resolve, reject));
109
+ }
110
+ };
68
111
  }
69
112
  }
70
113
  exports.AbstractQueueService = AbstractQueueService;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractQueueService.js","sourceRoot":"","sources":["../../../lib/queues/AbstractQueueService.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAGjC,mDAAiE;AAYjE,6CAAgD;AA6EhD,MAAsB,oBAAoB;IAYrB,aAAa,CAAe;IAC/B,MAAM,CAAQ;IACX,gBAAgB,CAAQ;IACxB,cAAc,CAAQ;IACtB,WAAW,CAAS;IACpB,cAAc,CAAqB;IACnC,aAAa,CAAmB;IAChC,cAAc,CAAiB;IAC/B,WAAW,CAAoC;IAElE,IAAI,UAAU;QACZ,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,oGAAoG,CACrG,CAAA;QACH,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED,YAAY,EAAE,aAAa,EAAE,MAAM,EAAoB,EAAE,OAAoB;QAC3E,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QAEpB,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAA;QAChD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAA;QACpD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAA;QAC5C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAA;QAC1C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAA;QAE5C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,KAAK,CAAA;QAC/C,IAAI,CAAC,WAAW,GAAG,IAAA,8BAAiB,EAAwB,OAAO,CAAC,CAAA;IACtE,CAAC;IAUD;;OAEG;IACO,iBAAiB,CAAC,OAA8B,EAAE,YAAoB;QAC9E,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;OAEG;IACO,UAAU,CAAC,eAAwB;QAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;IACpC,CAAC;IAES,WAAW,CAAC,GAAY,EAAE,OAAiC;QACnE,MAAM,SAAS,GAAG,IAAA,uCAA2B,EAAC,GAAG,CAAC,CAAA;QAClD,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QACvC,CAAC;aAAM,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAChB,GAAG,SAAS;gBACZ,GAAG,OAAO;aACX,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,iBAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;QACpD,CAAC;IACH,CAAC;IAES,sBAAsB,CAC9B,OAAqC,EACrC,gBAAyC,EACzC,SAAkB;QAElB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAClC;gBACE,OAAO;gBACP,gBAAgB;aACjB,EACD,SAAS,CACV,CAAA;QACH,CAAC;IACH,CAAC;CAGF;AAnGD,oDAmGC"}
1
+ {"version":3,"file":"AbstractQueueService.js","sourceRoot":"","sources":["../../../lib/queues/AbstractQueueService.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,11 @@
1
1
  import type { Either } from '@lokalise/node-core';
2
2
  import type { ZodSchema } from 'zod';
3
+ import type { DoNotProcessMessageError } from '../errors/DoNotProcessError';
4
+ import type { RetryMessageLaterError } from '../errors/RetryMessageLaterError';
5
+ export type PrehandlingOutputs<PrehandlerOutput, BarrierOutput> = {
6
+ prehandlerOutput: PrehandlerOutput;
7
+ barrierOutput: BarrierOutput;
8
+ };
3
9
  export type LogFormatter<MessagePayloadSchema> = (message: MessagePayloadSchema) => unknown;
4
10
  export type BarrierResult<BarrierOutput> = BarrierResultPositive<BarrierOutput> | BarrierResultNegative;
5
11
  export type BarrierResultPositive<BarrierOutput> = {
@@ -10,34 +16,38 @@ export type BarrierResultNegative = {
10
16
  isPassing: false;
11
17
  output?: never;
12
18
  };
13
- export type BarrierCallbackMultiConsumers<MessagePayloadSchema extends object, ExecutionContext, BarrierOutput> = (message: MessagePayloadSchema, context: ExecutionContext) => Promise<BarrierResult<BarrierOutput>>;
19
+ export type PrehandlerResult = Either<DoNotProcessMessageError | RetryMessageLaterError, 'success'>;
20
+ export type BarrierCallbackMultiConsumers<MessagePayloadSchema extends object, ExecutionContext, PrehandlerOutput, BarrierOutput> = (message: MessagePayloadSchema, context: ExecutionContext, prehandlerOutput: PrehandlerOutput) => Promise<BarrierResult<BarrierOutput>>;
21
+ export type Prehandler<MessagePayloadSchema extends object, ExecutionContext, PrehandlerOutput> = (message: MessagePayloadSchema, context: ExecutionContext, prehandlerOutput: Partial<PrehandlerOutput>, next: (result: PrehandlerResult) => void) => void;
14
22
  export declare const defaultLogFormatter: <MessagePayloadSchema>(message: MessagePayloadSchema) => MessagePayloadSchema;
15
- export type HandlerConfigOptions<MessagePayloadSchema extends object, ExecutionContext, BarrierOutput> = {
23
+ export type HandlerConfigOptions<MessagePayloadSchema extends object, ExecutionContext, PrehandlerOutput, BarrierOutput> = {
16
24
  messageLogFormatter?: LogFormatter<MessagePayloadSchema>;
17
- preHandlerBarrier?: BarrierCallbackMultiConsumers<MessagePayloadSchema, ExecutionContext, BarrierOutput>;
25
+ preHandlerBarrier?: BarrierCallbackMultiConsumers<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput>;
26
+ prehandlers?: Prehandler<MessagePayloadSchema, ExecutionContext, PrehandlerOutput>[];
18
27
  };
19
- export declare class MessageHandlerConfig<const MessagePayloadSchema extends object, const ExecutionContext, const BarrierOutput = unknown> {
28
+ export declare class MessageHandlerConfig<const MessagePayloadSchema extends object, const ExecutionContext, const PrehandlerOutput = unknown, const BarrierOutput = unknown> {
20
29
  readonly schema: ZodSchema<MessagePayloadSchema>;
21
- readonly handler: Handler<MessagePayloadSchema, ExecutionContext, BarrierOutput>;
30
+ readonly handler: Handler<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput>;
22
31
  readonly messageLogFormatter: LogFormatter<MessagePayloadSchema>;
23
- readonly preHandlerBarrier?: BarrierCallbackMultiConsumers<MessagePayloadSchema, ExecutionContext, BarrierOutput>;
24
- constructor(schema: ZodSchema<MessagePayloadSchema>, handler: Handler<MessagePayloadSchema, ExecutionContext, BarrierOutput>, options?: HandlerConfigOptions<MessagePayloadSchema, ExecutionContext, BarrierOutput>);
32
+ readonly preHandlerBarrier?: BarrierCallbackMultiConsumers<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput>;
33
+ readonly prehandlers?: Prehandler<MessagePayloadSchema, ExecutionContext, PrehandlerOutput>[];
34
+ constructor(schema: ZodSchema<MessagePayloadSchema>, handler: Handler<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput>, options?: HandlerConfigOptions<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput>);
25
35
  }
26
- export declare class MessageHandlerConfigBuilder<MessagePayloadSchemas extends object, ExecutionContext> {
36
+ export declare class MessageHandlerConfigBuilder<MessagePayloadSchemas extends object, ExecutionContext, PrehandlerOutput> {
27
37
  private readonly configs;
28
38
  constructor();
29
- addConfig<MessagePayloadSchema extends MessagePayloadSchemas, const BarrierOutput>(schema: ZodSchema<MessagePayloadSchema>, handler: Handler<MessagePayloadSchema, ExecutionContext, BarrierOutput>, options?: HandlerConfigOptions<MessagePayloadSchema, ExecutionContext, BarrierOutput>): this;
30
- build(): MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext, any>[];
39
+ addConfig<MessagePayloadSchema extends MessagePayloadSchemas, const BarrierOutput>(schema: ZodSchema<MessagePayloadSchema>, handler: Handler<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput>, options?: HandlerConfigOptions<MessagePayloadSchema, ExecutionContext, PrehandlerOutput, BarrierOutput>): this;
40
+ build(): MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput, any>[];
31
41
  }
32
- export type Handler<MessagePayloadSchemas, ExecutionContext, BarrierOutput = undefined> = (message: MessagePayloadSchemas, context: ExecutionContext, barrierOutput: BarrierOutput) => Promise<Either<'retryLater', 'success'>>;
33
- export type HandlerContainerOptions<MessagePayloadSchemas extends object, ExecutionContext> = {
34
- messageHandlers: MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext, unknown>[];
42
+ export type Handler<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput = undefined, BarrierOutput = undefined> = (message: MessagePayloadSchemas, context: ExecutionContext, prehandlingOutputs: PrehandlingOutputs<PrehandlerOutput, BarrierOutput>) => Promise<Either<'retryLater', 'success'>>;
43
+ export type HandlerContainerOptions<MessagePayloadSchemas extends object, ExecutionContext, PrehandlerOutput> = {
44
+ messageHandlers: MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput, unknown>[];
35
45
  messageTypeField: string;
36
46
  };
37
- export declare class HandlerContainer<MessagePayloadSchemas extends object, ExecutionContext> {
47
+ export declare class HandlerContainer<MessagePayloadSchemas extends object, ExecutionContext, PrehandlerOutput> {
38
48
  private readonly messageHandlers;
39
49
  private readonly messageTypeField;
40
- constructor(options: HandlerContainerOptions<MessagePayloadSchemas, ExecutionContext>);
41
- resolveHandler<BarrierResult>(messageType: string): MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext, BarrierResult>;
50
+ constructor(options: HandlerContainerOptions<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>);
51
+ resolveHandler<BarrierResult, PrehandlerOutput>(messageType: string): MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput, BarrierResult>;
42
52
  private resolveHandlerMap;
43
53
  }
@@ -8,16 +8,17 @@ class MessageHandlerConfig {
8
8
  handler;
9
9
  messageLogFormatter;
10
10
  preHandlerBarrier;
11
+ prehandlers;
11
12
  constructor(schema, handler, options) {
12
13
  this.schema = schema;
13
14
  this.handler = handler;
14
15
  this.messageLogFormatter = options?.messageLogFormatter ?? exports.defaultLogFormatter;
15
16
  this.preHandlerBarrier = options?.preHandlerBarrier;
17
+ this.prehandlers = options?.prehandlers;
16
18
  }
17
19
  }
18
20
  exports.MessageHandlerConfig = MessageHandlerConfig;
19
21
  class MessageHandlerConfigBuilder {
20
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
22
  configs;
22
23
  constructor() {
23
24
  this.configs = [];
@@ -1 +1 @@
1
- {"version":3,"file":"HandlerContainer.js","sourceRoot":"","sources":["../../../lib/queues/HandlerContainer.ts"],"names":[],"mappings":";;;AA4BO,MAAM,mBAAmB,GAAG,CAAuB,OAA6B,EAAE,EAAE,CAAC,OAAO,CAAA;AAAtF,QAAA,mBAAmB,uBAAmE;AAenG,MAAa,oBAAoB;IAKf,MAAM,CAAiC;IACvC,OAAO,CAAgE;IACvE,mBAAmB,CAAoC;IACvD,iBAAiB,CAIhC;IAED,YACE,MAAuC,EACvC,OAAuE,EACvE,OAAqF;QAErF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,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;IACrD,CAAC;CACF;AAxBD,oDAwBC;AAED,MAAa,2BAA2B;IACtC,8DAA8D;IAC7C,OAAO,CAAsE;IAE9F;QACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,CAAC;IAED,SAAS,CACP,MAAuC,EACvC,OAAuE,EACvE,OAAqF;QAErF,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,IAAI,oBAAoB,CACtB,MAAM;QACN,aAAa;QACb,OAAO,EACP,OAAO,CACR,CACF,CAAA;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;CACF;AA3BD,kEA2BC;AAaD,MAAa,gBAAgB;IACV,eAAe,CAG/B;IACgB,gBAAgB,CAAQ;IAEzC,YAAY,OAAyE;QACnF,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;QAEnB,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,iBAA2F;QAE3F,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,GAAG,CAAC,WAAW,CAAC,GAAG,KAAK,CAAA;YACxB,OAAO,GAAG,CAAA;QACZ,CAAC,EACD,EAA4F,CAC7F,CAAA;IACH,CAAC;CACF;AApCD,4CAoCC"}
1
+ {"version":3,"file":"HandlerContainer.js","sourceRoot":"","sources":["../../../lib/queues/HandlerContainer.ts"],"names":[],"mappings":";;;AA+CO,MAAM,mBAAmB,GAAG,CAAuB,OAA6B,EAAE,EAAE,CAAC,OAAO,CAAA;AAAtF,QAAA,mBAAmB,uBAAmE;AAkBnG,MAAa,oBAAoB;IAMf,MAAM,CAAiC;IACvC,OAAO,CAKtB;IACe,mBAAmB,CAAoC;IACvD,iBAAiB,CAKhC;IACe,WAAW,CAIxB;IAEH,YACE,MAAuC,EACvC,OAAyF,EACzF,OAKC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,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,CAAA;IACzC,CAAC;CACF;AA1CD,oDA0CC;AAED,MAAa,2BAA2B;IAKrB,OAAO,CAMrB;IAEH;QACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,CAAC;IAED,SAAS,CACP,MAAuC,EACvC,OAAyF,EACzF,OAKC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,IAAI,oBAAoB,CAMtB,MAAM;QACN,aAAa;QACb,OAAO,EACP,OAAO,CACR,CACF,CAAA;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;CACF;AA9CD,kEA8CC;AA2BD,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,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,iBAAiB,CACvB,iBAKG;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,GAAG,CAAC,WAAW,CAAC,GAAG,KAAK,CAAA;YACxB,OAAO,GAAG,CAAA;QACZ,CAAC,EACD,EAGC,CACF,CAAA;IACH,CAAC;CACF;AA1DD,4CA0DC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@message-queue-toolkit/core",
3
- "version": "8.0.0",
3
+ "version": "9.0.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",
@@ -16,32 +16,31 @@
16
16
  "build": "del-cli dist && del-cli coverage && tsc",
17
17
  "build:release": "del-cli dist && del-cli coverage && npm run lint && tsc --project tsconfig.release.json",
18
18
  "lint": "eslint . --ext .ts",
19
- "lint:fix": "eslint . --ext .ts --fix",
19
+ "lint:fix": "prettier --write . && eslint . --ext .ts --fix",
20
20
  "test": "vitest",
21
21
  "test:coverage": "npm test -- --coverage",
22
22
  "test:ci": "npm run docker:start:dev && npm run test:coverage && npm run docker:stop:dev",
23
23
  "docker:start:dev": "",
24
24
  "docker:stop:dev": "",
25
- "format": "prettier --write .",
26
25
  "prepublishOnly": "npm run build:release"
27
26
  },
28
27
  "dependencies": {
29
- "@lokalise/node-core": "^9.9.0",
28
+ "@lokalise/node-core": "^9.10.1",
30
29
  "fast-equals": "^5.0.1",
31
30
  "toad-cache": "^3.7.0"
32
31
  },
33
32
  "devDependencies": {
34
- "@types/node": "^20.11.16",
35
- "@typescript-eslint/eslint-plugin": "^7.0.2",
36
- "@typescript-eslint/parser": "^7.0.2",
33
+ "@types/node": "^20.11.25",
34
+ "@typescript-eslint/eslint-plugin": "^7.1.1",
35
+ "@typescript-eslint/parser": "^7.1.1",
37
36
  "@vitest/coverage-v8": "^1.3.1",
38
37
  "del-cli": "^5.1.0",
39
- "eslint": "^8.55.0",
38
+ "eslint": "^8.57.0",
40
39
  "eslint-config-prettier": "^9.1.0",
41
- "eslint-plugin-import": "^2.29.0",
42
- "eslint-plugin-prettier": "^5.0.1",
43
- "prettier": "^3.1.0",
44
- "typescript": "^5.3.3",
40
+ "eslint-plugin-import": "^2.29.1",
41
+ "eslint-plugin-prettier": "^5.1.3",
42
+ "prettier": "^3.2.5",
43
+ "typescript": "^5.4.2",
45
44
  "vitest": "^1.3.1"
46
45
  },
47
46
  "homepage": "https://github.com/kibertoad/message-queue-toolkit",