@message-queue-toolkit/core 18.1.0 → 20.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
@@ -27,3 +27,4 @@ export * from './lib/messages/MetadataFiller';
27
27
  export * from './lib/queues/AbstractPublisherManager';
28
28
  export { PayloadStoreTypes, PayloadStoreConfig, SerializedPayload, PayloadSerializer, } from './lib/payload-store/payloadStoreTypes';
29
29
  export { OffloadedPayloadPointerPayload, OFFLOADED_PAYLOAD_POINTER_PAYLOAD_SCHEMA, isOffloadedPayloadPointerPayload, } from './lib/payload-store/offloadedPayloadMessageSchemas';
30
+ export { type MessageDeduplicationStore, type MessageDeduplicationConfig, type ReleasableLock, type AcquireLockOptions, DeduplicationRequester, AcquireLockTimeoutError, noopReleasableLock, } from './lib/message-deduplication/messageDeduplicationTypes';
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isOffloadedPayloadPointerPayload = exports.OFFLOADED_PAYLOAD_POINTER_PAYLOAD_SCHEMA = exports.FakeListener = exports.EventRegistry = exports.DomainEventEmitter = exports.isProduction = exports.reloadConfig = exports.toDatePreprocessor = exports.isRetryDateExceeded = 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;
3
+ exports.noopReleasableLock = exports.AcquireLockTimeoutError = exports.DeduplicationRequester = exports.isOffloadedPayloadPointerPayload = exports.OFFLOADED_PAYLOAD_POINTER_PAYLOAD_SCHEMA = exports.FakeListener = exports.EventRegistry = exports.DomainEventEmitter = exports.isProduction = exports.reloadConfig = exports.toDatePreprocessor = exports.isRetryDateExceeded = 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
  const tslib_1 = require("tslib");
5
5
  var AbstractQueueService_1 = require("./lib/queues/AbstractQueueService");
6
6
  Object.defineProperty(exports, "AbstractQueueService", { enumerable: true, get: function () { return AbstractQueueService_1.AbstractQueueService; } });
@@ -51,4 +51,8 @@ tslib_1.__exportStar(require("./lib/queues/AbstractPublisherManager"), exports);
51
51
  var offloadedPayloadMessageSchemas_1 = require("./lib/payload-store/offloadedPayloadMessageSchemas");
52
52
  Object.defineProperty(exports, "OFFLOADED_PAYLOAD_POINTER_PAYLOAD_SCHEMA", { enumerable: true, get: function () { return offloadedPayloadMessageSchemas_1.OFFLOADED_PAYLOAD_POINTER_PAYLOAD_SCHEMA; } });
53
53
  Object.defineProperty(exports, "isOffloadedPayloadPointerPayload", { enumerable: true, get: function () { return offloadedPayloadMessageSchemas_1.isOffloadedPayloadPointerPayload; } });
54
+ var messageDeduplicationTypes_1 = require("./lib/message-deduplication/messageDeduplicationTypes");
55
+ Object.defineProperty(exports, "DeduplicationRequester", { enumerable: true, get: function () { return messageDeduplicationTypes_1.DeduplicationRequester; } });
56
+ Object.defineProperty(exports, "AcquireLockTimeoutError", { enumerable: true, get: function () { return messageDeduplicationTypes_1.AcquireLockTimeoutError; } });
57
+ Object.defineProperty(exports, "noopReleasableLock", { enumerable: true, get: function () { return messageDeduplicationTypes_1.noopReleasableLock; } });
54
58
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AASA,0EAI0C;AAHxC,4HAAA,oBAAoB,OAAA;AAItB,wEAA6C;AAE7C,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,kEAKsC;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,qDAA8E;AAA5C,0GAAA,YAAY,OAAA;AAC9C,mDAA2D;AAAlD,gHAAA,mBAAmB,OAAA;AAC5B,+DAAgE;AAAvD,qHAAA,kBAAkB,OAAA;AAE3B,iDAAiE;AAAxD,wGAAA,YAAY,OAAA;AAAE,wGAAA,YAAY,OAAA;AAEnC,sEAAoE;AAA3D,wHAAA,kBAAkB,OAAA;AAC3B,4DAA0D;AAAjD,8GAAA,aAAa,OAAA;AACtB,gEAA8D;AAArD,4GAAA,YAAY,OAAA;AAErB,kEAAuC;AACvC,wEAA6C;AAC7C,4EAAiD;AAEjD,wEAA6C;AAE7C,gFAAqD;AAOrD,qGAI2D;AAFzD,0JAAA,wCAAwC,OAAA;AACxC,kJAAA,gCAAgC,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AASA,0EAI0C;AAHxC,4HAAA,oBAAoB,OAAA;AAItB,wEAA6C;AAE7C,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,kEAKsC;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,qDAA8E;AAA5C,0GAAA,YAAY,OAAA;AAC9C,mDAA2D;AAAlD,gHAAA,mBAAmB,OAAA;AAC5B,+DAAgE;AAAvD,qHAAA,kBAAkB,OAAA;AAE3B,iDAAiE;AAAxD,wGAAA,YAAY,OAAA;AAAE,wGAAA,YAAY,OAAA;AAEnC,sEAAoE;AAA3D,wHAAA,kBAAkB,OAAA;AAC3B,4DAA0D;AAAjD,8GAAA,aAAa,OAAA;AACtB,gEAA8D;AAArD,4GAAA,YAAY,OAAA;AAErB,kEAAuC;AACvC,wEAA6C;AAC7C,4EAAiD;AAEjD,wEAA6C;AAE7C,gFAAqD;AAOrD,qGAI2D;AAFzD,0JAAA,wCAAwC,OAAA;AACxC,kJAAA,gCAAgC,OAAA;AAElC,mGAQ8D;AAH5D,mIAAA,sBAAsB,OAAA;AACtB,oIAAA,uBAAuB,OAAA;AACvB,+HAAA,kBAAkB,OAAA"}
@@ -103,7 +103,7 @@ class DomainEventEmitter {
103
103
  this._handlerSpy.addProcessedMessage({
104
104
  // @ts-ignore
105
105
  message: event,
106
- processingResult: 'consumed',
106
+ processingResult: { status: 'consumed' },
107
107
  }, event.id);
108
108
  });
109
109
  this.inProgressBackgroundHandlerByEventId.set(event.id, bgPromise);
@@ -1 +1 @@
1
- {"version":3,"file":"DomainEventEmitter.js","sourceRoot":"","sources":["../../../lib/events/DomainEventEmitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DomainEventEmitter.js","sourceRoot":"","sources":["../../../lib/events/DomainEventEmitter.ts"],"names":[],"mappings":";;;AAAA,mDAM4B;AAI5B,qDAAwD;AAExD,6CAAwC;AA0BxC,MAAa,kBAAkB;IACZ,aAAa,CAAgC;IAC7C,cAAc,CAAgB;IAC9B,MAAM,CAAc;IACpB,aAAa,CAAgB;IAC7B,+BAA+B,CAAkC;IACjE,WAAW,CAE3B;IAEgB,eAAe,CAG/B;IACgB,oCAAoC,CAA4B;IAEjF,YACE,IAAqD,EACrD,UAEI,EAAE;QAEN,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;QACvC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAA;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;QACvC,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,+BAA+B,CAAA;QAE3E,IAAI,CAAC,WAAW;YACd,IAAA,8BAAiB,EAAmE,OAAO,CAAC,CAAA;QAE9F,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAA;QAChC,IAAI,CAAC,oCAAoC,GAAG,IAAI,GAAG,EAAE,CAAA;IACvD,CAAC;IAED,IAAI,UAAU;QAGZ,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;IAEM,KAAK,CAAC,OAAO;QAClB,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,CAAC,MAAM,EAAE,CAAC,CAAA;QACrE,IAAI,CAAC,oCAAoC,CAAC,KAAK,EAAE,CAAA;QACjD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;QAC5B,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAA;IAC3B,CAAC;IAEM,KAAK,CAAC,IAAI,CACf,cAA8B,EAC9B,IAA4E,EAC5E,wBAA+D;QAE/D,MAAM,aAAa,GAAG,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAA;QACrE,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,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAA;QAC5E,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAA;QACvD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe;YACjD,aAAa;YACb,IAAI,EACJ,cAAc,EACd,wBAAwB,IAAI,EAAE,CAC/B,CAAA;QACH,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa;YAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,CAAA;QAE/F,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa;aACtC,4BAA4B,CAAC,aAAa,CAAC;aAC3C,eAAe,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;QAE1D,aAAa;QACb,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;QAEtC,aAAa;QACb,OAAO,cAAc,CAAA;IACvB,CAAC;IAED;;OAEG;IACI,EAAE,CACP,aAA4B,EAC5B,OAA2D,EAC3D,mBAAmB,GAAG,KAAK;QAE3B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAA;QAC7E,CAAC;QAED,IAAI,mBAAmB;YAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;;YACrF,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxE,CAAC;IAED;;OAEG;IACI,MAAM,CACX,cAA+B,EAC/B,OAA2D,EAC3D,mBAAmB,GAAG,KAAK;QAE3B,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;YAC3C,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAA;QACtD,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAyC,EAAE,mBAAmB,GAAG,KAAK;QACjF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAA;IAC/F,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,KAA8D;QAE9D,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC1D,IAAI,CAAC,aAAa;YAAE,OAAM;QAE1B,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC;YAC/C,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;QACvD,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAC3B,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAC1F,CAAC,IAAI,CAAC,GAAG,EAAE;YACV,IAAI,CAAC,oCAAoC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YAC1D,IAAI,CAAC,IAAI,CAAC,WAAW;gBAAE,OAAM;YAC7B,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAClC;gBACE,aAAa;gBACb,OAAO,EAAE,KAAK;gBACd,gBAAgB,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;aACzC,EACD,KAAK,CAAC,EAAE,CACT,CAAA;QACH,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,oCAAoC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAA;IACpE,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAC/B,KAA8D,EAC9D,OAA8E,EAC9E,mBAA4B;QAE5B,MAAM,aAAa,GAAG,IAAA,wBAAU,GAAE,CAAA;QAClC,IAAI,YAAY,GAAG,KAAK,CAAA;QACxB,IAAI,CAAC;YACH,IAAI,CAAC,+BAA+B,EAAE,cAAc,CAClD,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,mBAAmB,CAAC,EAC7D,aAAa,EACb,KAAK,CAAC,IAAI,CACX,CAAA;YACD,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YAChC,YAAY,GAAG,IAAI,CAAA;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,mBAAmB;gBAAE,MAAM,KAAK,CAAA;YAErC,MAAM,OAAO,GAAG;gBACd,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBAC5B,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,cAAc,EAAE,KAAK,CAAC,QAAQ,EAAE,aAAa;aAC9C,CAAA;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAChB,GAAG,IAAA,uCAA2B,EAAC,KAAK,CAAC;gBACrC,GAAG,OAAO;aACX,CAAC,CAAA;YACF,uEAAuE;YACvE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAY,EAAE,OAAO,EAAE,CAAC,CAAA;QAC9D,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,+BAA+B,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;QACzE,CAAC;IACH,CAAC;IAEO,mBAAmB,CACzB,KAA+D,EAC/D,OAA+E,EAC/E,mBAA4B;QAE5B,OAAO,GAAG,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,mBAAmB,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAA;IACtG,CAAC;CACF;AAjMD,gDAiMC"}
@@ -0,0 +1,41 @@
1
+ import type { Either } from '@lokalise/node-core';
2
+ import type { MessageDeduplicationOptions } from '@message-queue-toolkit/schemas';
3
+ export interface ReleasableLock {
4
+ release(): Promise<void>;
5
+ }
6
+ export declare class AcquireLockTimeoutError extends Error {
7
+ }
8
+ export type AcquireLockOptions = Required<Pick<MessageDeduplicationOptions, 'acquireTimeoutSeconds' | 'lockTimeoutSeconds' | 'refreshIntervalSeconds'>>;
9
+ export interface MessageDeduplicationStore {
10
+ /**
11
+ * Stores a deduplication key in case it does not already exist.
12
+ * @param {string} key - deduplication key
13
+ * @param {string} value - value to store
14
+ * @param {number} ttlSeconds - time to live in seconds
15
+ * @returns {Promise<boolean>} - true if the key was stored, false if it already existed
16
+ */
17
+ setIfNotExists(key: string, value: string, ttlSeconds: number): Promise<boolean>;
18
+ /**
19
+ * Acquires locks for a given key
20
+ * @param {string} key - deduplication key
21
+ * @param {object} options - options used when acquiring the lock
22
+ * @returns {Promise<Either<AcquireLockTimeoutError | Error, ReleasableLock>>} - a promise that resolves to a ReleasableLock if the lock was acquired, AcquireLockTimeoutError error if the lock could not be acquired due to timeout, or an Error if the lock could not be acquired for another reason
23
+ */
24
+ acquireLock(key: string, options: object): Promise<Either<AcquireLockTimeoutError | Error, ReleasableLock>>;
25
+ /**
26
+ * Checks if a deduplication key exists in the store
27
+ * @param {string} key - deduplication key
28
+ * @returns {Promise<boolean>} - true if the key exists, false otherwise
29
+ */
30
+ keyExists(key: string): Promise<boolean>;
31
+ }
32
+ export type MessageDeduplicationConfig = {
33
+ /** The store to use for storage and retrieval of deduplication keys */
34
+ deduplicationStore: MessageDeduplicationStore;
35
+ };
36
+ export declare enum DeduplicationRequester {
37
+ Consumer = "consumer",
38
+ Publisher = "publisher"
39
+ }
40
+ export declare const DEFAULT_MESSAGE_DEDUPLICATION_OPTIONS: Required<MessageDeduplicationOptions>;
41
+ export declare const noopReleasableLock: ReleasableLock;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.noopReleasableLock = exports.DEFAULT_MESSAGE_DEDUPLICATION_OPTIONS = exports.DeduplicationRequester = exports.AcquireLockTimeoutError = void 0;
4
+ class AcquireLockTimeoutError extends Error {
5
+ }
6
+ exports.AcquireLockTimeoutError = AcquireLockTimeoutError;
7
+ var DeduplicationRequester;
8
+ (function (DeduplicationRequester) {
9
+ DeduplicationRequester["Consumer"] = "consumer";
10
+ DeduplicationRequester["Publisher"] = "publisher";
11
+ })(DeduplicationRequester || (exports.DeduplicationRequester = DeduplicationRequester = {}));
12
+ exports.DEFAULT_MESSAGE_DEDUPLICATION_OPTIONS = {
13
+ deduplicationWindowSeconds: 40,
14
+ lockTimeoutSeconds: 20,
15
+ acquireTimeoutSeconds: 20,
16
+ refreshIntervalSeconds: 10,
17
+ };
18
+ exports.noopReleasableLock = {
19
+ release: async () => { },
20
+ };
21
+ //# sourceMappingURL=messageDeduplicationTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageDeduplicationTypes.js","sourceRoot":"","sources":["../../../lib/message-deduplication/messageDeduplicationTypes.ts"],"names":[],"mappings":";;;AAOA,MAAa,uBAAwB,SAAQ,KAAK;CAAG;AAArD,0DAAqD;AA2CrD,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAChC,+CAAqB,CAAA;IACrB,iDAAuB,CAAA;AACzB,CAAC,EAHW,sBAAsB,sCAAtB,sBAAsB,QAGjC;AAEY,QAAA,qCAAqC,GAA0C;IAC1F,0BAA0B,EAAE,EAAE;IAC9B,kBAAkB,EAAE,EAAE;IACtB,qBAAqB,EAAE,EAAE;IACzB,sBAAsB,EAAE,EAAE;CAC3B,CAAA;AAEY,QAAA,kBAAkB,GAAmB;IAChD,OAAO,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;CACxB,CAAA"}
@@ -12,7 +12,7 @@ exports.OFFLOADED_PAYLOAD_POINTER_PAYLOAD_SCHEMA = zod_1.z
12
12
  offloadedPayloadPointer: zod_1.z.string().min(1),
13
13
  offloadedPayloadSize: zod_1.z.number().int().positive(),
14
14
  })
15
- // Pass-through allows to pass message ID, type and timestamp that are using dynamic keys.
15
+ // Pass-through allows to pass message ID, type, timestamp and message-deduplication-related fields that are using dynamic keys.
16
16
  .passthrough();
17
17
  function isOffloadedPayloadPointerPayload(value) {
18
18
  return value.offloadedPayloadPointer !== undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"offloadedPayloadMessageSchemas.js","sourceRoot":"","sources":["../../../lib/payload-store/offloadedPayloadMessageSchemas.ts"],"names":[],"mappings":";;;AAkBA,4EAIC;AAtBD,6BAAuB;AAEvB;;;GAGG;AACU,QAAA,wCAAwC,GAAG,OAAC;KACtD,MAAM,CAAC;IACN,uBAAuB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,oBAAoB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CAClD,CAAC;IACF,0FAA0F;KACzF,WAAW,EAAE,CAAA;AAMhB,SAAgB,gCAAgC,CAC9C,KAAc;IAEd,OAAQ,KAAwC,CAAC,uBAAuB,KAAK,SAAS,CAAA;AACxF,CAAC"}
1
+ {"version":3,"file":"offloadedPayloadMessageSchemas.js","sourceRoot":"","sources":["../../../lib/payload-store/offloadedPayloadMessageSchemas.ts"],"names":[],"mappings":";;;AAkBA,4EAIC;AAtBD,6BAAuB;AAEvB;;;GAGG;AACU,QAAA,wCAAwC,GAAG,OAAC;KACtD,MAAM,CAAC;IACN,uBAAuB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,oBAAoB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CAClD,CAAC;IACF,gIAAgI;KAC/H,WAAW,EAAE,CAAA;AAMhB,SAAgB,gCAAgC,CAC9C,KAAc;IAEd,OAAQ,KAAwC,CAAC,uBAAuB,KAAK,SAAS,CAAA;AACxF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractPublisherManager.js","sourceRoot":"","sources":["../../../lib/queues/AbstractPublisherManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractPublisherManager.js","sourceRoot":"","sources":["../../../lib/queues/AbstractPublisherManager.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import type { CommonLogger, Either, ErrorReporter, ErrorResolver } from '@lokalise/node-core';
2
2
  import type { ZodSchema, ZodType } from 'zod';
3
3
  import type { MessageInvalidFormatError, MessageValidationError } from '../errors/Errors';
4
- import type { OffloadedPayloadPointerPayload } from '../payload-store/offloadedPayloadMessageSchemas';
4
+ import { AcquireLockTimeoutError, DeduplicationRequester, type MessageDeduplicationConfig, type ReleasableLock } from '../message-deduplication/messageDeduplicationTypes';
5
+ import { type OffloadedPayloadPointerPayload } from '../payload-store/offloadedPayloadMessageSchemas';
5
6
  import type { PayloadStoreConfig } from '../payload-store/payloadStoreTypes';
6
7
  import type { MessageProcessingResult } from '../types/MessageQueueTypes';
7
- import type { DeletionConfig, MessageMetricsManager, ProcessedMessageMetadata, QueueDependencies, QueueOptions } from '../types/queueOptionsTypes';
8
+ import type { DeletionConfig, MessageMetricsManager, QueueDependencies, QueueOptions } from '../types/queueOptionsTypes';
8
9
  import type { BarrierCallback, BarrierResult, MessageHandlerConfig, PreHandlingOutputs, Prehandler, PrehandlerResult } from './HandlerContainer';
9
10
  import type { HandlerSpy, PublicHandlerSpy } from './HandlerSpy';
10
11
  import { MessageSchemaContainer } from './MessageSchemaContainer';
@@ -21,12 +22,20 @@ export declare abstract class AbstractQueueService<MessagePayloadSchemas extends
21
22
  * Used to keep track of the number of `retryLater` results received for a message to be able to
22
23
  * calculate the delay for the next retry
23
24
  */
24
- private readonly messageNumberOfRetriesField;
25
+ private readonly messageRetryLaterCountField;
25
26
  /**
26
27
  * Used to know when the message was sent initially so we can have a max retry date and avoid
27
28
  * a infinite `retryLater` loop
28
29
  */
29
30
  protected readonly messageTimestampField: string;
31
+ /**
32
+ * Used to know the message deduplication id
33
+ */
34
+ protected readonly messageDeduplicationIdField: string;
35
+ /**
36
+ * Used to know the store-based message deduplication options
37
+ */
38
+ protected readonly messageDeduplicationOptionsField: string;
30
39
  protected readonly errorReporter: ErrorReporter;
31
40
  readonly logger: CommonLogger;
32
41
  protected readonly messageIdField: string;
@@ -36,8 +45,9 @@ export declare abstract class AbstractQueueService<MessagePayloadSchemas extends
36
45
  protected readonly locatorConfig?: QueueLocatorType;
37
46
  protected readonly deletionConfig?: DeletionConfig;
38
47
  protected readonly payloadStoreConfig?: Omit<PayloadStoreConfig, 'serializer'> & Required<Pick<PayloadStoreConfig, 'serializer'>>;
39
- protected readonly _handlerSpy?: HandlerSpy<MessagePayloadSchemas>;
48
+ protected readonly messageDeduplicationConfig?: MessageDeduplicationConfig;
40
49
  protected readonly messageMetricsManager?: MessageMetricsManager<MessagePayloadSchemas>;
50
+ protected readonly _handlerSpy?: HandlerSpy<MessagePayloadSchemas>;
41
51
  protected isInitted: boolean;
42
52
  get handlerSpy(): PublicHandlerSpy<MessagePayloadSchemas>;
43
53
  constructor({ errorReporter, logger, messageMetricsManager }: DependenciesType, options: OptionsType);
@@ -60,8 +70,14 @@ export declare abstract class AbstractQueueService<MessagePayloadSchemas extends
60
70
  */
61
71
  protected logMessage(messageLogEntry: unknown): void;
62
72
  protected handleError(err: unknown, context?: Record<string, unknown>): void;
63
- protected handleMessageProcessed(message: MessagePayloadSchemas | null, processingResult: MessageProcessingResult, messageId?: string): void;
64
- protected resolveProcessedMessageMetadata(message: MessagePayloadSchemas | null, processingResult: MessageProcessingResult, messageProcessedTimestamp: number, messageId?: string): ProcessedMessageMetadata<MessagePayloadSchemas>;
73
+ protected handleMessageProcessed(params: {
74
+ message: MessagePayloadSchemas | null;
75
+ processingResult: MessageProcessingResult;
76
+ messageProcessingStartTimestamp: number;
77
+ queueName: string;
78
+ messageId?: string;
79
+ }): void;
80
+ private resolveProcessedMessageMetadata;
65
81
  protected processPrehandlersInternal(preHandlers: Prehandler<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>[], message: MessagePayloadSchemas): Promise<PrehandlerOutput>;
66
82
  protected preHandlerBarrierInternal<BarrierOutput>(barrier: BarrierCallback<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput, BarrierOutput> | undefined, message: MessagePayloadSchemas, executionContext: ExecutionContext, preHandlerOutput: PrehandlerOutput): Promise<BarrierResult<BarrierOutput>>;
67
83
  shouldBeRetried(message: MessagePayloadSchemas, maxRetryDuration: number): boolean;
@@ -86,5 +102,30 @@ export declare abstract class AbstractQueueService<MessagePayloadSchemas extends
86
102
  * Returns the original payload or an error if the payload was not found or could not be parsed.
87
103
  */
88
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;
89
130
  }
90
131
  export {};
@@ -3,6 +3,8 @@ 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 schemas_1 = require("@message-queue-toolkit/schemas");
7
+ const messageDeduplicationTypes_1 = require("../message-deduplication/messageDeduplicationTypes");
6
8
  const JsonStreamStringifySerializer_1 = require("../payload-store/JsonStreamStringifySerializer");
7
9
  const offloadedPayloadMessageSchemas_1 = require("../payload-store/offloadedPayloadMessageSchemas");
8
10
  const payloadStoreTypes_1 = require("../payload-store/payloadStoreTypes");
@@ -16,12 +18,20 @@ class AbstractQueueService {
16
18
  * Used to keep track of the number of `retryLater` results received for a message to be able to
17
19
  * calculate the delay for the next retry
18
20
  */
19
- messageNumberOfRetriesField = '_internalNumberOfRetries';
21
+ messageRetryLaterCountField = '_internalRetryLaterCount';
20
22
  /**
21
23
  * Used to know when the message was sent initially so we can have a max retry date and avoid
22
24
  * a infinite `retryLater` loop
23
25
  */
24
26
  messageTimestampField;
27
+ /**
28
+ * Used to know the message deduplication id
29
+ */
30
+ messageDeduplicationIdField;
31
+ /**
32
+ * Used to know the store-based message deduplication options
33
+ */
34
+ messageDeduplicationOptionsField;
25
35
  errorReporter;
26
36
  logger;
27
37
  messageIdField;
@@ -31,8 +41,9 @@ class AbstractQueueService {
31
41
  locatorConfig;
32
42
  deletionConfig;
33
43
  payloadStoreConfig;
34
- _handlerSpy;
44
+ messageDeduplicationConfig;
35
45
  messageMetricsManager;
46
+ _handlerSpy;
36
47
  isInitted;
37
48
  get handlerSpy() {
38
49
  if (!this._handlerSpy) {
@@ -47,6 +58,9 @@ class AbstractQueueService {
47
58
  this.messageIdField = options.messageIdField ?? 'id';
48
59
  this.messageTypeField = options.messageTypeField;
49
60
  this.messageTimestampField = options.messageTimestampField ?? 'timestamp';
61
+ this.messageDeduplicationIdField = options.messageDeduplicationIdField ?? 'deduplicationId';
62
+ this.messageDeduplicationOptionsField =
63
+ options.messageDeduplicationOptionsField ?? 'deduplicationOptions';
50
64
  this.creationConfig = options.creationConfig;
51
65
  this.locatorConfig = options.locatorConfig;
52
66
  this.deletionConfig = options.deletionConfig;
@@ -56,6 +70,7 @@ class AbstractQueueService {
56
70
  ...options.payloadStoreConfig,
57
71
  }
58
72
  : undefined;
73
+ this.messageDeduplicationConfig = options.messageDeduplicationConfig;
59
74
  this.logMessages = options.logMessages ?? false;
60
75
  this._handlerSpy = (0, HandlerSpy_1.resolveHandlerSpy)(options);
61
76
  this.isInitted = false;
@@ -102,19 +117,17 @@ class AbstractQueueService {
102
117
  this.errorReporter.report({ error: err, context });
103
118
  }
104
119
  }
105
- handleMessageProcessed(message, processingResult, messageId) {
106
- const messageProcessedTimestamp = Date.now();
107
- if (this._handlerSpy) {
108
- this._handlerSpy.addProcessedMessage({
109
- message,
110
- processingResult,
111
- }, messageId);
112
- }
120
+ handleMessageProcessed(params) {
121
+ const { message, processingResult, messageId } = params;
122
+ const messageProcessingEndTimestamp = Date.now();
123
+ this._handlerSpy?.addProcessedMessage({
124
+ message,
125
+ processingResult,
126
+ }, messageId);
113
127
  const debugLoggingEnabled = this.logMessages && this.logger.isLevelEnabled('debug');
114
- if (!debugLoggingEnabled && !this.messageMetricsManager) {
128
+ if (!debugLoggingEnabled && !this.messageMetricsManager)
115
129
  return;
116
- }
117
- const processedMessageMetadata = this.resolveProcessedMessageMetadata(message, processingResult, messageProcessedTimestamp, messageId);
130
+ const processedMessageMetadata = this.resolveProcessedMessageMetadata(message, processingResult, params.messageProcessingStartTimestamp, messageProcessingEndTimestamp, params.queueName, messageId);
118
131
  if (debugLoggingEnabled) {
119
132
  this.logger.debug(processedMessageMetadata, `Finished processing message ${processedMessageMetadata.messageId}`);
120
133
  }
@@ -122,23 +135,28 @@ class AbstractQueueService {
122
135
  this.messageMetricsManager.registerProcessedMessage(processedMessageMetadata);
123
136
  }
124
137
  }
125
- resolveProcessedMessageMetadata(message, processingResult, messageProcessedTimestamp, messageId) {
138
+ resolveProcessedMessageMetadata(message, processingResult, messageProcessingStartTimestamp, messageProcessingEndTimestamp, queueName, messageId) {
126
139
  // @ts-ignore
127
140
  const resolvedMessageId = message?.[this.messageIdField] ?? messageId;
128
- const messageTimestamp = message ? this.tryToExtractTimestamp(message) : undefined;
129
- const messageProcessingMilliseconds = messageTimestamp
130
- ? messageProcessedTimestamp - messageTimestamp.getTime()
131
- : undefined;
141
+ const messageTimestamp = message ? this.tryToExtractTimestamp(message)?.getTime() : undefined;
132
142
  const messageType = message && this.messageTypeField in message
133
143
  ? // @ts-ignore
134
144
  message[this.messageTypeField]
135
145
  : undefined;
146
+ const messageDeduplicationId = message && this.messageDeduplicationIdField in message
147
+ ? // @ts-ignore
148
+ message[this.messageDeduplicationId]
149
+ : undefined;
136
150
  return {
137
151
  processingResult,
138
152
  messageId: resolvedMessageId ?? '(unknown id)',
139
- messageProcessingMilliseconds,
140
153
  messageType,
154
+ queueName,
141
155
  message,
156
+ messageTimestamp,
157
+ messageDeduplicationId,
158
+ messageProcessingStartTimestamp,
159
+ messageProcessingEndTimestamp,
142
160
  };
143
161
  }
144
162
  processPrehandlersInternal(preHandlers, message) {
@@ -194,7 +212,7 @@ class AbstractQueueService {
194
212
  */
195
213
  const numberOfRetries = this.tryToExtractNumberOfRetries(message);
196
214
  // @ts-ignore
197
- messageCopy[this.messageNumberOfRetriesField] =
215
+ messageCopy[this.messageRetryLaterCountField] =
198
216
  numberOfRetries !== undefined ? numberOfRetries + 1 : 0;
199
217
  return messageCopy;
200
218
  }
@@ -211,10 +229,10 @@ class AbstractQueueService {
211
229
  return undefined;
212
230
  }
213
231
  tryToExtractNumberOfRetries(message) {
214
- if (this.messageNumberOfRetriesField in message &&
215
- typeof message[this.messageNumberOfRetriesField] === 'number') {
232
+ if (this.messageRetryLaterCountField in message &&
233
+ typeof message[this.messageRetryLaterCountField] === 'number') {
216
234
  // @ts-ignore
217
- return message[this.messageNumberOfRetriesField];
235
+ return message[this.messageRetryLaterCountField];
218
236
  }
219
237
  return undefined;
220
238
  }
@@ -264,6 +282,10 @@ class AbstractQueueService {
264
282
  [this.messageTypeField]: message[this.messageTypeField],
265
283
  // @ts-ignore
266
284
  [this.messageTimestampField]: message[this.messageTimestampField],
285
+ // @ts-ignore
286
+ [this.messageDeduplicationIdField]: message[this.messageDeduplicationIdField],
287
+ // @ts-ignore
288
+ [this.messageDeduplicationOptionsField]: message[this.messageDeduplicationOptionsField],
267
289
  };
268
290
  }
269
291
  /**
@@ -298,6 +320,89 @@ class AbstractQueueService {
298
320
  return { error: new Error('Failed to parse serialized offloaded payload', { cause: e }) };
299
321
  }
300
322
  }
323
+ /**
324
+ * Checks if the message is duplicated against the deduplication store.
325
+ * Returns true if the message is duplicated.
326
+ * Returns false if message is not duplicated or deduplication config is missing.
327
+ */
328
+ async isMessageDuplicated(message, requester) {
329
+ if (!this.isDeduplicationEnabledForMessage(message)) {
330
+ return false;
331
+ }
332
+ const deduplicationId = this.getMessageDeduplicationId(message);
333
+ const deduplicationConfig = this.messageDeduplicationConfig;
334
+ try {
335
+ return await deduplicationConfig.deduplicationStore.keyExists(`${requester.toString()}:${deduplicationId}`);
336
+ }
337
+ catch (err) {
338
+ this.handleError(err);
339
+ // In case of errors, we treat the message as not duplicated to enable further processing
340
+ return false;
341
+ }
342
+ }
343
+ /**
344
+ * Checks if the message is duplicated.
345
+ * If it's not, stores the deduplication key in the deduplication store and returns false.
346
+ * If it is, returns true.
347
+ * If deduplication config is not provided, always returns false to allow further processing of the message.
348
+ */
349
+ async deduplicateMessage(message, requester) {
350
+ if (!this.isDeduplicationEnabledForMessage(message)) {
351
+ return { isDuplicated: false };
352
+ }
353
+ const deduplicationId = this.getMessageDeduplicationId(message);
354
+ const { deduplicationWindowSeconds } = this.getParsedMessageDeduplicationOptions(message);
355
+ const deduplicationConfig = this.messageDeduplicationConfig;
356
+ try {
357
+ const wasDeduplicationKeyStored = await deduplicationConfig.deduplicationStore.setIfNotExists(`${requester.toString()}:${deduplicationId}`, new Date().toISOString(), deduplicationWindowSeconds);
358
+ return { isDuplicated: !wasDeduplicationKeyStored };
359
+ }
360
+ catch (err) {
361
+ this.handleError(err);
362
+ // In case of errors, we treat the message as not duplicated to enable further processing
363
+ return { isDuplicated: false };
364
+ }
365
+ }
366
+ /**
367
+ * Acquires exclusive lock for the message to prevent concurrent processing.
368
+ * If lock was acquired successfully, returns a lock object that should be released after processing.
369
+ * If lock couldn't be acquired due to timeout (meaning another process acquired it earlier), returns AcquireLockTimeoutError
370
+ * 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.
371
+ */
372
+ async acquireLockForMessage(message) {
373
+ if (!this.isDeduplicationEnabledForMessage(message)) {
374
+ return { result: messageDeduplicationTypes_1.noopReleasableLock };
375
+ }
376
+ const deduplicationId = this.getMessageDeduplicationId(message);
377
+ const deduplicationOptions = this.getParsedMessageDeduplicationOptions(message);
378
+ const deduplicationConfig = this.messageDeduplicationConfig;
379
+ const acquireLockResult = await deduplicationConfig.deduplicationStore.acquireLock(`${messageDeduplicationTypes_1.DeduplicationRequester.Consumer.toString()}:${deduplicationId}`, deduplicationOptions);
380
+ if (acquireLockResult.error && !(acquireLockResult.error instanceof messageDeduplicationTypes_1.AcquireLockTimeoutError)) {
381
+ this.handleError(acquireLockResult.error);
382
+ return { result: messageDeduplicationTypes_1.noopReleasableLock };
383
+ }
384
+ return acquireLockResult;
385
+ }
386
+ isDeduplicationEnabledForMessage(message) {
387
+ return !!this.messageDeduplicationConfig && !!this.getMessageDeduplicationId(message);
388
+ }
389
+ getMessageDeduplicationId(message) {
390
+ // @ts-ignore
391
+ return message[this.messageDeduplicationIdField];
392
+ }
393
+ getParsedMessageDeduplicationOptions(message) {
394
+ const parsedOptions = schemas_1.MESSAGE_DEDUPLICATION_OPTIONS_SCHEMA.safeParse(
395
+ // @ts-expect-error
396
+ message[this.messageDeduplicationOptionsField] ?? {});
397
+ if (parsedOptions.error) {
398
+ this.logger.warn({ error: parsedOptions.error.message }, `${this.messageDeduplicationOptionsField} contains one or more invalid values, falling back to default options`);
399
+ return messageDeduplicationTypes_1.DEFAULT_MESSAGE_DEDUPLICATION_OPTIONS;
400
+ }
401
+ return {
402
+ ...messageDeduplicationTypes_1.DEFAULT_MESSAGE_DEDUPLICATION_OPTIONS,
403
+ ...Object.fromEntries(Object.entries(parsedOptions.data).filter(([_, value]) => value !== undefined)),
404
+ };
405
+ }
301
406
  }
302
407
  exports.AbstractQueueService = AbstractQueueService;
303
408
  //# sourceMappingURL=AbstractQueueService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractQueueService.js","sourceRoot":"","sources":["../../../lib/queues/AbstractQueueService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractQueueService.js","sourceRoot":"","sources":["../../../lib/queues/AbstractQueueService.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { MessageProcessingResult } from '../types/MessageQueueTypes';
1
+ import type { MessageProcessingResult, MessageProcessingResultStatus } from '../types/MessageQueueTypes';
2
2
  export type HandlerSpyParams = {
3
3
  bufferSize?: number;
4
4
  messageIdField?: string;
@@ -25,9 +25,9 @@ export declare class HandlerSpy<MessagePayloadSchemas extends object> {
25
25
  private readonly spyPromises;
26
26
  constructor(params?: HandlerSpyParams);
27
27
  private messageMatchesFilter;
28
- waitForMessageWithId<T extends MessagePayloadSchemas>(id: string, processingResult?: MessageProcessingResult): Promise<SpyResultOutput<T>>;
29
- checkForMessage<T extends MessagePayloadSchemas>(expectedFields: DeepPartial<T>, expectedProcessingResult?: MessageProcessingResult): SpyResultOutput<T> | undefined;
30
- waitForMessage<T extends MessagePayloadSchemas>(expectedFields: DeepPartial<T>, expectedProcessingResult?: MessageProcessingResult): Promise<SpyResultOutput<T>>;
28
+ waitForMessageWithId<T extends MessagePayloadSchemas>(id: string, status?: MessageProcessingResultStatus): Promise<SpyResultOutput<T>>;
29
+ checkForMessage<T extends MessagePayloadSchemas>(expectedFields: DeepPartial<T>, status?: MessageProcessingResultStatus): SpyResultOutput<T> | undefined;
30
+ waitForMessage<T extends MessagePayloadSchemas>(expectedFields: DeepPartial<T>, status?: MessageProcessingResultStatus): Promise<SpyResultOutput<T>>;
31
31
  clear(): void;
32
32
  addProcessedMessage(processingResult: SpyResultInput<MessagePayloadSchemas>, messageId?: string): void;
33
33
  }
@@ -26,24 +26,22 @@ class HandlerSpy {
26
26
  this.messageTypeField = params.messageTypeField ?? 'type';
27
27
  this.spyPromises = [];
28
28
  }
29
- messageMatchesFilter(spyResult, fields, processingResult) {
29
+ messageMatchesFilter(spyResult, fields, status) {
30
30
  return ((0, matchUtils_1.objectMatches)(fields, spyResult.message) &&
31
- (!processingResult || spyResult.processingResult === processingResult));
31
+ (!status || spyResult.processingResult.status === status));
32
32
  }
33
- waitForMessageWithId(id, processingResult) {
33
+ waitForMessageWithId(id, status) {
34
34
  return this.waitForMessage(
35
- // @ts-ignore
36
- {
37
- [this.messageIdField]: id,
38
- }, processingResult);
35
+ // @ts-expect-error
36
+ { [this.messageIdField]: id }, status);
39
37
  }
40
- checkForMessage(expectedFields, expectedProcessingResult) {
38
+ checkForMessage(expectedFields, status) {
41
39
  return Object.values(this.messageBuffer.items).find((spyResult) => {
42
- return this.messageMatchesFilter(spyResult.value, expectedFields, expectedProcessingResult);
40
+ return this.messageMatchesFilter(spyResult.value, expectedFields, status);
43
41
  })?.value;
44
42
  }
45
- waitForMessage(expectedFields, expectedProcessingResult) {
46
- const processedMessageEntry = this.checkForMessage(expectedFields, expectedProcessingResult);
43
+ waitForMessage(expectedFields, status) {
44
+ const processedMessageEntry = this.checkForMessage(expectedFields, status);
47
45
  if (processedMessageEntry) {
48
46
  return Promise.resolve(processedMessageEntry);
49
47
  }
@@ -53,7 +51,7 @@ class HandlerSpy {
53
51
  });
54
52
  this.spyPromises.push({
55
53
  promise: spyPromise,
56
- processingResult: expectedProcessingResult,
54
+ status,
57
55
  fields: expectedFields,
58
56
  // @ts-ignore
59
57
  resolve,
@@ -83,7 +81,7 @@ class HandlerSpy {
83
81
  .substring(7)}`;
84
82
  this.messageBuffer.set(cacheId, resolvedProcessingResult);
85
83
  const foundPromise = this.spyPromises.find((spyPromise) => {
86
- return this.messageMatchesFilter(resolvedProcessingResult, spyPromise.fields, spyPromise.processingResult);
84
+ return this.messageMatchesFilter(resolvedProcessingResult, spyPromise.fields, spyPromise.status);
87
85
  });
88
86
  if (foundPromise) {
89
87
  // eslint-disable-next-line @typescript-eslint/no-unsafe-call
@@ -1 +1 @@
1
- {"version":3,"file":"HandlerSpy.js","sourceRoot":"","sources":["../../../lib/queues/HandlerSpy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HandlerSpy.js","sourceRoot":"","sources":["../../../lib/queues/HandlerSpy.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,16 @@ export interface QueueConsumer {
5
5
  start(): Promise<unknown>;
6
6
  close(): Promise<unknown>;
7
7
  }
8
- export type MessageProcessingResult = 'retryLater' | 'consumed' | 'published' | 'error' | 'invalid_message';
8
+ export type MessageProcessingResult = {
9
+ status: 'retryLater';
10
+ } | {
11
+ status: 'consumed' | 'published';
12
+ skippedAsDuplicate?: boolean;
13
+ } | {
14
+ status: 'error';
15
+ errorReason: 'invalidMessage' | 'handlerError' | 'retryLaterExceeded';
16
+ };
17
+ export type MessageProcessingResultStatus = MessageProcessingResult['status'];
9
18
  export interface SyncPublisher<MessagePayloadType extends object, MessageOptions> {
10
19
  handlerSpy: PublicHandlerSpy<MessagePayloadType>;
11
20
  publish(message: MessagePayloadType, options: MessageOptions): void;
@@ -3,6 +3,7 @@ import type { ZodSchema } from 'zod';
3
3
  import type { PayloadStoreConfig } from '../payload-store/payloadStoreTypes';
4
4
  import type { MessageHandlerConfig } from '../queues/HandlerContainer';
5
5
  import type { HandlerSpy, HandlerSpyParams } from '../queues/HandlerSpy';
6
+ import type { MessageDeduplicationConfig } from '../message-deduplication/messageDeduplicationTypes';
6
7
  import type { MessageProcessingResult, TransactionObservabilityManager } from './MessageQueueTypes';
7
8
  export type QueueDependencies = {
8
9
  errorReporter: ErrorReporter;
@@ -27,9 +28,26 @@ export type ProcessedMessageMetadata<MessagePayloadSchemas extends object = obje
27
28
  */
28
29
  message: MessagePayloadSchemas | null;
29
30
  /**
30
- * Processing time in milliseconds
31
+ * Name of the queue processing the message
31
32
  */
32
- messageProcessingMilliseconds?: number;
33
+ queueName: string;
34
+ /**
35
+ * The timestamp when the message was sent initially, in milliseconds since the epoch
36
+ */
37
+ messageTimestamp: number | undefined;
38
+ /**
39
+ * The timestamp when the processing of the message began, in milliseconds since the epoch
40
+ * Note: for publishers the value may be smaller than messageTimestamp
41
+ */
42
+ messageProcessingStartTimestamp: number;
43
+ /**
44
+ * The timestamp when the processing of the message ended, in milliseconds since the epoch
45
+ */
46
+ messageProcessingEndTimestamp: number;
47
+ /**
48
+ * ID used for the message deduplication, in case it's enabled
49
+ */
50
+ messageDeduplicationId?: string;
33
51
  };
34
52
  export interface MessageMetricsManager<MessagePayloadSchemas extends object = object> {
35
53
  /**
@@ -46,10 +64,13 @@ export type CommonQueueOptions = {
46
64
  messageTypeField: string;
47
65
  messageIdField?: string;
48
66
  messageTimestampField?: string;
67
+ messageDeduplicationIdField?: string;
68
+ messageDeduplicationOptionsField?: string;
49
69
  handlerSpy?: HandlerSpy<object> | HandlerSpyParams | boolean;
50
70
  logMessages?: boolean;
51
71
  deletionConfig?: DeletionConfig;
52
72
  payloadStoreConfig?: PayloadStoreConfig;
73
+ messageDeduplicationConfig?: MessageDeduplicationConfig;
53
74
  };
54
75
  export type CommonCreationConfigType = {
55
76
  updateAttributesIfExists?: boolean;
@@ -68,6 +89,7 @@ type ExistingQueueOptions<QueueLocatorType extends object> = {
68
89
  export type QueueOptions<CreationConfigType extends CommonCreationConfigType, QueueLocatorType extends object> = CommonQueueOptions & (NewQueueOptions<CreationConfigType> & ExistingQueueOptions<QueueLocatorType>);
69
90
  export type QueuePublisherOptions<CreationConfigType extends CommonCreationConfigType, QueueLocatorType extends object, MessagePayloadSchemas extends object> = QueueOptions<CreationConfigType, QueueLocatorType> & {
70
91
  messageSchemas: readonly ZodSchema<MessagePayloadSchemas>[];
92
+ enablePublisherDeduplication?: boolean;
71
93
  };
72
94
  export type DeadLetterQueueOptions<CreationConfigType extends object, QueueLocatorType extends object, DeadLetterQueueIntegrationOptions extends object> = {
73
95
  deletionConfig?: DeletionConfig;
@@ -76,5 +98,6 @@ export type QueueConsumerOptions<CreationConfigType extends object, QueueLocator
76
98
  handlers: MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>[];
77
99
  deadLetterQueue?: DeadLetterQueueOptions<DeadLetterQueueCreationConfigType, DeadLetterQueueQueueLocatorType, DeadLetterQueueIntegrationOptions>;
78
100
  maxRetryDuration?: number;
101
+ enableConsumerDeduplication?: boolean;
79
102
  };
80
103
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@message-queue-toolkit/core",
3
- "version": "18.1.0",
3
+ "version": "20.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",
@@ -26,7 +26,7 @@
26
26
  },
27
27
  "dependencies": {
28
28
  "@lokalise/node-core": "^13.3.0",
29
- "@message-queue-toolkit/schemas": "^4.0.0",
29
+ "@message-queue-toolkit/schemas": "^5.0.0",
30
30
  "fast-equals": "^5.0.1",
31
31
  "json-stream-stringify": "^3.1.6",
32
32
  "tmp": "^0.2.3",
@@ -38,12 +38,12 @@
38
38
  "@kibertoad/biome-config": "^1.2.1",
39
39
  "@types/node": "^22.7.5",
40
40
  "@types/tmp": "^0.2.6",
41
- "@vitest/coverage-v8": "^2.1.5",
41
+ "@vitest/coverage-v8": "^3.0.7",
42
42
  "awilix": "^12.0.1",
43
- "awilix-manager": "^5.4.0",
43
+ "awilix-manager": "^6.0.0",
44
44
  "del-cli": "^6.0.0",
45
45
  "typescript": "^5.7.2",
46
- "vitest": "^2.1.5"
46
+ "vitest": "^3.0.7"
47
47
  },
48
48
  "homepage": "https://github.com/kibertoad/message-queue-toolkit",
49
49
  "repository": {