@amqp-contract/contract 0.4.0 → 0.6.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/builder.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/builder.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -103,6 +103,25 @@ type TopicExchangeDefinition = BaseExchangeDefinition & {
103
103
  * Represents any type of AMQP exchange: fanout, direct, or topic.
104
104
  */
105
105
  type ExchangeDefinition = FanoutExchangeDefinition | DirectExchangeDefinition | TopicExchangeDefinition;
106
+ /**
107
+ * Configuration for dead letter exchange (DLX) on a queue.
108
+ *
109
+ * When a message in a queue is rejected, expires, or exceeds the queue length limit,
110
+ * it can be automatically forwarded to a dead letter exchange for further processing
111
+ * or storage.
112
+ */
113
+ type DeadLetterConfig = {
114
+ /**
115
+ * The exchange to send dead-lettered messages to.
116
+ * This exchange must be declared in the contract.
117
+ */
118
+ exchange: ExchangeDefinition;
119
+ /**
120
+ * Optional routing key to use when forwarding messages to the dead letter exchange.
121
+ * If not specified, the original message routing key is used.
122
+ */
123
+ routingKey?: string;
124
+ };
106
125
  /**
107
126
  * Definition of an AMQP queue.
108
127
  *
@@ -130,6 +149,25 @@ type QueueDefinition = {
130
149
  * @default false
131
150
  */
132
151
  autoDelete?: boolean;
152
+ /**
153
+ * Dead letter configuration for handling failed or rejected messages.
154
+ *
155
+ * When configured, messages that are rejected, expire, or exceed queue limits
156
+ * will be automatically forwarded to the specified dead letter exchange.
157
+ *
158
+ * @example
159
+ * ```typescript
160
+ * const dlx = defineExchange('orders-dlx', 'topic', { durable: true });
161
+ * const queue = defineQueue('order-processing', {
162
+ * durable: true,
163
+ * deadLetter: {
164
+ * exchange: dlx,
165
+ * routingKey: 'order.failed'
166
+ * }
167
+ * });
168
+ * ```
169
+ */
170
+ deadLetter?: DeadLetterConfig;
133
171
  /**
134
172
  * Additional AMQP arguments for advanced configuration.
135
173
  *
@@ -138,15 +176,16 @@ type QueueDefinition = {
138
176
  * - `x-expires`: Queue expiration time in milliseconds
139
177
  * - `x-max-length`: Maximum number of messages in the queue
140
178
  * - `x-max-length-bytes`: Maximum size of the queue in bytes
141
- * - `x-dead-letter-exchange`: Exchange for dead-lettered messages
142
- * - `x-dead-letter-routing-key`: Routing key for dead-lettered messages
143
179
  * - `x-max-priority`: Maximum priority level for priority queues
144
180
  *
181
+ * Note: When using the `deadLetter` property, the `x-dead-letter-exchange` and
182
+ * `x-dead-letter-routing-key` arguments are automatically set and should not be
183
+ * specified in this arguments object.
184
+ *
145
185
  * @example
146
186
  * ```typescript
147
187
  * {
148
188
  * 'x-message-ttl': 86400000, // 24 hours
149
- * 'x-dead-letter-exchange': 'dlx',
150
189
  * 'x-max-priority': 10
151
190
  * }
152
191
  * ```
@@ -494,16 +533,27 @@ declare function defineExchange(name: string, type: "topic", options?: Omit<Base
494
533
  * @param options.durable - If true, the queue survives broker restarts (default: false)
495
534
  * @param options.exclusive - If true, the queue can only be used by the declaring connection (default: false)
496
535
  * @param options.autoDelete - If true, the queue is deleted when the last consumer unsubscribes (default: false)
497
- * @param options.arguments - Additional AMQP arguments (e.g., x-message-ttl, x-dead-letter-exchange)
536
+ * @param options.deadLetter - Dead letter configuration for handling failed messages
537
+ * @param options.arguments - Additional AMQP arguments (e.g., x-message-ttl, x-max-priority)
498
538
  * @returns A queue definition
499
539
  *
500
540
  * @example
501
541
  * ```typescript
502
- * const orderProcessingQueue = defineQueue('order-processing', {
542
+ * // Basic queue
543
+ * const orderQueue = defineQueue('order-processing', {
503
544
  * durable: true,
545
+ * });
546
+ *
547
+ * // Queue with dead letter exchange
548
+ * const dlx = defineExchange('orders-dlx', 'topic', { durable: true });
549
+ * const orderQueueWithDLX = defineQueue('order-processing', {
550
+ * durable: true,
551
+ * deadLetter: {
552
+ * exchange: dlx,
553
+ * routingKey: 'order.failed'
554
+ * },
504
555
  * arguments: {
505
556
  * 'x-message-ttl': 86400000, // 24 hours
506
- * 'x-dead-letter-exchange': 'orders-dlx'
507
557
  * }
508
558
  * });
509
559
  * ```
@@ -856,7 +906,7 @@ declare function defineConsumer<TMessage extends MessageDefinition>(queue: Queue
856
906
  */
857
907
  declare function defineContract<TContract extends ContractDefinition>(definition: TContract): TContract;
858
908
  /**
859
- * Publisher-first builder result.
909
+ * Publisher-first builder result for fanout and direct exchanges.
860
910
  *
861
911
  * This type represents a publisher and provides a method to create
862
912
  * a consumer that uses the same message schema with a binding to the exchange.
@@ -883,6 +933,108 @@ type PublisherFirstResult<TMessage extends MessageDefinition, TPublisher extends
883
933
  binding: QueueBindingDefinition;
884
934
  };
885
935
  };
936
+ /**
937
+ * Type-safe routing key that validates basic format.
938
+ *
939
+ * Validates that a routing key follows basic AMQP routing key rules:
940
+ * - Must not contain wildcards (* or #)
941
+ * - Must not be empty
942
+ * - Should contain alphanumeric characters, dots, hyphens, and underscores
943
+ *
944
+ * Note: Full character-by-character validation is not performed to avoid TypeScript
945
+ * recursion depth limits. Runtime validation is still recommended.
946
+ *
947
+ * @public
948
+ * @template S - The routing key string to validate
949
+ * @example
950
+ * ```typescript
951
+ * type Valid = RoutingKey<"order.created">; // "order.created"
952
+ * type Invalid = RoutingKey<"order.*">; // never (contains wildcard)
953
+ * type Invalid2 = RoutingKey<"">; // never (empty string)
954
+ * ```
955
+ */
956
+ type RoutingKey<S extends string> = S extends "" ? never : S extends `${string}*${string}` | `${string}#${string}` ? never : S;
957
+ /**
958
+ * Type-safe binding pattern that validates basic format and wildcards.
959
+ *
960
+ * Validates that a binding pattern follows basic AMQP binding pattern rules:
961
+ * - Can contain wildcards (* for one word, # for zero or more words)
962
+ * - Must not be empty
963
+ * - Should contain alphanumeric characters, dots, hyphens, underscores, and wildcards
964
+ *
965
+ * Note: Full character-by-character validation is not performed to avoid TypeScript
966
+ * recursion depth limits. Runtime validation is still recommended.
967
+ *
968
+ * @public
969
+ * @template S - The binding pattern string to validate
970
+ * @example
971
+ * ```typescript
972
+ * type ValidPattern = BindingPattern<"order.*">; // "order.*"
973
+ * type ValidHash = BindingPattern<"order.#">; // "order.#"
974
+ * type ValidConcrete = BindingPattern<"order.created">; // "order.created"
975
+ * type Invalid = BindingPattern<"">; // never (empty string)
976
+ * ```
977
+ */
978
+ type BindingPattern<S extends string> = S extends "" ? never : S;
979
+ /**
980
+ * Helper type for pattern matching with # in the middle
981
+ * Handles backtracking to match # with zero or more segments
982
+ * @internal
983
+ */
984
+ type MatchesAfterHash<Key extends string, PatternRest$1 extends string> = MatchesPattern<Key, PatternRest$1> extends true ? true : Key extends `${string}.${infer KeyRest}` ? MatchesAfterHash<KeyRest, PatternRest$1> : false;
985
+ /**
986
+ * Check if a routing key matches a binding pattern
987
+ * Implements AMQP topic exchange pattern matching:
988
+ * - * matches exactly one word
989
+ * - # matches zero or more words
990
+ * @internal
991
+ */
992
+ type MatchesPattern<Key extends string, Pattern extends string> = Pattern extends `${infer PatternPart}.${infer PatternRest}` ? PatternPart extends "#" ? MatchesAfterHash<Key, PatternRest> : Key extends `${infer KeyPart}.${infer KeyRest}` ? PatternPart extends "*" ? MatchesPattern<KeyRest, PatternRest> : PatternPart extends KeyPart ? MatchesPattern<KeyRest, PatternRest> : false : false : Pattern extends "#" ? true : Pattern extends "*" ? Key extends `${string}.${string}` ? false : true : Pattern extends Key ? true : false;
993
+ /**
994
+ * Validate that a routing key matches a binding pattern.
995
+ *
996
+ * This is a utility type provided for users who want compile-time validation
997
+ * that a routing key matches a specific pattern. It's not enforced internally
998
+ * in the API to avoid TypeScript recursion depth issues with complex routing keys.
999
+ *
1000
+ * Returns the routing key if it's valid and matches the pattern, `never` otherwise.
1001
+ *
1002
+ * @example
1003
+ * ```typescript
1004
+ * type ValidKey = MatchingRoutingKey<"order.*", "order.created">; // "order.created"
1005
+ * type InvalidKey = MatchingRoutingKey<"order.*", "user.created">; // never
1006
+ * ```
1007
+ *
1008
+ * @template Pattern - The binding pattern (can contain * and # wildcards)
1009
+ * @template Key - The routing key to validate
1010
+ */
1011
+ type MatchingRoutingKey<Pattern extends string, Key extends string> = RoutingKey<Key> extends never ? never : BindingPattern<Pattern> extends never ? never : MatchesPattern<Key, Pattern> extends true ? Key : never;
1012
+ /**
1013
+ * Publisher-first builder result for topic exchanges.
1014
+ *
1015
+ * This type represents a publisher with a concrete routing key and provides a method
1016
+ * to create consumers that can use routing key patterns matching the publisher's key.
1017
+ *
1018
+ * @template TMessage - The message definition
1019
+ * @template TPublisher - The publisher definition
1020
+ * @template TRoutingKey - The literal routing key type from the publisher (for documentation purposes)
1021
+ */
1022
+ type PublisherFirstResultWithRoutingKey<TMessage extends MessageDefinition, TPublisher extends PublisherDefinition<TMessage>, TRoutingKey extends string> = {
1023
+ /** The publisher definition */
1024
+ publisher: TPublisher;
1025
+ /**
1026
+ * Create a consumer that receives messages from this publisher.
1027
+ * For topic exchanges, the routing key pattern can be specified for the binding.
1028
+ *
1029
+ * @param queue - The queue that will consume the messages
1030
+ * @param routingKey - Optional routing key pattern for the binding (defaults to publisher's routing key)
1031
+ * @returns An object with the consumer definition and binding
1032
+ */
1033
+ createConsumer: <TConsumerRoutingKey extends string = TRoutingKey>(queue: QueueDefinition, routingKey?: BindingPattern<TConsumerRoutingKey>) => {
1034
+ consumer: ConsumerDefinition<TMessage>;
1035
+ binding: QueueBindingDefinition;
1036
+ };
1037
+ };
886
1038
  /**
887
1039
  * Define a publisher-first relationship for event-oriented messaging.
888
1040
  *
@@ -911,15 +1063,15 @@ type PublisherFirstResult<TMessage extends MessageDefinition, TPublisher extends
911
1063
  * );
912
1064
  *
913
1065
  * // Create publisher-first relationship (event pattern)
914
- * const logEvent = definePublisherFirst(logsExchange, logMessage);
1066
+ * const { publisher: publishLog, createConsumer: createLogConsumer } = definePublisherFirst(logsExchange, logMessage);
915
1067
  *
916
1068
  * // Multiple queues can consume the same event
917
1069
  * const logsQueue1 = defineQueue('logs-queue-1', { durable: true });
918
1070
  * const logsQueue2 = defineQueue('logs-queue-2', { durable: true });
919
1071
  *
920
1072
  * // Use in contract
921
- * const { consumer: consumer1, binding: binding1 } = logEvent.createConsumer(logsQueue1);
922
- * const { consumer: consumer2, binding: binding2 } = logEvent.createConsumer(logsQueue2);
1073
+ * const { consumer: consumer1, binding: binding1 } = createLogConsumer(logsQueue1);
1074
+ * const { consumer: consumer2, binding: binding2 } = createLogConsumer(logsQueue2);
923
1075
  *
924
1076
  * const contract = defineContract({
925
1077
  * exchanges: { logs: logsExchange },
@@ -928,7 +1080,7 @@ type PublisherFirstResult<TMessage extends MessageDefinition, TPublisher extends
928
1080
  * logBinding1: binding1,
929
1081
  * logBinding2: binding2,
930
1082
  * },
931
- * publishers: { publishLog: logEvent.publisher },
1083
+ * publishers: { publishLog },
932
1084
  * consumers: {
933
1085
  * consumeLog1: consumer1,
934
1086
  * consumeLog2: consumer2,
@@ -942,7 +1094,7 @@ declare function definePublisherFirst<TMessage extends MessageDefinition>(exchan
942
1094
  exchange: FanoutExchangeDefinition;
943
1095
  }>>;
944
1096
  /**
945
- * Define a publisher-first relationship for event-oriented messaging.
1097
+ * Define a publisher-first relationship for event-oriented messaging with direct exchange.
946
1098
  *
947
1099
  * This builder enforces consistency by:
948
1100
  * 1. Ensuring the publisher and consumer use the same message schema
@@ -951,7 +1103,7 @@ declare function definePublisherFirst<TMessage extends MessageDefinition>(exchan
951
1103
  * Use this pattern for events where publishers don't need to know about queues.
952
1104
  * Multiple consumers can be created for different queues, all using the same message schema.
953
1105
  *
954
- * @param exchange - The exchange to publish to (direct or topic type)
1106
+ * @param exchange - The exchange to publish to (direct type)
955
1107
  * @param message - The message definition (schema and metadata)
956
1108
  * @param options - Binding configuration (routingKey is required)
957
1109
  * @param options.routingKey - The routing key for message routing
@@ -961,6 +1113,61 @@ declare function definePublisherFirst<TMessage extends MessageDefinition>(exchan
961
1113
  * ```typescript
962
1114
  * import { z } from 'zod';
963
1115
  *
1116
+ * const tasksExchange = defineExchange('tasks', 'direct', { durable: true });
1117
+ * const taskMessage = defineMessage(
1118
+ * z.object({
1119
+ * taskId: z.string(),
1120
+ * payload: z.record(z.unknown()),
1121
+ * })
1122
+ * );
1123
+ *
1124
+ * // Create publisher-first relationship with routing key
1125
+ * const { publisher: executeTaskPublisher, createConsumer: createTaskConsumer } = definePublisherFirst(
1126
+ * tasksExchange,
1127
+ * taskMessage,
1128
+ * { routingKey: 'task.execute' }
1129
+ * );
1130
+ *
1131
+ * // Use in contract - routing key is consistent across publisher and bindings
1132
+ * const taskQueue = defineQueue('task-queue', { durable: true });
1133
+ * const { consumer, binding } = createTaskConsumer(taskQueue);
1134
+ *
1135
+ * const contract = defineContract({
1136
+ * exchanges: { tasks: tasksExchange },
1137
+ * queues: { taskQueue },
1138
+ * bindings: { taskBinding: binding },
1139
+ * publishers: { executeTask: executeTaskPublisher },
1140
+ * consumers: { processTask: consumer },
1141
+ * });
1142
+ * ```
1143
+ */
1144
+ declare function definePublisherFirst<TMessage extends MessageDefinition, TRoutingKey extends string>(exchange: DirectExchangeDefinition, message: TMessage, options: {
1145
+ routingKey: RoutingKey<TRoutingKey>;
1146
+ arguments?: Record<string, unknown>;
1147
+ }): PublisherFirstResult<TMessage, Extract<PublisherDefinition<TMessage>, {
1148
+ exchange: DirectExchangeDefinition | TopicExchangeDefinition;
1149
+ }>>;
1150
+ /**
1151
+ * Define a publisher-first relationship for event-oriented messaging with topic exchange.
1152
+ *
1153
+ * This builder enforces consistency by:
1154
+ * 1. Ensuring the publisher and consumer use the same message schema
1155
+ * 2. The publisher uses a concrete routing key (e.g., 'order.created')
1156
+ * 3. Consumers can optionally specify routing key patterns (e.g., 'order.*') or use the default
1157
+ *
1158
+ * Use this pattern for events where publishers emit with specific routing keys,
1159
+ * and consumers can subscribe with patterns. This is less common than the consumer-first pattern.
1160
+ *
1161
+ * @param exchange - The exchange to publish to (topic type)
1162
+ * @param message - The message definition (schema and metadata)
1163
+ * @param options - Binding configuration (routingKey is required)
1164
+ * @param options.routingKey - The concrete routing key for the publisher
1165
+ * @returns A publisher-first result with publisher and consumer factory that accepts optional routing key patterns
1166
+ *
1167
+ * @example
1168
+ * ```typescript
1169
+ * import { z } from 'zod';
1170
+ *
964
1171
  * const ordersExchange = defineExchange('orders', 'topic', { durable: true });
965
1172
  * const orderMessage = defineMessage(
966
1173
  * z.object({
@@ -969,43 +1176,46 @@ declare function definePublisherFirst<TMessage extends MessageDefinition>(exchan
969
1176
  * })
970
1177
  * );
971
1178
  *
972
- * // Create publisher-first relationship with routing key (event pattern)
973
- * const orderCreatedEvent = definePublisherFirst(
1179
+ * // Create publisher-first relationship with concrete routing key
1180
+ * const { publisher: orderCreatedPublisher, createConsumer: createOrderCreatedConsumer } = definePublisherFirst(
974
1181
  * ordersExchange,
975
1182
  * orderMessage,
976
- * { routingKey: 'order.created' }
1183
+ * { routingKey: 'order.created' } // Concrete key
977
1184
  * );
978
1185
  *
979
- * // Multiple queues can consume the same event
1186
+ * // Consumers can use patterns or specific keys
980
1187
  * const orderQueue = defineQueue('order-processing', { durable: true });
981
- * const analyticsQueue = defineQueue('analytics', { durable: true });
1188
+ * const allOrdersQueue = defineQueue('all-orders', { durable: true });
982
1189
  *
983
- * // Use in contract - routing key is consistent across publisher and bindings
984
- * const { consumer: processConsumer, binding: processBinding } = orderCreatedEvent.createConsumer(orderQueue);
985
- * const { consumer: analyticsConsumer, binding: analyticsBinding } = orderCreatedEvent.createConsumer(analyticsQueue);
1190
+ * // Use in contract
1191
+ * const { consumer: processConsumer, binding: processBinding } =
1192
+ * createOrderCreatedConsumer(orderQueue); // Uses 'order.created'
1193
+ * const { consumer: allOrdersConsumer, binding: allOrdersBinding } =
1194
+ * createOrderCreatedConsumer(allOrdersQueue, 'order.*'); // Uses pattern
986
1195
  *
987
1196
  * const contract = defineContract({
988
1197
  * exchanges: { orders: ordersExchange },
989
- * queues: { orderQueue, analyticsQueue },
1198
+ * queues: { orderQueue, allOrdersQueue },
990
1199
  * bindings: {
991
1200
  * orderBinding: processBinding,
992
- * analyticsBinding,
1201
+ * allOrdersBinding,
993
1202
  * },
994
- * publishers: { orderCreated: orderCreatedEvent.publisher },
1203
+ * publishers: { orderCreated: orderCreatedPublisher },
995
1204
  * consumers: {
996
1205
  * processOrder: processConsumer,
997
- * trackOrder: analyticsConsumer,
1206
+ * trackAllOrders: allOrdersConsumer,
998
1207
  * },
999
1208
  * });
1000
1209
  * ```
1001
1210
  */
1002
- declare function definePublisherFirst<TMessage extends MessageDefinition>(exchange: DirectExchangeDefinition | TopicExchangeDefinition, message: TMessage, options: Omit<Extract<QueueBindingDefinition, {
1003
- exchange: DirectExchangeDefinition | TopicExchangeDefinition;
1004
- }>, "type" | "queue" | "exchange">): PublisherFirstResult<TMessage, Extract<PublisherDefinition<TMessage>, {
1211
+ declare function definePublisherFirst<TMessage extends MessageDefinition, TRoutingKey extends string>(exchange: TopicExchangeDefinition, message: TMessage, options: {
1212
+ routingKey: RoutingKey<TRoutingKey>;
1213
+ arguments?: Record<string, unknown>;
1214
+ }): PublisherFirstResultWithRoutingKey<TMessage, Extract<PublisherDefinition<TMessage>, {
1005
1215
  exchange: DirectExchangeDefinition | TopicExchangeDefinition;
1006
- }>>;
1216
+ }>, TRoutingKey>;
1007
1217
  /**
1008
- * Consumer-first builder result.
1218
+ * Consumer-first builder result for fanout and direct exchanges.
1009
1219
  *
1010
1220
  * This type represents a consumer with its binding and provides a method to create
1011
1221
  * a publisher that uses the same message schema and routing key.
@@ -1025,7 +1235,37 @@ type ConsumerFirstResult<TMessage extends MessageDefinition, TConsumer extends C
1025
1235
  *
1026
1236
  * @returns A publisher definition with the same message type and routing key
1027
1237
  */
1028
- createPublisher: () => PublisherDefinition<TMessage>;
1238
+ createPublisher: () => TBinding["exchange"] extends FanoutExchangeDefinition ? Extract<PublisherDefinition<TMessage>, {
1239
+ exchange: FanoutExchangeDefinition;
1240
+ }> : Extract<PublisherDefinition<TMessage>, {
1241
+ exchange: DirectExchangeDefinition | TopicExchangeDefinition;
1242
+ }>;
1243
+ };
1244
+ /**
1245
+ * Consumer-first builder result for topic exchanges.
1246
+ *
1247
+ * This type represents a consumer with its binding (which may use a pattern) and provides
1248
+ * a method to create a publisher with a concrete routing key that matches the pattern.
1249
+ *
1250
+ * @template TMessage - The message definition
1251
+ * @template TConsumer - The consumer definition
1252
+ * @template TBinding - The queue binding definition
1253
+ */
1254
+ type ConsumerFirstResultWithRoutingKey<TMessage extends MessageDefinition, TConsumer extends ConsumerDefinition<TMessage>, TBinding extends QueueBindingDefinition> = {
1255
+ /** The consumer definition */
1256
+ consumer: TConsumer;
1257
+ /** The binding definition connecting the exchange to the queue */
1258
+ binding: TBinding;
1259
+ /**
1260
+ * Create a publisher that sends messages to this consumer.
1261
+ * For topic exchanges, the routing key can be specified to match the binding pattern.
1262
+ *
1263
+ * @param routingKey - The concrete routing key that matches the binding pattern
1264
+ * @returns A publisher definition with the specified routing key
1265
+ */
1266
+ createPublisher: <TPublisherRoutingKey extends string>(routingKey: RoutingKey<TPublisherRoutingKey>) => Extract<PublisherDefinition<TMessage>, {
1267
+ exchange: DirectExchangeDefinition | TopicExchangeDefinition;
1268
+ }>;
1029
1269
  };
1030
1270
  /**
1031
1271
  * Define a consumer-first relationship between a consumer and publisher.
@@ -1058,7 +1298,7 @@ type ConsumerFirstResult<TMessage extends MessageDefinition, TConsumer extends C
1058
1298
  * );
1059
1299
  *
1060
1300
  * // Create consumer-first relationship
1061
- * const notificationConsumerFirst = defineConsumerFirst(
1301
+ * const { consumer: processNotificationConsumer, binding: notificationBinding, createPublisher: createNotificationPublisher } = defineConsumerFirst(
1062
1302
  * notificationsQueue,
1063
1303
  * notificationsExchange,
1064
1304
  * notificationMessage
@@ -1068,9 +1308,9 @@ type ConsumerFirstResult<TMessage extends MessageDefinition, TConsumer extends C
1068
1308
  * const contract = defineContract({
1069
1309
  * exchanges: { notifications: notificationsExchange },
1070
1310
  * queues: { notificationsQueue },
1071
- * bindings: { notificationBinding: notificationConsumerFirst.binding },
1072
- * publishers: { sendNotification: notificationConsumerFirst.createPublisher() },
1073
- * consumers: { processNotification: notificationConsumerFirst.consumer },
1311
+ * bindings: { notificationBinding },
1312
+ * publishers: { sendNotification: createNotificationPublisher() },
1313
+ * consumers: { processNotification: processNotificationConsumer },
1074
1314
  * });
1075
1315
  * ```
1076
1316
  */
@@ -1091,7 +1331,7 @@ declare function defineConsumerFirst<TMessage extends MessageDefinition>(queue:
1091
1331
  * send messages with the correct type and routing key.
1092
1332
  *
1093
1333
  * @param queue - The queue to consume from
1094
- * @param exchange - The exchange that routes to the queue (direct or topic type)
1334
+ * @param exchange - The exchange that routes to the queue (direct type)
1095
1335
  * @param message - The message definition (schema and metadata)
1096
1336
  * @param options - Binding configuration (routingKey is required)
1097
1337
  * @param options.routingKey - The routing key for message routing
@@ -1111,7 +1351,7 @@ declare function defineConsumerFirst<TMessage extends MessageDefinition>(queue:
1111
1351
  * );
1112
1352
  *
1113
1353
  * // Create consumer-first relationship with routing key
1114
- * const taskConsumerFirst = defineConsumerFirst(
1354
+ * const { consumer: processTaskConsumer, binding: taskBinding, createPublisher: createTaskPublisher } = defineConsumerFirst(
1115
1355
  * taskQueue,
1116
1356
  * tasksExchange,
1117
1357
  * taskMessage,
@@ -1122,17 +1362,76 @@ declare function defineConsumerFirst<TMessage extends MessageDefinition>(queue:
1122
1362
  * const contract = defineContract({
1123
1363
  * exchanges: { tasks: tasksExchange },
1124
1364
  * queues: { taskQueue },
1125
- * bindings: { taskBinding: taskConsumerFirst.binding },
1126
- * publishers: { executeTask: taskConsumerFirst.createPublisher() },
1127
- * consumers: { processTask: taskConsumerFirst.consumer },
1365
+ * bindings: { taskBinding },
1366
+ * publishers: { executeTask: createTaskPublisher() },
1367
+ * consumers: { processTask: processTaskConsumer },
1128
1368
  * });
1129
1369
  * ```
1130
1370
  */
1131
- declare function defineConsumerFirst<TMessage extends MessageDefinition>(queue: QueueDefinition, exchange: DirectExchangeDefinition | TopicExchangeDefinition, message: TMessage, options: Omit<Extract<QueueBindingDefinition, {
1132
- exchange: DirectExchangeDefinition | TopicExchangeDefinition;
1133
- }>, "type" | "queue" | "exchange">): ConsumerFirstResult<TMessage, ConsumerDefinition<TMessage>, Extract<QueueBindingDefinition, {
1134
- exchange: DirectExchangeDefinition | TopicExchangeDefinition;
1371
+ declare function defineConsumerFirst<TMessage extends MessageDefinition, TRoutingKey extends string>(queue: QueueDefinition, exchange: DirectExchangeDefinition, message: TMessage, options: {
1372
+ routingKey: RoutingKey<TRoutingKey>;
1373
+ arguments?: Record<string, unknown>;
1374
+ }): ConsumerFirstResult<TMessage, ConsumerDefinition<TMessage>, Extract<QueueBindingDefinition, {
1375
+ exchange: DirectExchangeDefinition;
1376
+ }>>;
1377
+ /**
1378
+ * Define a consumer-first relationship between a consumer and publisher with topic exchange.
1379
+ *
1380
+ * This builder enforces consistency by:
1381
+ * 1. Ensuring the consumer and publisher use the same message schema
1382
+ * 2. The binding uses a routing key pattern (e.g., 'order.*')
1383
+ * 3. The publisher factory accepts a concrete routing key that matches the pattern (e.g., 'order.created')
1384
+ *
1385
+ * Use this when you want to start with a consumer that uses a routing key pattern,
1386
+ * and allow publishers to specify concrete routing keys that match that pattern.
1387
+ *
1388
+ * @param queue - The queue to consume from
1389
+ * @param exchange - The exchange that routes to the queue (topic type)
1390
+ * @param message - The message definition (schema and metadata)
1391
+ * @param options - Binding configuration (routingKey is required)
1392
+ * @param options.routingKey - The routing key pattern for the binding (can use wildcards)
1393
+ * @returns A consumer-first result with consumer, binding, and publisher factory that accepts a routing key
1394
+ *
1395
+ * @example
1396
+ * ```typescript
1397
+ * import { z } from 'zod';
1398
+ *
1399
+ * const orderQueue = defineQueue('order-processing', { durable: true });
1400
+ * const ordersExchange = defineExchange('orders', 'topic', { durable: true });
1401
+ * const orderMessage = defineMessage(
1402
+ * z.object({
1403
+ * orderId: z.string(),
1404
+ * amount: z.number(),
1405
+ * })
1406
+ * );
1407
+ *
1408
+ * // Create consumer-first relationship with pattern
1409
+ * const { consumer: processOrderConsumer, binding: orderBinding, createPublisher: createOrderPublisher } = defineConsumerFirst(
1410
+ * orderQueue,
1411
+ * ordersExchange,
1412
+ * orderMessage,
1413
+ * { routingKey: 'order.*' } // Pattern in binding
1414
+ * );
1415
+ *
1416
+ * // Use in contract - publisher can specify concrete routing key
1417
+ * const contract = defineContract({
1418
+ * exchanges: { orders: ordersExchange },
1419
+ * queues: { orderQueue },
1420
+ * bindings: { orderBinding },
1421
+ * publishers: {
1422
+ * orderCreated: createOrderPublisher('order.created'), // Concrete key
1423
+ * orderUpdated: createOrderPublisher('order.updated'), // Concrete key
1424
+ * },
1425
+ * consumers: { processOrder: processOrderConsumer },
1426
+ * });
1427
+ * ```
1428
+ */
1429
+ declare function defineConsumerFirst<TMessage extends MessageDefinition, TRoutingKey extends string>(queue: QueueDefinition, exchange: TopicExchangeDefinition, message: TMessage, options: {
1430
+ routingKey: BindingPattern<TRoutingKey>;
1431
+ arguments?: Record<string, unknown>;
1432
+ }): ConsumerFirstResultWithRoutingKey<TMessage, ConsumerDefinition<TMessage>, Extract<QueueBindingDefinition, {
1433
+ exchange: TopicExchangeDefinition;
1135
1434
  }>>;
1136
1435
  //#endregion
1137
- export { type AnySchema, type BaseExchangeDefinition, type BindingDefinition, type ConsumerDefinition, type ConsumerFirstResult, type ContractDefinition, type DirectExchangeDefinition, type ExchangeBindingDefinition, type ExchangeDefinition, type FanoutExchangeDefinition, type InferConsumerNames, type InferPublisherNames, type MessageDefinition, type PublisherDefinition, type PublisherFirstResult, type QueueBindingDefinition, type QueueDefinition, type TopicExchangeDefinition, defineConsumer, defineConsumerFirst, defineContract, defineExchange, defineExchangeBinding, defineMessage, definePublisher, definePublisherFirst, defineQueue, defineQueueBinding };
1436
+ export { type AnySchema, type BaseExchangeDefinition, type BindingDefinition, type BindingPattern, type ConsumerDefinition, type ConsumerFirstResult, type ConsumerFirstResultWithRoutingKey, type ContractDefinition, type DeadLetterConfig, type DirectExchangeDefinition, type ExchangeBindingDefinition, type ExchangeDefinition, type FanoutExchangeDefinition, type InferConsumerNames, type InferPublisherNames, type MatchingRoutingKey, type MessageDefinition, type PublisherDefinition, type PublisherFirstResult, type PublisherFirstResultWithRoutingKey, type QueueBindingDefinition, type QueueDefinition, type RoutingKey, type TopicExchangeDefinition, defineConsumer, defineConsumerFirst, defineContract, defineExchange, defineExchangeBinding, defineMessage, definePublisher, definePublisherFirst, defineQueue, defineQueueBinding };
1138
1437
  //# sourceMappingURL=index.d.mts.map