@message-queue-toolkit/core 24.0.0 → 25.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.
@@ -4,6 +4,7 @@ import type { MessageDeduplicationConfig } from '../message-deduplication/messag
4
4
  import type { PayloadStoreConfig } from '../payload-store/payloadStoreTypes.ts';
5
5
  import type { MessageHandlerConfig } from '../queues/HandlerContainer.ts';
6
6
  import type { HandlerSpy, HandlerSpyParams } from '../queues/HandlerSpy.ts';
7
+ import type { MessageTypeResolverConfig } from '../queues/MessageTypeResolver.ts';
7
8
  import type { MessageProcessingResult, TransactionObservabilityManager } from './MessageQueueTypes.ts';
8
9
  export type QueueDependencies = {
9
10
  errorReporter: ErrorReporter;
@@ -16,9 +17,10 @@ export type ProcessedMessageMetadata<MessagePayloadSchemas extends object = obje
16
17
  */
17
18
  messageId: string;
18
19
  /**
19
- * Message type accessed by `messageTypeField`
20
+ * Message type resolved by `messageTypeResolver`.
21
+ * May be undefined if messageTypeResolver is not configured.
20
22
  */
21
- messageType: string;
23
+ messageType?: string;
22
24
  /**
23
25
  * Processing result status
24
26
  */
@@ -60,8 +62,38 @@ export type QueueConsumerDependencies = {
60
62
  consumerErrorResolver: ErrorResolver;
61
63
  transactionObservabilityManager: TransactionObservabilityManager;
62
64
  };
65
+ /**
66
+ * Common queue options for publishers and consumers.
67
+ *
68
+ * Message type resolution is configured via `messageTypeResolver`.
69
+ * At least one must be provided for routing to work (unless using a single handler).
70
+ */
63
71
  export type CommonQueueOptions = {
64
- messageTypeField: string;
72
+ /**
73
+ * Configuration for resolving message types.
74
+ *
75
+ * Supports three modes:
76
+ * - `{ messageTypePath: string }` - field name at the root of the message
77
+ * - `{ literal: string }` - constant type for all messages
78
+ * - `{ resolver: fn }` - custom function for complex scenarios (e.g., extracting from attributes)
79
+ *
80
+ * @example
81
+ * // Field path - extracts type from message.type
82
+ * { messageTypeResolver: { messageTypePath: 'type' } }
83
+ *
84
+ * @example
85
+ * // Constant type - all messages treated as same type
86
+ * { messageTypeResolver: { literal: 'order.created' } }
87
+ *
88
+ * @example
89
+ * // Custom resolver for Cloud Storage notifications via PubSub
90
+ * {
91
+ * messageTypeResolver: {
92
+ * resolver: ({ messageAttributes }) => messageAttributes?.eventType as string
93
+ * }
94
+ * }
95
+ */
96
+ messageTypeResolver?: MessageTypeResolverConfig;
65
97
  messageIdField?: string;
66
98
  messageTimestampField?: string;
67
99
  messageDeduplicationIdField?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@message-queue-toolkit/core",
3
- "version": "24.0.0",
3
+ "version": "25.0.0",
4
4
  "license": "MIT",
5
5
  "description": "Useful utilities, interfaces and base classes for message queue handling. Supports AMQP and SQS with a common abstraction on top currently",
6
6
  "maintainers": [
@@ -28,6 +28,7 @@
28
28
  "@lokalise/node-core": "^14.2.0",
29
29
  "@lokalise/universal-ts-utils": "^4.5.1",
30
30
  "@message-queue-toolkit/schemas": "^7.0.0",
31
+ "dot-prop": "^10.1.0",
31
32
  "fast-equals": "^5.2.2",
32
33
  "json-stream-stringify": "^3.1.6",
33
34
  "tmp": "^0.2.3",
@@ -37,10 +38,10 @@
37
38
  "zod": ">=3.25.76 <5.0.0"
38
39
  },
39
40
  "devDependencies": {
40
- "@biomejs/biome": "^2.3.6",
41
+ "@biomejs/biome": "^2.3.8",
41
42
  "@lokalise/biome-config": "^3.1.0",
42
43
  "@lokalise/tsconfig": "^3.0.0",
43
- "@types/node": "^24.0.3",
44
+ "@types/node": "^24.10.1",
44
45
  "@types/tmp": "^0.2.6",
45
46
  "@vitest/coverage-v8": "^3.2.4",
46
47
  "awilix": "^12.0.5",
@@ -48,7 +49,7 @@
48
49
  "rimraf": "^6.0.1",
49
50
  "typescript": "^5.9.2",
50
51
  "vitest": "^3.2.4",
51
- "zod": "^4.0.17"
52
+ "zod": "^4.1.13"
52
53
  },
53
54
  "homepage": "https://github.com/kibertoad/message-queue-toolkit",
54
55
  "repository": {