@message-queue-toolkit/core 3.6.0 → 4.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
@@ -1,8 +1,8 @@
1
- export type { QueueConsumer, AsyncPublisher, SyncPublisher, TransactionObservabilityManager, Logger, SchemaMap, } from './lib/types/MessageQueueTypes';
1
+ export type { QueueConsumer, AsyncPublisher, SyncPublisher, TransactionObservabilityManager, Logger, LogFn, SchemaMap, ExtraParams, } from './lib/types/MessageQueueTypes';
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, BarrierCallbackMultiConsumers, } from './lib/queues/HandlerContainer';
5
+ export { HandlerContainer, MessageHandlerConfig, MessageHandlerConfigBuilder, BarrierCallbackMultiConsumers, BarrierResult, BarrierResultPositive, BarrierResultNegative, } 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,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"}
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,kEAQsC;AAPpC,oHAAA,gBAAgB,OAAA;AAChB,wHAAA,oBAAoB,OAAA;AACpB,+HAAA,2BAA2B,OAAA;AAQ7B,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,34 +1,43 @@
1
1
  import type { Either } from '@lokalise/node-core';
2
2
  import type { ZodSchema } from 'zod';
3
3
  export type LogFormatter<MessagePayloadSchema> = (message: MessagePayloadSchema) => unknown;
4
- export type BarrierCallbackMultiConsumers<MessagePayloadSchema extends object, ExecutionContext> = (message: MessagePayloadSchema, context: ExecutionContext) => Promise<boolean>;
4
+ export type BarrierResult<BarrierOutput> = BarrierResultPositive<BarrierOutput> | BarrierResultNegative;
5
+ export type BarrierResultPositive<BarrierOutput> = {
6
+ isPassing: true;
7
+ output: BarrierOutput;
8
+ };
9
+ export type BarrierResultNegative = {
10
+ isPassing: false;
11
+ output?: never;
12
+ };
13
+ export type BarrierCallbackMultiConsumers<MessagePayloadSchema extends object, ExecutionContext, BarrierOutput> = (message: MessagePayloadSchema, context: ExecutionContext) => Promise<BarrierResult<BarrierOutput>>;
5
14
  export declare const defaultLogFormatter: <MessagePayloadSchema>(message: MessagePayloadSchema) => MessagePayloadSchema;
6
- export type HandlerConfigOptions<MessagePayloadSchema extends object, ExecutionContext> = {
15
+ export type HandlerConfigOptions<MessagePayloadSchema extends object, ExecutionContext, BarrierOutput> = {
7
16
  messageLogFormatter?: LogFormatter<MessagePayloadSchema>;
8
- preHandlerBarrier?: BarrierCallbackMultiConsumers<MessagePayloadSchema, ExecutionContext>;
17
+ preHandlerBarrier?: BarrierCallbackMultiConsumers<MessagePayloadSchema, ExecutionContext, BarrierOutput>;
9
18
  };
10
- export declare class MessageHandlerConfig<const MessagePayloadSchema extends object, const ExecutionContext> {
19
+ export declare class MessageHandlerConfig<const MessagePayloadSchema extends object, const ExecutionContext, const BarrierOutput = unknown> {
11
20
  readonly schema: ZodSchema<MessagePayloadSchema>;
12
- readonly handler: Handler<MessagePayloadSchema, ExecutionContext>;
21
+ readonly handler: Handler<MessagePayloadSchema, ExecutionContext, BarrierOutput>;
13
22
  readonly messageLogFormatter: LogFormatter<MessagePayloadSchema>;
14
- readonly preHandlerBarrier?: BarrierCallbackMultiConsumers<MessagePayloadSchema, ExecutionContext>;
15
- constructor(schema: ZodSchema<MessagePayloadSchema>, handler: Handler<MessagePayloadSchema, ExecutionContext>, options?: HandlerConfigOptions<MessagePayloadSchema, ExecutionContext>);
23
+ readonly preHandlerBarrier?: BarrierCallbackMultiConsumers<MessagePayloadSchema, ExecutionContext, BarrierOutput>;
24
+ constructor(schema: ZodSchema<MessagePayloadSchema>, handler: Handler<MessagePayloadSchema, ExecutionContext, BarrierOutput>, options?: HandlerConfigOptions<MessagePayloadSchema, ExecutionContext, BarrierOutput>);
16
25
  }
17
26
  export declare class MessageHandlerConfigBuilder<MessagePayloadSchemas extends object, ExecutionContext> {
18
27
  private readonly configs;
19
28
  constructor();
20
- addConfig<MessagePayloadSchema extends MessagePayloadSchemas>(schema: ZodSchema<MessagePayloadSchema>, handler: Handler<MessagePayloadSchema, ExecutionContext>, options?: HandlerConfigOptions<MessagePayloadSchema, ExecutionContext>): this;
21
- build(): MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext>[];
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>[];
22
31
  }
23
- export type Handler<MessagePayloadSchemas, ExecutionContext> = (message: MessagePayloadSchemas, context: ExecutionContext) => Promise<Either<'retryLater', 'success'>>;
32
+ export type Handler<MessagePayloadSchemas, ExecutionContext, BarrierOutput = undefined> = (message: MessagePayloadSchemas, context: ExecutionContext, barrierOutput: BarrierOutput) => Promise<Either<'retryLater', 'success'>>;
24
33
  export type HandlerContainerOptions<MessagePayloadSchemas extends object, ExecutionContext> = {
25
- messageHandlers: MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext>[];
34
+ messageHandlers: MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext, unknown>[];
26
35
  messageTypeField: string;
27
36
  };
28
37
  export declare class HandlerContainer<MessagePayloadSchemas extends object, ExecutionContext> {
29
38
  private readonly messageHandlers;
30
39
  private readonly messageTypeField;
31
40
  constructor(options: HandlerContainerOptions<MessagePayloadSchemas, ExecutionContext>);
32
- resolveHandler(messageType: string): MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext>;
41
+ resolveHandler<BarrierResult>(messageType: string): MessageHandlerConfig<MessagePayloadSchemas, ExecutionContext, BarrierResult>;
33
42
  private resolveHandlerMap;
34
43
  }
@@ -17,13 +17,15 @@ class MessageHandlerConfig {
17
17
  }
18
18
  exports.MessageHandlerConfig = MessageHandlerConfig;
19
19
  class MessageHandlerConfigBuilder {
20
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
21
  configs;
21
22
  constructor() {
22
23
  this.configs = [];
23
24
  }
24
25
  addConfig(schema, handler, options) {
26
+ this.configs.push(new MessageHandlerConfig(schema,
25
27
  // @ts-ignore
26
- this.configs.push(new MessageHandlerConfig(schema, handler, options));
28
+ handler, options));
27
29
  return this;
28
30
  }
29
31
  build() {
@@ -38,12 +40,12 @@ class HandlerContainer {
38
40
  this.messageTypeField = options.messageTypeField;
39
41
  this.messageHandlers = this.resolveHandlerMap(options.messageHandlers);
40
42
  }
41
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
43
  resolveHandler(messageType) {
43
44
  const handler = this.messageHandlers[messageType];
44
45
  if (!handler) {
45
46
  throw new Error(`Unsupported message type: ${messageType}`);
46
47
  }
48
+ // @ts-ignore
47
49
  return handler;
48
50
  }
49
51
  resolveHandlerMap(supportedHandlers) {
@@ -1 +1 @@
1
- {"version":3,"file":"HandlerContainer.js","sourceRoot":"","sources":["../../../lib/queues/HandlerContainer.ts"],"names":[],"mappings":";;;AAUO,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,CAGhC;IAED,YACE,MAAuC,EACvC,OAAwD,EACxD,OAAsE;QAEtE,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;AAtBD,oDAsBC;AAED,MAAa,2BAA2B;IACrB,OAAO,CAAiE;IAEzF;QACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,CAAC;IAED,SAAS,CACP,MAAuC,EACvC,OAAwD,EACxD,OAAsE;QAEtE,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"}
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;YACZ,MAAM,IAAI,KAAK,CAAC,6BAA6B,WAAW,EAAE,CAAC,CAAA;SAC5D;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"}
@@ -18,6 +18,9 @@ export type LogFn = {
18
18
  (obj: unknown, msg?: string, ...args: any[]): void;
19
19
  (msg: string, ...args: any[]): void;
20
20
  };
21
+ export type ExtraParams = {
22
+ logger?: Logger;
23
+ };
21
24
  export type Logger = {
22
25
  error: LogFn;
23
26
  info: LogFn;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@message-queue-toolkit/core",
3
- "version": "3.6.0",
3
+ "version": "4.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,16 +26,16 @@
26
26
  },
27
27
  "dependencies": {},
28
28
  "devDependencies": {
29
- "@types/node": "^20.4.1",
30
- "@typescript-eslint/eslint-plugin": "^6.2.1",
31
- "@typescript-eslint/parser": "^6.2.1",
29
+ "@types/node": "^20.7.0",
30
+ "@typescript-eslint/eslint-plugin": "^6.7.3",
31
+ "@typescript-eslint/parser": "^6.7.3",
32
32
  "del-cli": "^5.0.0",
33
33
  "eslint": "^8.44.0",
34
34
  "eslint-config-prettier": "^9.0.0",
35
35
  "eslint-plugin-import": "^2.27.5",
36
36
  "eslint-plugin-prettier": "^5.0.0",
37
37
  "prettier": "^3.0.0",
38
- "typescript": "^5.1.6"
38
+ "typescript": "^5.2.2"
39
39
  },
40
40
  "homepage": "https://github.com/kibertoad/message-queue-toolkit",
41
41
  "repository": {