@message-queue-toolkit/core 3.3.0 → 3.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/index.d.ts CHANGED
@@ -2,7 +2,7 @@ export type { QueueConsumer, AsyncPublisher, SyncPublisher, TransactionObservabi
2
2
  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
- export { HandlerContainer, MessageHandlerConfig, MessageHandlerConfigBuilder, } from './lib/queues/HandlerContainer';
5
+ export { HandlerContainer, MessageHandlerConfig, MessageHandlerConfigBuilder, BarrierCallbackWithoutMessageType, } from './lib/queues/HandlerContainer';
6
6
  export type { HandlerContainerOptions, Handler } from './lib/queues/HandlerContainer';
7
7
  export { MessageSchemaContainer } from './lib/queues/MessageSchemaContainer';
8
8
  export type { MessageSchemaContainerOptions } from './lib/queues/MessageSchemaContainer';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AASA,0EAAwE;AAA/D,4HAAA,oBAAoB,OAAA;AAgB7B,8CAI4B;AAH1B,wGAAA,cAAc,OAAA;AACd,gHAAA,sBAAsB,OAAA;AACtB,mHAAA,yBAAyB,OAAA;AAG3B,kEAIsC;AAHpC,oHAAA,gBAAgB,OAAA;AAChB,wHAAA,oBAAoB,OAAA;AACpB,+HAAA,2BAA2B,OAAA;AAI7B,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":";;;AASA,0EAAwE;AAA/D,4HAAA,oBAAoB,OAAA;AAgB7B,8CAI4B;AAH1B,wGAAA,cAAc,OAAA;AACd,gHAAA,sBAAsB,OAAA;AACtB,mHAAA,yBAAyB,OAAA;AAG3B,kEAKsC;AAJpC,oHAAA,gBAAgB,OAAA;AAChB,wHAAA,oBAAoB,OAAA;AACpB,+HAAA,2BAA2B,OAAA;AAK7B,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"}
@@ -18,18 +18,21 @@ export type DeletionConfig = {
18
18
  deleteIfExists?: boolean;
19
19
  forceDeleteInProduction?: boolean;
20
20
  };
21
+ export type CommonQueueOptions = {
22
+ logMessages?: boolean;
23
+ };
21
24
  export type NewQueueOptions<CreationConfigType extends object> = {
22
25
  messageTypeField: string;
23
26
  locatorConfig?: never;
24
27
  deletionConfig?: DeletionConfig;
25
28
  creationConfig: CreationConfigType;
26
- };
29
+ } & CommonQueueOptions;
27
30
  export type ExistingQueueOptions<QueueLocatorType extends object> = {
28
31
  messageTypeField: string;
29
32
  locatorConfig: QueueLocatorType;
30
33
  deletionConfig?: DeletionConfig;
31
34
  creationConfig?: never;
32
- };
35
+ } & CommonQueueOptions;
33
36
  export type MultiSchemaPublisherOptions<MessagePayloadSchemas extends object> = {
34
37
  messageSchemas: readonly ZodSchema<MessagePayloadSchemas>[];
35
38
  };
@@ -46,12 +49,21 @@ export declare abstract class AbstractQueueService<MessagePayloadSchemas extends
46
49
  protected readonly errorReporter: ErrorReporter;
47
50
  readonly logger: Logger;
48
51
  protected readonly messageTypeField: string;
52
+ protected readonly logMessages: boolean;
49
53
  protected readonly creationConfig?: QueueConfiguration;
50
54
  protected readonly locatorConfig?: QueueLocatorType;
51
55
  protected readonly deletionConfig?: DeletionConfig;
52
56
  constructor({ errorReporter, logger }: DependenciesType, options: OptionsType);
53
57
  protected abstract resolveSchema(message: MessagePayloadSchemas): Either<Error, ZodSchema<MessagePayloadSchemas>>;
54
58
  protected abstract resolveMessage(message: MessageEnvelopeType): Either<MessageInvalidFormatError | MessageValidationError, unknown>;
59
+ /**
60
+ * Format message for logging
61
+ */
62
+ protected resolveMessageLog(message: MessagePayloadSchemas, _messageType: string): unknown;
63
+ /**
64
+ * Log preformatted and potentially presanitized message payload
65
+ */
66
+ protected logMessage(messageLogEntry: unknown): void;
55
67
  protected handleError(err: unknown): void;
56
68
  abstract close(): Promise<unknown>;
57
69
  }
@@ -7,6 +7,7 @@ class AbstractQueueService {
7
7
  errorReporter;
8
8
  logger;
9
9
  messageTypeField;
10
+ logMessages;
10
11
  creationConfig;
11
12
  locatorConfig;
12
13
  deletionConfig;
@@ -17,6 +18,19 @@ class AbstractQueueService {
17
18
  this.creationConfig = options.creationConfig;
18
19
  this.locatorConfig = options.locatorConfig;
19
20
  this.deletionConfig = options.deletionConfig;
21
+ this.logMessages = options.logMessages ?? false;
22
+ }
23
+ /**
24
+ * Format message for logging
25
+ */
26
+ resolveMessageLog(message, _messageType) {
27
+ return message;
28
+ }
29
+ /**
30
+ * Log preformatted and potentially presanitized message payload
31
+ */
32
+ logMessage(messageLogEntry) {
33
+ this.logger.debug(messageLogEntry);
20
34
  }
21
35
  handleError(err) {
22
36
  const logObject = (0, node_core_1.resolveGlobalErrorLogObject)(err);
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractQueueService.js","sourceRoot":"","sources":["../../../lib/queues/AbstractQueueService.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAGjC,mDAAiE;AAyEjE,MAAsB,oBAAoB;IAYrB,aAAa,CAAe;IAC/B,MAAM,CAAQ;IACX,gBAAgB,CAAQ;IACxB,cAAc,CAAqB;IACnC,aAAa,CAAmB;IAChC,cAAc,CAAiB;IAElD,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,CAAA;QAC5C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAA;QAC1C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAA;IAC9C,CAAC;IASS,WAAW,CAAC,GAAY;QAChC,MAAM,SAAS,GAAG,IAAA,uCAA2B,EAAC,GAAG,CAAC,CAAA;QAClD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC5B,IAAI,iBAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;YAC5B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;SAC1C;IACH,CAAC;CAGF;AA7CD,oDA6CC"}
1
+ {"version":3,"file":"AbstractQueueService.js","sourceRoot":"","sources":["../../../lib/queues/AbstractQueueService.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAGjC,mDAAiE;AA6EjE,MAAsB,oBAAoB;IAYrB,aAAa,CAAe;IAC/B,MAAM,CAAQ;IACX,gBAAgB,CAAQ;IACxB,WAAW,CAAS;IACpB,cAAc,CAAqB;IACnC,aAAa,CAAmB;IAChC,cAAc,CAAiB;IAElD,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,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;IACjD,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;QAChC,MAAM,SAAS,GAAG,IAAA,uCAA2B,EAAC,GAAG,CAAC,CAAA;QAClD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC5B,IAAI,iBAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE;YAC5B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;SAC1C;IACH,CAAC;CAGF;AA/DD,oDA+DC"}
@@ -1,14 +1,23 @@
1
1
  import type { Either } from '@lokalise/node-core';
2
2
  import type { ZodSchema } from 'zod';
3
- export declare class MessageHandlerConfig<const MessagePayloadSchemas, const ExecutionContext> {
4
- readonly schema: ZodSchema<MessagePayloadSchemas>;
5
- readonly handler: Handler<MessagePayloadSchemas, ExecutionContext>;
6
- constructor(schema: ZodSchema<MessagePayloadSchemas>, handler: Handler<MessagePayloadSchemas, ExecutionContext>);
3
+ export type LogFormatter<MessagePayloadSchema> = (message: MessagePayloadSchema) => unknown;
4
+ export type BarrierCallbackWithoutMessageType<MessagePayloadSchema extends object> = (message: MessagePayloadSchema) => Promise<boolean>;
5
+ export declare const defaultLogFormatter: <MessagePayloadSchema>(message: MessagePayloadSchema) => MessagePayloadSchema;
6
+ export type HandlerConfigOptions<MessagePayloadSchema extends object> = {
7
+ messageLogFormatter?: LogFormatter<MessagePayloadSchema>;
8
+ preHandlerBarrier?: BarrierCallbackWithoutMessageType<MessagePayloadSchema>;
9
+ };
10
+ export declare class MessageHandlerConfig<const MessagePayloadSchema extends object, const ExecutionContext> {
11
+ readonly schema: ZodSchema<MessagePayloadSchema>;
12
+ readonly handler: Handler<MessagePayloadSchema, ExecutionContext>;
13
+ readonly messageLogFormatter: LogFormatter<MessagePayloadSchema>;
14
+ readonly preHandlerBarrier?: BarrierCallbackWithoutMessageType<MessagePayloadSchema>;
15
+ constructor(schema: ZodSchema<MessagePayloadSchema>, handler: Handler<MessagePayloadSchema, ExecutionContext>, options?: HandlerConfigOptions<MessagePayloadSchema>);
7
16
  }
8
- export declare class MessageHandlerConfigBuilder<MessagePayloadSchemas, ExecutionContext> {
17
+ export declare class MessageHandlerConfigBuilder<MessagePayloadSchemas extends object, ExecutionContext> {
9
18
  private readonly configs;
10
19
  constructor();
11
- addConfig<MessagePayloadSchema extends MessagePayloadSchemas>(schema: ZodSchema<MessagePayloadSchema>, handler: Handler<MessagePayloadSchema, ExecutionContext>): this;
20
+ addConfig<MessagePayloadSchema extends MessagePayloadSchemas>(schema: ZodSchema<MessagePayloadSchema>, handler: Handler<MessagePayloadSchema, ExecutionContext>, options?: HandlerConfigOptions<MessagePayloadSchema>): this;
12
21
  build(): MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext>[];
13
22
  }
14
23
  export type Handler<MessagePayloadSchemas, ExecutionContext> = (message: MessagePayloadSchemas, context: ExecutionContext) => Promise<Either<'retryLater', 'success'>>;
@@ -20,6 +29,6 @@ export declare class HandlerContainer<MessagePayloadSchemas extends object, Exec
20
29
  private readonly messageHandlers;
21
30
  private readonly messageTypeField;
22
31
  constructor(options: HandlerContainerOptions<MessagePayloadSchemas, ExecutionContext>);
23
- resolveHandler(messageType: string): Handler<MessagePayloadSchemas, ExecutionContext>;
32
+ resolveHandler(messageType: string): MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext>;
24
33
  private resolveHandlerMap;
25
34
  }
@@ -1,12 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HandlerContainer = exports.MessageHandlerConfigBuilder = exports.MessageHandlerConfig = void 0;
3
+ exports.HandlerContainer = exports.MessageHandlerConfigBuilder = exports.MessageHandlerConfig = exports.defaultLogFormatter = void 0;
4
+ const defaultLogFormatter = (message) => message;
5
+ exports.defaultLogFormatter = defaultLogFormatter;
4
6
  class MessageHandlerConfig {
5
7
  schema;
6
8
  handler;
7
- constructor(schema, handler) {
9
+ messageLogFormatter;
10
+ preHandlerBarrier;
11
+ constructor(schema, handler, options) {
8
12
  this.schema = schema;
9
13
  this.handler = handler;
14
+ this.messageLogFormatter = options?.messageLogFormatter ?? exports.defaultLogFormatter;
15
+ this.preHandlerBarrier = options?.preHandlerBarrier;
10
16
  }
11
17
  }
12
18
  exports.MessageHandlerConfig = MessageHandlerConfig;
@@ -15,9 +21,9 @@ class MessageHandlerConfigBuilder {
15
21
  constructor() {
16
22
  this.configs = [];
17
23
  }
18
- addConfig(schema, handler) {
24
+ addConfig(schema, handler, options) {
19
25
  // @ts-ignore
20
- this.configs.push(new MessageHandlerConfig(schema, handler));
26
+ this.configs.push(new MessageHandlerConfig(schema, handler, options));
21
27
  return this;
22
28
  }
23
29
  build() {
@@ -44,7 +50,7 @@ class HandlerContainer {
44
50
  return supportedHandlers.reduce((acc, entry) => {
45
51
  // @ts-ignore
46
52
  const messageType = entry.schema.shape[this.messageTypeField].value;
47
- acc[messageType] = entry.handler;
53
+ acc[messageType] = entry;
48
54
  return acc;
49
55
  }, {});
50
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"HandlerContainer.js","sourceRoot":"","sources":["../../../lib/queues/HandlerContainer.ts"],"names":[],"mappings":";;;AAGA,MAAa,oBAAoB;IACf,MAAM,CAAkC;IACxC,OAAO,CAAkD;IAEzE,YACE,MAAwC,EACxC,OAAyD;QAEzD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;CACF;AAXD,oDAWC;AAED,MAAa,2BAA2B;IACrB,OAAO,CAAiE;IAEzF;QACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,CAAC;IAED,SAAS,CACP,MAAuC,EACvC,OAAwD;QAExD,aAAa;QACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;QAC5D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;CACF;AAnBD,kEAmBC;AAYD,MAAa,gBAAgB;IACV,eAAe,CAAkE;IACjF,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;IAED,8DAA8D;IACvD,cAAc,CAAC,WAAmB;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;QACjD,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,6BAA6B,WAAW,EAAE,CAAC,CAAA;SAC5D;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,iBAAiB,CACvB,iBAAkF;QAElF,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,CAAC,OAAO,CAAA;YAChC,OAAO,GAAG,CAAA;QACZ,CAAC,EACD,EAAsE,CACvE,CAAA;IACH,CAAC;CACF;AA/BD,4CA+BC"}
1
+ {"version":3,"file":"HandlerContainer.js","sourceRoot":"","sources":["../../../lib/queues/HandlerContainer.ts"],"names":[],"mappings":";;;AASO,MAAM,mBAAmB,GAAG,CAAuB,OAA6B,EAAE,EAAE,CAAC,OAAO,CAAA;AAAtF,QAAA,mBAAmB,uBAAmE;AAOnG,MAAa,oBAAoB;IAIf,MAAM,CAAiC;IACvC,OAAO,CAAiD;IACxD,mBAAmB,CAAoC;IACvD,iBAAiB,CAA0D;IAE3F,YACE,MAAuC,EACvC,OAAwD,EACxD,OAAoD;QAEpD,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;AAnBD,oDAmBC;AAED,MAAa,2BAA2B;IACrB,OAAO,CAAiE;IAEzF;QACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,CAAC;IAED,SAAS,CACP,MAAuC,EACvC,OAAwD,EACxD,OAAoD;QAEpD,aAAa;QACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;QACrE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;CACF;AApBD,kEAoBC;AAYD,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;IAED,8DAA8D;IACvD,cAAc,CACnB,WAAmB;QAEnB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;QACjD,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,6BAA6B,WAAW,EAAE,CAAC,CAAA;SAC5D;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAEO,iBAAiB,CACvB,iBAAkF;QAElF,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,EAAmF,CACpF,CAAA;IACH,CAAC;CACF;AApCD,4CAoCC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@message-queue-toolkit/core",
3
- "version": "3.3.0",
3
+ "version": "3.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",